[엘리스 SW트랙 4기] 8주차 - 1차 프로젝트 (1) 느낀 점 위주

랸나·2023년 4월 23일
0

🍃 엘리스 1차 팀프로젝트 (1)

  • 말하는 감자가 어느새 트랙에 참여한지 8주차에 접어들었고, 대망의 1차 프로젝트를 시작했다. 7주차까지도 아니 이런 내 실력으로 프로젝트를 어떻게 하고 뭘 만든다는거지..? 싶었는데 진짜 닥치니까 그냥 뭐라도 만들고 있는게 신기하다. 물론 전혀 순탄치는 않았다ㅎㅎ.. 극심한 편두통을 얻고.. 교훈을 얻었다..

조 편성 및 역할 분담

💻 포지션 선정

엘리스에서 사전 선호 포지션을 조사했고 (백엔드/프론트엔드/무관) 나는 백엔드로 지원했다.

1차가 2차보다 더 쉬우니 백엔드 포지션을 경험해보는 것이 좋다는 매니저님 말씀도 있었고 내가 자주 조언을 구하는 친구에게도 물어봤는데 처음에 백엔드 해보는것도 좋을것 같다고 해서 지원했다.

그리고 사실 아직까지도 내가 프론트엔드가 적성인지 백엔드가 적성인지 잘 모르겠어서 백엔드로 지원했다.
백엔드는 작업은 화면에 보이는 것이 아니니, 어떤 것을 하는지 사실 그 전까지 감조차 잡지 못했었고 마냥 어려울 것 같다고 생각해왔다.

이번 프로젝트를 해보면 어떤 일을 해야하는지 대충이나마 알 수 있지 않을까 싶었다.

짧게 결론만 말하면, 웹 백엔드.. 이런 일 하는구나 정도는 알았고 생각보다 내가 백엔드 업무를 좋아할지도 모르겠다는 생각이 들었다.

💻 팀 선정

팀은 엘리스 측에서 만들어서 통보해주었다. 나중에 들어보니 프로젝트 경험, 비전공자와 전공자, 엘리스 트랙 이수율, 점수 등을 종합해서 밸런스를 조정하시는 것 같았다. 5명인 팀도 있었고 8명인 팀도 있었다. 나는 6명인 팀으로 배정받았다.

팀원분들께서는 프로젝트 경험이 있으신 분도 계셨고, 나처럼 없으신 분들도 계셨다. 대부분 순혈 컴공 or 소프트웨어 전공은 아니셨고 융합전공, 복수전공 혹은 아예 관련 없으신 비전공자분들이었다.

엘리스엔 확실히 비전공자 분들이 많이 계신 것 같은 느낌!

포지션은 프론트엔드4 / 백엔드2 이렇게 지원을 하셨었는데, 1분께서 쿨하게 백엔드로 넘어와주셨다. 너무 감사한것!
3명씩 조화롭게 나누게 되었다.

아무튼 난 프로젝트 경험도 없고 실력도 많이 모자라서 민폐가 되지 않을까 걱정을 엄청 하면서 이전 기수분들의 후기나 깃랩 저장소에 있는 파일들을 미친듯이 봤다.

💻 첫 팀 회의

프로젝트를 월요일에 본격 시작하기 전에 그 전주 금요일쯤 간단하게 미팅을 했고 미리 살짝 이야기 나눠볼 부분들에 대해서 이야기했다.

사실 '쇼핑몰'로 주제가 이미 정해져있었고 구현해야하는 상세 기능들도 대부분 정해져 있었다.

아무래도 처음 프로젝트를 해보는 분들도 많고 백엔드 3명은 백엔드 자체가 전부 처음인 사람들이라, 기능 구현은 최대한 간단하게 욕심 부리지 않는 선에서 하자고 이야기가 나왔다.

우리 팀은 주제에 대해서 힘을 크게 쏟지 말자고 했고, 그냥 각자의 취미가 뭔지 스몰톡을 하면서 주제를 정했다.
(☘️ 내가 식물을 좋아한다고 했는데 어찌어찌 식물 쇼핑몰이 되었다 ㅎㅎ)

