정글 입소후 첫 프로젝트를 진행하게 되었다. 취지는 팀프로젝트를 경험하는것으로 보았으며, 결과보다는 그 과정이 중요하다고 이해했다. 개인적으로 이미지를 저장하고, 활용하는것과 JWT를 이용하는것이 흥미로웠다. 이것만 배워가도 충분하다는 목표를 세웠었다.
대학부터 거의 대부분의 팀플에서 계획/설계 와 기능 분배를 담당했었다. 이번 역시 하다보니 어떤 기능을 구현할지, 어떻게 기능을 배분할지 판단하고 분배했었다.
한 팀원은 버거워보였고, 다른 팀원은 자신이 하고 싶은게 있어보여 팀 프로젝트는 거의 혼자하는것과 다름이 없었다. 혼자 프로젝트를 마무리할지, 팀원들이 학습하고 무언가라도 해볼 수 있게 도와줘야할지를 고민이 되었고 해결을 위해 코치님께 조언을 구하기로 했다.
주제 선정
팀원들이 관심있는 분야나 기능을 모집하고, 해당 기능을 구현하기에 적합한 주제를 탐색하고 선정했다. 이미지관리와 로그인을 구현하기에 "레시피 공유 사이트" 결론에 도달했다.
와이어 프레임을 직접 설계
뼈대를 먼저 그리고, 팀원들의 피드백을 받아 조정했다. 코치님들이 웹 페이지마다 이름까지 정해둔것을 보시고, 구체적으로 작성했다 언급하셨다.
JWT 생성, 로그인 상태 유지 구현
JWT 개념을 학습하고, 라이브러리를 이용해 구현했다. 직접 만들어도 보았지만 payload 인코딩 과정에서 시뮬레이터와 다른 결과를 얻어 pyJWT라이브러리를 이용했다.
S3, MongoDB 연결
MongoDB는 입학시험때도 다루어서 쉬웠다. 그러나 S3까지 연결하기엔 시간이 부족했다.
처음 보는 개념이였지만, 목적을 파악하는데 오래 걸리지 않았다. 요지는 다른 사람들이 무엇을 하는지를 명확하고 쉽게 이해시키는 것이다. 어떤것을 할건데, 어떤 형식이고 어떻게 구성되어있으며, 동작은 어떻게할 것인지를 설명하면 되는것이다.
우리는 Figma같은 도구 대신, 칠판에 그려진 사진을 보여주는것만으로도 충분히 설명할 수 있다 생각하여 발표 시간을 줄였다. 그리고 사용자 요청이 서버로 들어가 어떤 과정을 거치는지를 기능별로 언급했던것 같다.
구체적으로 설정하기 위해 웹 페이지마다 미리 이름을 정해두고, 어떤 기능이 들어갈지를 나열했었는데 이 부분에서 좋은 평가를 받았다.
조언 내용은 2가지로 나눌 수 있다.
1. 기술 피드백에 대한 나의 답변과 타당성을 확인
2. 팀원 소통 방법
이번주차 프로젝트는 팀플을 한번 경험해보는것이 목적이였고, 난이도는 입학시험과 크게 다르지 않았다. 입학 시험을 치르고 통과했었다면, 쉽게 풀 수 있을것이라는 생각이 들었고, 기존에는 텍스트 위주로 저장했다면 이번에는 이미지는 어떻게 저장할 수 있는지 궁금했다. 따라서 웹 기반이지만, 이미지를 저장하고 불러올 수 있는 주제로 "레시지 공유 사이트"를 잡았다.
이미지를 저장하기 위해선 저장소가 필요했고, AI과 검색을 통해 스토리지에 저장하는것이 일반적라는걸 알았다. 하지만, 당시 스토리지라는게 DB를 의미하는것인줄 알았고, 발표때 이미지를 DB에 저장하겠다고 말했고 코치님께서 일반적이지 않은 선택이라고 피드백을 주셨다. 당시에는 혼란스러웠는데, 어떤 것들 놓쳤는지 조사해보니 DB와 스토리지 용어를 혼용해서 사용했었다는걸 알았다.
DB, 스토리지가 무엇이고, 어떤 용도로 쓰이고, 왜 용도가 다른지를 하드웨어 레벨에서 설명하며 코치님께 맞는지 확인하였다. 또, 프로젝트에서 DB와 스토리지를 혼용해서 데이터를 저장하는 계획에 동의를 받았다.
혼자 공부했을 때, 답답했던것이 내가 조사했지만 정말 맞는것인지에 대한 의구심이 조금씩 남았는데 전문가에게 직접 피드백을 받을 수 있어 큰 도움이 되었다.
팀원분들이 AI를 이용해 입학시험을 통과했고, 혼자서는 해당 퀄리티를 구현할 수 없다는 사실을 알게되었다. 이미지 저장과 더불어 JWT를 이용한 로그인을 구현하고자 했는데, 누구나 JWT를 이용해서 구현해보고 싶어했다. 그러나 입학 시험조차 혼자서 해낼 수 없는데, JWT 개념도 파악하지 못하면서 구현은 힘들거라 판단했다. 입학시험 통과했다는걸 기준으로 프로젝트를 계획 후 발표까지 마쳤는데, 팀원들이 나중에 고백하게 되어 분배를 다시 해야 했다. 내가 맡아야하는 일이 너무 많아졌고, 팀적으로 굉장히 안좋은 케이스였다. 만약, 솔직하게 본인의 실력을 말해주었다면 목표를 하향조정했을텐데 너무 늦게 알게 되었다. 감추고 싶어했던것도 이해되고, 솔직하게 말하는 상황도 고려하지 못했던것 같다. 그래도 팀적으로 굉장히 안좋은 결정이였음은 분명하다.
입학시험에서 구현했단 기능 일부를 맡겨도 제대로 수행할 수 없을 뿐더라, 다른 팀원은 본인 생각대로 진행하고 있었다. 맡긴 업무가 아닌 본인이 하고 싶은 업무만 수행하고 있었다. 그래서 이런 팀원들은 어떤식으로 소통해야하고, 어떻게 협업해야 팀적으로 좋은 성과를 낼 수 있을지 조언이 필요했다.
코치님은 일방적인 지시가 아니였는에 대해 언급하셨던걸로 기억난다. 내가 다른 팀원들보다 조금 잘하는건 사실이지만, 그렇다고 다른 사람의 결정권 위에 있다는건 아니다. 내가 신입으로 입사한다면, 시니어 입자에서 나는 굉장히 못하는 사람이 된다. 그렇다고 나의 의견이나 결정권을 무시할 수 있다는건 아니다. 따라서 내가 의견을 피력할 순 있지만 결정은 존중해야하며, 다수결의 원칙에 따라 결정 내리는걸 추천해주셨다.
조언을 받은 후로 의사결정시 다른 사람의 선택을 존중해주고, 내 의견은 언제가 참고하라는 말을 덧붙였다. 그리고 본인만의 방식을 존중하여 하고싶은걸 개발하고, 이후에 합쳐보는걸 선택했다. 나 또한 혼자 마무리하기 보단 팀원들이 막힌 부분은 같이 해결하며 최대한 프로젝트를 이끌어보는걸 선택했다.
결과를 참담했지만, 팀적 소통과 배려라는 측면에서 배움이 있었다고 본다. 배움에 여러 방식이 있으며, 내 의도가 다른 사람에게는 불편할 수 있다기에 의사결정을 존중해야한다. 비록 그것이 팀적으로 손해가 될지라도, 팀이 된 상황에서는 할 수 있는건 제한적인것 같다. 아마, 사회에서는 면접과 해고라는 수단이 있기에 이란 상황이 덜 생길 것 같다.
발표 준비는 거의 하지 않았다. 원채 그런걸 못다루기도 하고, 관심도 없다. 필요한 업무이긴 하나 내 목적은 공부하는것이지 남들이 이해하건 말건 별 관심이 없었다. PPT 만드는건 다른 팀원께서 담당해주셨다. 들어갈 내용은 말해주면, 그에 맞춰 작성해주셨는데 다행이였다. 상당히 예쁘게 만들어주셔서, 굉장히 만족스러웠다.
이미 어떤식으로 돌아가고, 어떤것들이 중요한지 내 나름 틀이 잡혀있었기에 따로 발표 연습은 하지 않았다. 전에 프롬프트를 작성하고 진행했던 경험이 있는데, 기계적이고 대학생티나고 대처능력이 떨어져 안보고하는게 낫다는 결론을 내렸었다. 대신, 진행 과정에서 전체를 충분히 이해하면 발표 내용은 저절로 입에서 나왔다.
사실, 프로젝트와 별개로 스스로 정한 목표는 모두 이루었다. 목표로 잡았던 이미지 저장과 JWT도 충분히 공부해보았고, 코치님께 피드백도 받았고, 기술 구현 방향도 긍정적인 평가를 받았다. 그래서 가벼운 마음으로 프로제트를 마무리하고, 발표때도 크게 긴장하지 않았다.