18. 부트캠프 종료, 나는 성장했는가?
오늘 부트캠프가 끝났다. 5월 초에 시작했는데 벌서 9월이라니 여름이 어떻게 지나갔는지 모르겠다. 한창 날이 뜨거웠는데 2차 프로젝트 막바지에는 바람 속에 찬기 도는 것을 느낄 수 있었다. 이런 시간 속에서 내가 성장했냐고 묻는다면 그렇다고 할 것이다. 근데, 생각만큼 성장했냐고 묻는다면 아니라고 대답할 것 같다. 부트캠프가 끝난 후 카페에서 이 글을 쓰는 이유는 후자의 대답 때문이다. 사실 프로젝트가 끝나서 속 시원하다는 느낌보다는 아쉽고 답답하고 나의 실력이 아직 형편없다고 느껴 마음이 좋지 못하다. 그런데 어디 말할 곳도 없어서 이렇게 당일에 카페로 나와 글을 남긴다. 사실 몹시 슬프다. 영화의 슬픈 장면을 볼 때의 슬픔이 아니라 그냥 침울하다. 그런 슬픔이다.
어제 숨 가쁘게 프로젝트를 마무리하고 발표 자료를 밤늦게 까지 만들며 아침에 일어나 발표 준비를 하였다. 나름 잘 준비했다고 생각했고 괜찮은 퀄리티라고 생각했다. 그리고 그나마 내가 자신 있어하는 발표는 큰 무리 없이 마무리 지었다. 순서가 2번째라 다른 팀을 보는데 마음 편히 보지 못했다. 왜 이렇게 다들 잘한 것인지 괜히 비교하면 점점 우리 팀의 작품이 작아 보였다. 코치들의 칭찬들이 쏟아지고 누가 잘했다더라 소리를 들으며 견디지 못하고 나는 방으로 들어가 남은 시간을 침대에서 보냈다. 다른 팀들은 새로운 기술들 그리고 주요 기술들을 잘 활용하면서 프로젝트를 진행한 모습을 보니 나의 노력이 그렇게 큰 성과가 아니라는 점을 감정적으로 받아들이기 어려웠다. 팀장으로 있었는데 나의 책임이 크다고 느껴졌다. 마음이 몹시 무거웠다. 한편으로는 내 책임이라고 느끼는 오만함 또한 싫고 지금이 현실이 싫다.
부트캠프를 하는 동안 난 두 번의 프로젝트에서 팀장을 맡았고 두 번의 팀플 모두 일이 많았다. 첫 번째 프로젝트는 팀원 3명이 나갔고 두 번째 프로젝트는 2명이 나갔다. 3명이 나갔어도 1차는 본 게임이라고 생각하지 않았고 2차가 본 게임이라 생각했는데 2차에서도 2명이 나가버려 심적으로 좋지 못했다. 1차 때는 시작 초반에 나갔고 트러블 없이 그나마 나았지만 2차는 정말 가관이었다. 1명은 백엔드였는데 혼자 백엔드를 하겠다고 했고 전혀 배우지도 않은 nest.js를 하고 싶다고 주장했다. 백엔드를 한 명만 둘 수 없어 나와 팀원 하나가 일정 시간 붙기로 했고 리액트를 복습할 시간에 nest.js를 공부하면서 의견을 따라주고 했지만 코치님이 3명이 nest에 붙어서 3주 내내 해야 가능할 것 같다고 말씀해 주셨다. 이때부터 나는 node.js express를 하기로 마음을 먹었지만 마냥 팀원을 말을 주장을 무시할 수 없었기에 나는 그 팀원이 코치님을 설득할 시간을 주었지만 아쉽게도 코치님은 메시지를 보지 못하고 수요일까지 우리는 백엔드에서 스키마 작성 이 외에는 아무것도 진행하지 못했다. 나는 수요일 저녁 express로 진행하겠다고 못을 박고 줄곧 nest.js를 안 하면 나가겠다고 한 팀원을 포기할 수밖에 없었다. 그 팀원은 꽤나 많이 화가 났는지 단톡방에서 내게 한참을 쏟아부었다. 왜 혼자 백엔드를 못하게 하냐 왜 nest.js를 못하게 하냐가 골자였다. 물론 내가 모든 팀원의 의견을 취합하지 않고 못 박은 것은 의사결정을 하는데 절차적으로 문제가 있었지만 어찌 되었든 한 기술 스택에 목을 매며 안 하면 팀을 나가겠다고 하는 태도는 납득하기 어려웠다. 그렇게 우리는 백엔드에서 코드 한 줄 치지 못하고 4일이 지났다. 그리고 우리는 파이어 베이스를 도입하기로 결정했다.
2번 째 나간 사람도 정말 멘털 갈리는 유형이었다. 디자인을 맡아주셨는데 디자인에 대한 피드백이 나올 때마다 신경이 곧 두서 반응했다. 그리고 그것을 자부심으로 이야기했다. 그래도 디자인을 잘 뽑아주었기에 참았다. 웬만하면 팀원들이 디자인 피드백에 대해 이야기할 때마다 무마시키기 바빴다. 그 팀원이 또 예민하게 반응할게 뻔하기 때문이었다. 팀 분위기를 망치고 싶지 않았던 마음이 가장 컸다. 그리고 그 팀은 매번 아침 기분이 좋지 않았다. 이 부분이 나에겐 정말 견디기 힘들었다. 그런 상황에서 2주 차에 본인이 몸이 아프다며 작업을 놓기 시작했다. 그래도 팀에 남고 싶다고 말하길래 그러라고 말했다. 여기가 나는 마지노선이었다. 그리고 코칭 시간에 들어가기 싫다고 재차 나에게 부탁하자 나는 몹시 화가 났다. 조금의 책임감도 없는 태도에 그 팀원의 잘못에 대해 지적했다. 그리고 그 팀원도 나에게 한바탕 쏟아내고 팀을 떠났다. 여기서부터 솔직히 멘탈이 좀 나갔다. 내 생각엔 상대방이 잘못한 것 같은데 오히려 되레 나에게 화풀이하고 나가는 모습에 머리가 아팠다. 정말 사람 때문에 힘들다는 말을 정말 이해하게 되는 순간이었다. 사실 개발 프로젝트에서 그렇게 싸울 일이 있을까 싶었다. 개발 상으로 의견이 잘 안 좁혀질 수 있지만 왜 감정싸움을 하는지 당최 이해가 되지 않았다.
그렇게 나는 2주 차가 되어서야 내 코드를 칠 수 있었다. 가뜩이나 시간이 부족해 정신없이 코드만 주르륵 치게 되었다. 그렇게 렌더링 최적화를 이루겠다는 나의 목표는 멀어져 갔다. 그냥 쭉 작성하다 보니 생산성 없는 코드가 만들어졌고 중복 코드가 난무했다. 에러가 발생해도 그 자리만 겨우 봉합시키는 수준으로 에러 처리를 했다. 마음이 불편했다. 포폴로 내기 어려운 코드가 작성하고 실제 코치로부터 피드백을 받으니 뼈 맞은 것처럼 아팠다. 그렇게 나는 프로젝트 기간이 끝나고 리팩을 진행하기로 결정했다.
그럼 잘 되었던 점은 없었는가 살펴보았을 때 나는 스스로에 대해 뭘 잘했는지 잘 찾지 못했다. 프로젝트가 끝나고 팀원들의 이야기를 듣고 나의 장점, 그리고 우리 팀의 장점을 이해하게 되었다. 일단 우리는 기본적으로 커밋 푸시 프로세스를 잘 지켜나갔다. 각자 만들고 한 번에 합치는 것이 아닌 기능을 쪼개어 자주 커밋을 하고 합쳤다. 3주 동안 655개의 커밋을 남겼다. 리뷰어를 두어 공통적인 코드 스타일을 지킬 수 있도록 노력했다. 그리고 팀 적으로 나눈 이야기는 서기를 두어 꾸준하게 기록했다. 마지막으로 모든 팀원의 의견이 합의를 이룰 수 있도록 노력했다. 협업이라는 관점에서는 다들 큰 불만 없이 진행되었다고 이야기해 주어 감사했다. 팀원 분들의 진솔한 이야기 덕분에 조금은 위로를 받을 수 있었다.
다음으로 협업 능력 이 외에 내가 개발적으로 얻었던 것은 없었을까? 그래도 리액트 코드를 처음으로 많이 쳐보았다. 이전에 제대로 프로젝트를 해본 적이 없다 보니 혼자 조금씩 썼는데 이런 토이 프로젝트를 통해서 많은 코드를 쳐보고 수많은 오류를 맞이하면서 성장했다. 간단하게 초기값이 없을 때 undefined를 어떻게 처리해 나가야 하는지를 시작으로 페이지간 데이터를 어떻게 주고받을지 이야기도 해보고 개발적으로도 조금은 자신감을 얻었다. 그리고 결론적으로 이 경험을 통해서 내가 뭘 공부해야 하는지 알았다는 것이 가장 큰 수확인 것 같다. 취업을 위해서는 js와 리액트의 작동원리를 확실하게 이해하는 것이 첫 번째라는 결론을 얻었다. 그동안 모딥다를 차근차근 읽어온 것이 다행이라는 생각이 들었고 결론적으로 남은 시간은 꾸준히 모딥다를 공부하고 리액트 공식 문서를 읽어가는 것으로 정해졌다.
이번주는 리팩토링을 진행할 예정이다.
1. 파이어베이스로부터 데이터를 불러오는 코드가 공통적으로 들어가 있는데 이 부분을 이런 서비스 코드를 빼는 작업을 진행한다.
2. css 모듈화를 하지 않아 클래스명이 같은 부분이 영향을 받는 경우가 있었는데 모듈화를 통해 막아주려고 한다.
3. useMemo나 useCallback으로 렌더링 최적화를 이뤄본다.
4. 코치의 피드백을 반영하고 정리해 나간다.
다음 주는 프로젝트를 정리한다.
1. 문서를 정리한다. 포트폴리오를 어떻게 보여줄 것인지 고민한다.
나 스스로 올해 안에 다시 일을 하기로 마음을 먹었다. 일을 꽤나 오래 쉬었다. 뜻대로 될지는 모르겠지만 남은 올해 동안 최선을 다해보고자 한다.