각자 월요일에는 화면 흐름도와 함께 어떤 방식으로 기획할 지 레퍼런스를 찾고, 레퍼런스에서 어디를 구현하고 어디는 생략할지 등의 생각을 해오자고 했다.

그리고 팀장을 정하고 규칙을 정했다. (사다리타기로 팀장이 될뻔한 위기에 처했으나, 천사같은 팀원분께서 대신 팀장을 맡겠다고 해주셨다)

그래도 경험이 있거나 조금이라도 도전할 자신이 있었다면 팀장이 되어도 열심히 했을 것 같은데, 내가 뭘 해야하는지도 모르겠는 상황이었기에 팀장에 대해 정말 자신이 없었다 ㅎㅎ.. 정말 감사했다!

기획

💻 첫 스크럼, 프로젝트 시작!

본격적으로 프로젝트를 시작하는 월요일, 아침 10시에 모여서 스크럼을 했다. 엘리스에서 제공해준 기본적으로 구현해야하는 부분들중에서 어떤 부분들을 하고, 어떤 부분을 쳐낼지 이야기 나눴다.

물론 다 구현하는게 좋지만 우선 첫주차에는 욕심부리지 않는 것이 좋으니 어려워보이면 미련없이 쳐냈다.

사실 기능 명세가 다 되어있다고는 하지만, 어쨌든 뭔갈 만들어내는건 별개의 일이었다.

예를 들어서 어떤 화면의 어떤 위치에서 로그인 버튼을 만들건지, 회원가입은 어떤 방식으로 할건지, 로그인 한 이후에는 jwt 방식을 채택할건지 passport로 session에 저장할것인지 ..

그리고 주문을 할때도 재고는 어떻게 추가되고 빠지는지, 관리자가 상품을 추가하려면 어떤 화면에서 추가하고 삭제해야하는지.. 제품 상세에서는 어떤 것들을 보여줄것인지 ..

주문과 상품 정보는 어떻게 join해야하는지.. 눈에 보이지 않던 단계들이 갑자기 와르르 닥쳐와서 뭐부터 손대야 할 지 모르겠는 상황이 왔다.

화면 흐름도를 도형으로 만들어는 봤는데 그래서 이걸 어떻게 만들어내야할지는 감이 안왔다.

기획은 팀장님께서 세세하게 임시 이미지를 만들어서 보여주시고 꼼꼼하게 작성해주셔서 겨우겨우 따라갔던 것 같다.

기획이 정말 어려운 것이구나.. 싶었다.

이전에 일을 하면서도 느꼈지만 기획자의 포지션이 결코 만만한게 아니라는 생각이 들었다. 사람들과 커뮤니케이션하고 정리하고 관리하는것은 정말... 어렵다는 것을 이전 직장에서 뼈저리게 느꼈으니까!

기획은 누구나 할 수 있지만, '잘'하는것은 매우 어렵다.

🦊 Git Lab

그리고 첫날에는 스크럼이 끝나고 오후에 엘리스에서 깃랩 특강을 제공해줬고, 강사님께서 엄청 자세하고 쉽게 깃랩 사용법에 대해서 하나부터 알려주셨다. 정말정말 큰 도움이 되었다. 아쉬운 점이 있다면 아무래도 온라인이다보니 현장에서 레이서들의 오류를 빠르게 해결하지는 못했다. 이사람도 에러가 나고 저사람도 에러가 나는 것을 케어해주시다보니 생각보다 시간이 많이 지체되었고, 기대했던 충돌 해결 등의 기능은 자료로만 제공이 되었다. 강사님께서 정말 쉽게 알려주셔서 어려운 충돌부분도 강의를 듣고싶었는데 아주 기본적인 add, commit, push, merge까지만 배우게 되어서 아쉬웠다.

