[Elice 1차 프로젝트 회고] : Everything happens for a reason

Everything happens for a reason 이 정확히 어떤 뉘앙스로 쓰이는지 잘은 모르지만 전치사 for 의 어감으로 유추해 보았을 때 그래도 따뜻한 분위기라고 느껴진다. '모든 일에는 다 원인이 있어' 보다는 '모든 일에는 이유가 있었을거야' 이렇게 말해주는 것 같다.

프로젝트는 힘들었다. 음 그래서 좋은 회고록도 읽기 좋은 글도 아닐 수 있다.


 

 

나의 역할

프로젝트를 시작할 때 내가 맡은 역할은 이러했다.


- 전체 팀장

- 백엔드 팀원 (API 개발 , 추후 백엔드 서버 배포를 맡게 되었다)

 

백엔드 팀에 합류한 이유 :

1. 당시 해보지 않았던 일을 해본 전과 후로 인생이 나뉜다(ex)수능을 보기 전과 후) 라는 밈을 보고 감명받아 합류 

2. 백엔드 트랙을 제대로 이수하지 않았다. (트랙 평균 이수율 : 4주간의 FE과정 평균 97% , 2주간의 BE 과정 37%)

이유는 간단하다. 경험도 전무하고 어려워서 속도가 느렸다. 백엔드 팀원으로 들어가면 좀 급속으로 섭렵할 수 있지 않을까 하는 막연한 생각이 있었다. (주변 지인들도 역시 넌 못하는 것을 하고싶어하는 경향이 있다고 한다

 

팀장이 된 과정 : 

내가 생각하는 팀장이란 팀원들만이 모여서 할 수 없는 어떤 것을 해결해주는 사람. 그로 인해 팀 전체를 보호해주는 사람이다. 나는 그것이 개발 능력이라고 생각했다. 그래서 팀원으로 남으려고 했다. 그러나 (모든 과정이 온라인이라서 그런지) 프로젝트를 시작하던 그 날까지 우리 팀원들은 답장이 정~말 느렸다. 어떤 의사결정도 진행되지 않았었다. 한 명이라도 친한 사람이 있으면 말을 터놓게 되는 게 사람이라고 생각해서 개인 DM으로 "친하게 지내요!"라고 말을 먼저 걸었다.

 

결국 팀장을 정하는 날의 회의도 내가 진행하게 되었는데, 대부분 "정혜님이 해주셨으면 좋겠어요" 하셔서 "그럼 사다리타기로 정할까요?" 라고 받아치다가 그러다가 답장이 너~무 느린 분이 팀장이 되거나, 소외받는다고 느끼는 사람이 생겨 탈주자가 되어버리면 어떡하지 라는 생각에 그럼 그냥 제가 하겠습니다. 라고 저질러버렸다.

 


팀장으로서

ToGather

본인은 자유로운 영혼의 소유자이며 안(Not)꼰대 중 안꼰대 이다. 소수가 배제되는 상황과 수직적 분위기를 정말 싫어한다. 

오른쪽 : 최종 발표 날 Gather 룸

그래서 Gather라는 앱을 이용해 모두의 의견이 반영된 공간을 개설하고자 했다. 우리는 자신이 커스텀한 캐릭터로 각자의 개성이 드러나는 자리에 앉아 일했다. 처음엔 엄청 휑했는데 팀원분들이 가구들을 하나씩 배치해주셔서 제법 ... 사람 사는 곳 같이 되었다.

 

Gather앱에서는 캐릭터끼리 Nearby하거나 미팅룸에 들어가면 바로바로 음성 커뮤니케이션이 가능하다. 오해를 줄일 수 있다. 그리고 무엇보다 재밌다. 처음엔 코어 시간(9:00-18:00)에만 참석하기로 했지만 며칠 지나자 VScode를 켬과 동시에 자발적으로 참석해주셨다. 그 덕에 급속도로 친해졌고 1차 오피스아워 때 전원 카메라를 키고 참석한 유일무이한 팀이 되었다 (코치님 피셜).

 

채팅 채널은 채널 카테고리 분류에 용이한 디스코드를 이용했다. 그 중 음성 채널은 Gather앱 덕분에 자연스레 이용하지 않게 되었다. 알림을 꺼둔 채널도 있는데 시간 날 때마다 몰아서 읽고, 불만이나 갈등이 있어보이면 개인 메세지를 통해서라도 빠르게 소통하려고 노력했다. 또한 어떤 상황에도 생글생글 웃으며 다녔다. 24h ENFP로 살았다!

 

 

 

기록은 생각보다 도움이 된다

하지만 기록이 진정으로 도움이 된다고 느꼈던 적은 사실 잘 없는데(ㅎ) 이번에 확실히 그 쓸모를 실감했다. 프로젝트 기간에 그동안 수업을 필기해 두었는데 기록해두지 않은 것들은 서치에 시간을 많이 소모했다.

진행과정에 회의록 + 변경사항 등 작은것까지 기록해 서로(BE-FE) 진행사항을 서로 알 수 있게 했다. 프론트분들께도 제가 없더라도 반드시 그 내용을 남겨달라고 부탁했다. Notion은 템플릿을 여러개 엮고 이것저것 추가해서 만들었다. Notion 또한 '누구나 수정/추가 가능합니다~' 해서 생겨난 구조.

 

 

계획형이 되고싶어

나의 치명적 단점은 계획성 부족이다. '계획을 세운다고 계획대로 흘러가긴 하는가 ? 그 시간에 한 번의 Try라도 더 해보자!.' 하는 생각으로 산다. 하지만 이것은 팀장으로서는 그렇게 본보기가 되지 못했다. Notion의 플래너 채널은 서서히 사용하지 않았다. 프로젝트 후반부가 되어 거의 모든 팀원들이 밤을 새는 경우가 발생했는데 MileStone을 제대로 설정해두었다면 몰아서 밤을 새는 일은 발생하지 않았을 것이다. 나조차도.

 

 


팀원으로서

-

- 사실 백엔드 과정을 성실하게 이수하지 않아서 프로젝트 3일차까지 서버 켜는 법도 몰랐다. 백엔드는 도대체 뭘 개발하는 거지? 라고 생각했다. 4일차에 내가 만들려고 하는 기능은 CRUD이며 , 안전한 Restful API 구현을 위해서 HTTP 메소드라는 아주 월드와이드한 규칙이 있구나 라는 것을 깨달았다. 모든 구현이 그 전날의 벼락치기로 이루어졌다. 열심히 HTTP 메소드를 이용한 삽질을 하면서 (이론을 이해하고 프로젝트를 하는 것이 아니라) 아이러니하게도 프로젝트를 하면서 이론을 이해하고 있었다.

 

- 또한 전체적인 흐름을 모르니 내가 도대체 뭘 구현하고 있는건지 나조차도 모르고 있었다. 이를 극복하기 위해 내가 구현하려는 기능과(destination) 과정에서 발생한 에러들을 정리해서 노트에 쓰고, 해결하면 줄을 그어 표시해두었다. 처음에는 도움이 되었는데 중반쯤 되니 그것마저도 질서가 없어져서 나는 점점 더 혼란스러워졌다. 마음이 조급해 나를 믿지 못하고 의존적으로 변해갔다. 그 누구든지 나보다 빠를 것 같다는 생각이 들어 사소한 것까지 남의 입을 거쳐 해결하려 했다. 

 

- 2주차로 넘어가는 새벽에 서버를 배포하다가 두 번의 대학생활을 함께했던 노트북이 세팅중 생을 마감했다. 아침이 Due였던 터라 아주 멘탈이 나가서 그대로 자리를 박차고 나와 달리기를 했다. 또 어느 날은 MongoDB권한 문제로 이틀 정도를 날렸는데 내 DB형태는 어떻게 짜여야 하는지 남의 DB를 참조하면 어떻게 되는지 등등 그땐 postman을 쓸 줄 몰라서 더욱이 막막했다.

 

어떤 일이 있었다

그렇게 진전이 없던 도중 팀원분들 중 한 분께서 내가 구현해야할 부분을 테스트 하겠다는 명목으로 가져가, 내 코드를 전부 지우고 완성해 푸시하였다. 하루만에 대부분의 기능 구현이 끝나있었기에 처음에는 도움으로 받아들여야 한다고 생각했다. 하지만 이후 나의 역할이 없어진 것 같은 느낌에 크게 방황했다. 그 코드를 완벽히 이해하고 이후 유지보수를 해나가야 하나? 이렇게 넘어가는 것이 옳은 행동인가? 하지만 내가 마감까지 끝낼 수 있을까? 등등 고민이 기하급수적으로 늘어났다. 팀원이었다면 온갖 객기를 부리며 내가 구현하겠다고 난리를 쳤겠지만 나는 모두와 잘 지내야 하는 포지션임이 분명했다.

 

결론을 내리는 과정은 다음과 같았다.

1. 나에게 그 과정을 공유했는가 : X  , 하지만 결과(완성된 코드)는 공유해주었다

2. 내가 그정도의 효율을 낼 수 있는가 : X

3. 더 나은 솔루션을 제공한 것이 맞는가 : O

4. 팀 전체의 최대 이익에 도움이 되는가 :  O

 

이러한 이유로 수용을 결정했다. 또한 그 분은 프로젝트 이전에도 알고있던 사이라 개인적으로 가장 편하기도 하고, 그만큼 이해도가 높은 분이었어서, 종합적으로 생각해 보았을 때 나의 기분을 상하게할 의도는 전혀 없었다고 판단했다. 모든 나의 분노와 좌절의 이유는 그냥 내 퍼포먼스가 나의 기대에 미치지 못했기 때문임을 알고있다. 그래서 (내가 많이 힘들어 했음에도) 이 일은 긍정 부정의 표현이 담기지 않은 그냥 '어떤 일'이라고 표현하고 싶다.

 

 

인프라 구축과 FE

위와 같은 과정으로 API는 비교적 빠르게 완성될 수 있었다. 이후에는 인프라 구축을 하였다. VM 환경을 이용해야 했는데, ssh접속 방법 외에 nginx가 뭔지 개발계가 어떤 구성으로 이루어져 있는지 주어진 정보가 없었기 때문에 어렵기도 했지만 내 입맛대로 서버를 다루어 볼 수 있었다. 프로젝트의 모든 기능을 작동하게 하는 서버를 만들기까지는 우여곡절이 많았지만, 하나씩 알아가고 에러를 해결해낼 때면 기뻤다. cmd창에 마치 종교처럼 의지했다 ㅋㅋㅋㅋ 인터페이스가 없다시피한 단조로운 화면에 방대한 정보가 담겨있는 게 굉장히 매력적이라고 생각했다. 그리고 마감날까지 프론트 팀원들이 구현하지 못한 페이지들을 구현하였다. 이마저도 빠르지는 못했지만 내 코드가 쓰이고 있다는 사실 자체가 위안이 됐다. 그리고 그 사이에 우리는 두 번의 오프라인 만남을 거치며 더욱 긴밀해졌다. 

 

 

 

 


사실은...

- 사실은 정말 많이 그만두고 싶었다. 아직도 이 과정을 되짚어보다 보면 감정을 주체할 수 없이 속상하다. 매일 밤을 새는데도 진전이 없어 아 이거 진짜 못해먹겠다 싶었다. 아니면 그냥 나의 실패에 그럴싸한 이유를 붙이고 싶은 건지도 모른다. 9시면 모두의 앞에서 회의를 시작해야 하는데 모두가 나를 무능하다고 생각할 것 같아 남들 앞에 나서야 하는 시간이 싫었고 그냥 어디론가 사라지고 싶었다. 말이 많으면 친목만 하는 사람이 될까봐, 말이 없으면 분위기를 망칠까봐 고민이었다. 

 

 

 

Everything Happens For a Reason

- 프로젝트 마감날에 마무리 오피스아워 이후 팀원들이 없는 곳으로 가서 코치님께 오늘까지의 감정과 '어떤 일' 에 대해 말씀드리고 내가 이 상황을 건강하게 수용할 수 있는 방법에 대해 여쭤봤다. 코치님께서는 터놓기 쉽지 않았을 것 같은데 말해주어 감사하다며, 우선 인프라 구축도 중요한 과정 중의 하나라는 점을 간과하지 말아달라고 하셨다. 개발에서 가장 중요한 능력은 커뮤니케이션이라고도 해주셨다.

 

또한 ' 다수의 이익을 위해 나의 무언가를 포기했고, 결론적으로 그래서 이런 팀이 만들어졌다면 팀장으로서는 좋은 결정이 맞다.' 하지만 문제는 '내가 짜던 코드가 더이상 남아있지 않고 타의에 의해 중단되었다는 사실' 이라는 점을 짚어 주셨다.

이를 내 것으로 만들 수 있는 구체적인 방안 제시와 함께, 코딩은 연습하면 얼마든지 성장할 수 있고 그런 기회는 앞으로 많을 테니 팀원으로서는 경험할 수 없는 많은 것들을 배웠다고 생각하고, 남은 CRUD 기능을 꼭 구현해보라고 조언해 주셨다. 그래야만 이번 일이 나에게 매듭지어질 수 있을거라고 하셨다.

 

내가 해내지 못한 일에 대해 팀을 위한 숭고한 희생 등으로 포장하고 싶지는 않다. 하지만 단지 그런 말을 들었고 그간의 긴장이 풀렸다. 많은 것들을 말씀해 주셨는데 평정심을 유지하려 했지만 눈물이 났다. 전화를 끊고 다시 팀원들이 있는 곳으로 복귀하려고 하는데 계속 눈물이 멈추지 않아서 오피스 문이 닫을 때까지 들어가지 못했다.

 

 

 

- 프로젝트가 끝나고 집에 가는 길에 팀원분께서 정혜님만 오시면 팀 분위기가 확 바뀌고 사람들 말이 많아져서 신기했다, 그리고 이 멤버 그대로 2차 스터디를 열어주시면 어떻겠냐고 제안해 주셨다. 다른 분께서는 프로젝트가 끝나고 장문의 DM을 보내주시기도 했다. 그치만 나는 그냥 좋은 팀원분들을 만나서 좋은 리더의 소리를 들은 것 같다. 나는 진심으로 한명한명 모두를 좋아했고, 모두에게 배웠다.

 

내일부터는 다시 학생으로 돌아가 맨땅에 헤딩해봐야지. 그냥 아무렇지 않게 이번 프로젝트를 떠올릴 수 있는 날이 왔으면 좋겠다. 반드시 더 성장하여 그렇게 될 것이다.