본문 바로가기

기술들/Codestates

코드스테이츠 First 프로젝트를 마치며..

[ Intro ]

 벌써... 첫 번째 프로젝트 발표가 끝이 났다.  내 인생에 있어 이렇게 다양한 감정이 오갔던 적도 정말 오랜만인것 같다.  🤗

올챙이 개발자로서 첫 번째 프로젝트를 경험했던 것과 느꼈던 점을 정리해보려고 한다. 항상 글을 쓰기에 앞서 기대되는 점이 미래의 내가 이 글을 보고 무슨 생각을 할 것인지가 너무 기대된다.. ㅂㅌ?? 농담이고 이렇게 느꼈던 것을 정리하는 것이 곧 마주하는 Final프로젝트에 분명 여러모로 도움이 될 수 있는 나만의 자산이 되길 바라며.. 👊🏻👊🏻 

 

[ SR ]

 이번 프로젝트에서 팀원으로써 Back-end포지션을 맡았다. 나는 줄곧 백엔드 부분을 계속 경험해보고 싶었는데, 팀원들과 처음 만나고 포지션을 정하는 자리에서 '백엔드를 하고 싶다는 사람이 많으면 어떡하지?'라고 조금 걱정을 했었다.  🤨  그렇지만 팀원 두 분이 Front-end를 강력히 원하셔서 손쉽게(?) Back-end포지션을 맡을 수 있었다. 왜 이 포지션을 맡고 싶어냐하면 바로 직전에 배운것들이 Backend와 밀접하게 관련된 부분이었고 배운것을 바로 복습을 해보고 싶은 마음이었다.

 아이디어 선정시간에 나는 자전거 게시판 아이디어를 공유했는데, 간단하게 CRUD도 복습해볼 수 있고 평소 자전거 타는 것을 좋아해서 자전거를 타는 사람들끼리의 커뮤니티를 만들어 보고 싶아서 제안했던 아이디어였다. 그리고 다른 팀원분들은 심리테스트, 프런트 개발자를 도울 수 있는 색깔 tool 등의 아이디어를 공유해주셨는데 난 이때 내 아이디어가 선택되지 않아도 혼자 만들어보고 싶던 거여서 괜찮은 마음이었다. 그렇지만 다른 팀원분들은 각자 합리적인 설명을 해주시면서 본인의 아이디어를 적극 어필하셨다. 그 자신감 있는 모습에서 동기부여를 얻기도 했는데 지금 와서 생각해보니 두 분 다 정말 잘하시는 분들이었고 본인의 실력을 믿고 프로젝트를 이끌어 갈 수 있다는 것을 보여준 것이었다.  결국은 3가지 모두 선택되지 않고, 팀장님이 절충해주셔서 게시판 형태의 사이트를 복습도 할 겸, 클론 코딩하는 식으로 '오늘의 집'이란 사이트를 레퍼런스로 해서 '내일의 집' 프로젝트를 진행하기로 결정했다. 

 

 SR(Software Requirement)단계에서 기존 '오늘의 집'사이트의 여러 요소들의 배치를 참고해서 와이어프레임을 설계했고, DB 스키마를 설계했다. 글은 이렇게 간단하지만, 나에겐 정말 쉽지 않았다. 거침없이 아이디어를 내시는 분들 사이에서, 나는 그것을 따라가며 이해하기 바빴고, 이렇다 할 아이디어를 제시하지 못했다. 나도 아이디어를 적극적으로 내고 싶긴 한데 '좋은 아이디어가 아닐 것 같다'라는 걱정이 앞섰다. 여기서 약간의 자신감을 잃었었다. 그렇지만 '이렇게 멘탈적으로 압박감을 느끼는 것도 전부 경험이고 지금 내 실력이다'라고 스스로 계속 되뇌면서 '지금 아이디어를 적극적으로 제시하지 못한다면 일단 배운다는 마음으로 임하자'는 마음으로 프로젝트에 임하기로 했다. 

 