그래도 깃랩에서 마일스톤, 라벨, 이슈 등의 카테고리를 활용하는 방법을 배울 수 있어서 무척 좋았다.

깃랩은 프로젝트 단위로 협업할 때 정말 좋은 플랫폼 같다.

깃허브를 제대로 써보기도 전에 깃랩을 접했는데, 깃허브는 또 어떤 방식으로 협업할 수 있는지 궁금해졌다.

엘리스가 끝나면 깃허브를 좀 더 활용해볼 수 있도록 해야겠다. (브랜치도 만들고... 라벨링도 하고!)

🤓 API 명세서..? ( 그거 엏덕개 하는건대)

그리고 백엔드 팀원들끼리 회의를 가졌다. 세명 다 뭘..해야할지 몰랐다. 팀원분께서 우선 API 명세부터 작성해야한다고 말씀주셔서 이전 기수에서 만든 명세서를 일단 가져와서 기본 포맷을 활용해보기로 했다. 그런데.. 그래서 이걸 뭐 어떻게 해야하는건지는 몰랐다. 일단 어디서 들은 것은 있어서 포스트맨으로 이 명세를 옮겨보자! 라고 하면서 막 옮겼다. (당연히 이렇게 하면 안된다)ㅎㅎ

당연히 다른 팀의 명세서를 가져와서 포스트맨으로 옮겨놓는 것은 전혀 의미가 없는 행동이었다. 그래서 오피스 아워 전까지 수업때 배웠던 포스트맨 활용 방법을 기억해내면서 막 명세를 옮기고 바디값을 넣고 ( 도대체 왜 넣었지? ) 이상한 행동들을 했다. 머리가 아파오기 시작했다.. 이렇게 하는거 아닌것 같은데 뭘 해야할지 모르겠으니 눈앞이 새하얘졌다.

👨‍ 코치님들의 오피스아워

오피스 아워

당일 월요일 저녁에 백엔드/프론트엔드 코치님들과 오피스아워를 가졌다. 현업에서 일을 하고 계신분들이었고 1시간동안 오늘 기획은 어느정도 했는지와 백엔드/프론트엔드 어떤 것들을 했는지 이야기했다.

기획자체는 첫날인데 그래도 꼼꼼하게 방향 잘 잡은것 같다고 말씀해주셨다.

공통적으로 해주셨던 조언은 다음과 같았다.

우선 모두 프로젝트 경험이 많이 없으니, 세세한 것에 집착하지 말고 일단 다 쳐내고 큰 그림만 그려낸 뒤 빠르게 빠르게 만들어내는 것이 중요하다고 했다. 시간이 짧기 때문에 우선은 구현해 내는 것이 우선이고, 세세한 기능들은 모두 추후로 미뤄내고 속도를 붙여라 라고 하셨던 것 같다.

프론트엔드 코치님께서 특히 프로젝트 처음 하게 되면 뭘 해야하는지 모르겠어서 눈앞이 막막할거고 그 기분을 잘 안다고 하시면서 그럴때는 우선 화면의 큰 그림을 그려보고 어떤 기능들이 필요할지, 어떤 값을 호출하고 보내야할 지 생각하다보면 어떤 것들을 해야할지 하나씩 알게 될 것이라고 하셨다. (당시에도 몰랐고, 지금도 아주는 모르겠지만 약간은 감을 잡은 것 같다)

백엔드 코치님께서 우리가 이상하게 작성한 포스트맨 명세를 슬쩍 봐주시고 피드백을 주셨다. 현재는 일반 유저랑 관리자 유저랑 기능도 아예 나뉘어져있지 않고, Method에 따른 입력 값의 유무에 대해서도 아직 잘 파악하지 못하고 있는 점을 파악해주셨고 간략하게 설명해주셨다. 들으면서 "아... 나 완전 잘못하고 있었구나... 이게 아니구나.." 를 느끼면서 등골이 서늘해졌다. (이렇게 하다간.. 팀이 망하겠군! 이라고 생각..)