[ it's coding time ]

 Back-end 포지션으로 내가 했던 역할은 크게 DB 설계와 여러 API 처리들이었다. 그 중 가장 시행착오를 많이 했던 부분이 Database 관리였다. DB는 Mysql, ORM은 sequelize를 사용했고 tool은 workbench를 사용했는데, 초기 DB설계 시 테이블  간의 association을 설정하는데 애를 먹었다. 스프린트 때 advanced로 했던 association을 했던 방법 그대로 시도했는데 테스트 쿼리를 날려도 테이블 join이 되지 않았다. 알고 보니 스프린트 때 시도했던 association 설정 방법을 옳지 않게 해 놓고 됐던 것으로 착각했던 것이었다. 그래서 다시 공식문서와 씨름한 끝에 올바르게 설정을 할 수 있었다. 이때, 자기가 배운 것은 확실히 테스트를 하고 넘어가야 함을 다시 한번 느끼게 되었다.

 또한 프로젝트 중반쯤에 SR단계에서 설계했던 DB 테이블 컬럼의 옵션을 잘못 설정했던 것이 드러났다. DB를 초기화하지 않고도 수정할 수 있는 방법이 분명 있었지만, 당시에는 그러려면 전체적으로 테스트를 다시 해야 하는 번거로움이 더 크게 느껴졌기에, 깔끔하게 다시 DB를 생성하기로 결정했다. DB를 관리함에 있어 같은 포지션의 팀원분이 경험이 있으셔서 도움을 많이 얻었는데, 본인 일을 하는 것도 바쁘실 텐데 도움을 요청하면 정말 친절하게 잘 알려주셨다. 이분을 보고 느꼈던 점은 실력이 있으면 어떤 태도로 협업을 해야 하는지를 배울 수 있었다. 겸손하고 친절하게..!  🙏 🙏

 프로젝트 막바지인 배포 단계에서 EC2를 생성해서 클라이언트단과 api 테스트를 했는데, 생각지도 못한 곳에서 에러가 터졌다. 로컬에서 전송이 되던 쿠키가 서로 다른 도메인 환경이 되다 보니까 전송이 되지 않았다. 이 쿠키는 인증수단이 들어있는 중요한 역할을 했고 반드시 해결해야 하는 문제였다. 이 문제를 해결해보려고 팀장님과 밤을 새 가면서, 정말 여러 시도를 해보았지만 해결되지 않았고 결국 쿠키 대신 헤더를 사용해서 인증수단을 공유하는 방법으로 결정했다. 다시 인증하는 코드 부분을 전체적으로 수정하고 테스트하는 과정을 거쳤다. 이때 정말 여러모로 힘들었는데, 정말 책임감 있게 같이 문제를 트러블 슈팅해주신 팀장님께 정말 감사하다. 거의 팀장님이 다 하셨다. 감사해요!  🤟 🤟

 

[ What I felt? ]

 이 이외에 여러 시행착오를 겪은 부분이 정말 많다. First 프로젝트에 들어가기 전 했던 '스프린트때 배웠던 내용을 잘 짬뽕하면 수월하겠지'라는 오만한 생각을 했던 내 자신이 부끄럽다. 그렇지만 그만큼 코딩적으로든 멘탈적으로든 배운 것도 정말 많았다. 그리고 느꼈던 점이 백엔드 포지션이 정말 매력적인 역할임을 알 수 있었다. 당장 눈앞에 UI적으로 나오는 것은 없지만, 효율적인 알고리즘으로 기능을 구현했을 때의 그 짜릿함?이 정말 좋았다. Final때도 백엔드로.... 🤝 🤝

2주.. 짧을 것이라고 생각 했는데 정말 짧았다. 짧은 시간이었지만 협업을 해보면서 어떻게 해야 좋은 팀원이 될 수 있고 또한 좋은 팀장이 될 수 있는지 감을 잡을 수 있는 시간이었다. 그렇지만 나에겐 조금 더 많은 경험이 필요하다. 

💪🏻 Give me the Experience!! 💪🏻 

 

 

깃헙레포