백엔드 회의

오피스아워를 하고 백엔드 팀원 셋 모두 같은 생각을 한 것 같았다. 오피스아워 끝나자마자 내가 백엔드 같이 이야기해야할 것 같다고 말씀드렸고, 팀원분들도 같은 생각을 하셨는지 바로 대답해주셨고 바로 디코에서 모였다.

내 화면을 공유해서 보면서 어떤 기능들이 필요할지 카테고리를 나눴고, 정말 대략적으로 URI를 구성하고 각 api에서 필요한 req 값과 res 값들을 작성했다. 물론 지금 생각해보면 그것도 이상하게 작성했었지만, 오피스아워를 거치고 그래도 좀 방향성을 잡았던 것 같다. 9시부터 거의 12시..? 까지 3시간동안 함께 화면을 보며 작성했던 것 같다.

👩‍💻이후의 작업들

월요일, 화요일, 수요일정도는 계속해서 스크럼 회의 이후 백엔드 개별로도 회의를 진행했고 역할 분배나 앞으로 해야할 것들에 대해서 이야기를 많이 나누었다. 그리고 다들 깃랩이나 깃 자체 활용도 익숙치 않아서 혹시 모를 충돌을 대비하여 화면 공유하면서 푸쉬 머지, 등을 함께했다.

지옥에서 온 Git.. 사실 아직도 잘은 모르겠지만 add, commit , push , merge는 쪼오오오끔 익숙해진 것 같다. 아! pull도...

한번에 성공하면 그것대로 무섭고, 충돌이 일어나면 그건 또 그것대로 무섭다. ㅋㅋㅋ 많이 부딪혀봐야 익숙해지겠지..!

👍 팀원분들

그리고 운 좋게도 팀원분들이 모두 성실하신 타입이었고, 온도가 비슷했다. 너무 과하거나 날카롭지 않고, 서로의 의견을 많이 들으려고 하시는 편이었다. 특히 팀장님 덕분에 팀이 잘 흘러가고 있는 것 같다. 팀장님께서 회의 준비도 잘 해주시고 이런 저런 정리나 메모 작업, 브리핑들을 잘 해주셔서 팀원분들은 개발만 할 수 있는 환경을 만들어주셨다. 최고..! 🙌 많이 배우고 있다.

배운 점

  • 백엔드 API 만드는 과정 ( 매우 주관적이며, 이 방법이 정석이 아닐 수 있다. 그저 프로젝트를 하면서 느낀 대강의 과정!)
1. 우리 팀의 프로젝트에서 구현하는 기능들에 대해서 상세하게 파악하고 기능을 카테고리화 한다. (분류작업)
2. 그 기능을 구현하기 위해 어떤 API가 필요할지 정리하고
3. 해당 API에서는 어떤 요청(req)이 필요하고, 어떤 응답(res)가 필요한지 대략적으로 정해두고 URI 라우팅 경로를 정한다.
4. 그리고 코드를 작성해내가면서 세부적으로 변화하는 부분들을 변경하고 명세서를 수정해나간다

내가 느낀 어려운 점, 나의 부족한점.

어려운 점 / 나의 부족한점

  • 기획은 정말 어렵다. (귀찮은데 가장 중요한 것..)
  • import, export, require 등의 기본 모듈 관련 문법 파악 필요
  • 기본적 배열, 객체, 에 대한 메소드 활용 능력 부족 ( 코딩테스트를 통해서 늘려야 하는 역량인 것 같다.)
  • 기본적인 파일 구조 (MVC / 3 Tier Architecture 등.. 의도하는 기능을 어떤 파일(계층)에서 구현해야하는지 잘 모르겠음
  • class, counstructor 기능에 익숙치 않음.
  • 팀원에게 구체적으로 내 의견을 쉽고 간결하게 전달하는 것.
  • 기본적인 DB에 대한 이해. (나중에 RDB도 공부해보고 싶다.)
profile
백엔드개발자

0개의 댓글