Post

가다듬기: 지난 프로젝트 반추

가다듬기: 지난 프로젝트 반추


벌써 4개월의 엘리스 SW 트랙이 끝을 보이고 있다. 내일부터 진행될 3주간의 프로젝트가 끝나면 엘리스 SW 트랙을 수료하게 된다. 아직 실감나지 않고 공부할 내용도 많지만, 내일부터 3주간은 프로젝트에 온전히 집중할 예정이다.

지난 4월에 2주동안 참여했던 프로젝트를 토대로, 이번 프로젝트는 어떤 점에 유의해야 할 지, 어떤 부분에 변화를 줄 지 정리해보고자 글을 작성하게 되었다.

개인적인 프로젝트 목표를 AS IS / TO BE로 소소하게 작성해놓고 3주 후에 점검할 예정이다!




AS IS

지난 [오늘의 메뉴 추천: 식품 밀키트 쇼핑몰] 프로젝트는 나의 첫 백엔드 프로젝트였다. 팀원들과 협업해서 하나의 프로젝트를 완성한 것 그 자체를 개인적인 목표로도 삼았고, 자신감과 재미를 얻으며 마칠 수 있었다.
이번에는 지난 프로젝트에서 개인적으로 아쉬웠던 점을 보완하는 것을 새로운 목표로 정했다.


1. 외부 라이브러리를 무작정 도입하여 비효율적으로 시간을 사용했다.


지난 프로젝트에서 나는 백엔드 파트의 로그인 기능 구현을 맡았다. 나는 코드 작성을 시작하자마자 먼저 Passport 라이브러리를 설치했다.
Passport는 엘리스의 Node.js 강의에서 배운 로그인 기능 구현에 사용했던 라이브러리였고, 내가 프로젝트를 시작하기 전에 개인적으로 추가 공부를 해뒀던 부분이었기 때문이다.
한마디로, 나는 배운걸 써먹고 싶어서 라는 단순한 이유로 다짜고짜 Passport 라이브러리를 설치했었다.

그러나 우리 팀의 프로젝트는 구글 로그인, 페이스북 로그인과 같은 부가적인 로그인 서비스를 지원할 예정이 없었다. 또한 Session 대신 Refresh 토큰을 MongoDB에 저장해둘 예정이었기 때문에 Passport가 제공하는 편의 기능을 거의 활용할 일이 없었다. 나는 Passport 라이브러리가 어떤 편의성을 제공하는지, 왜 필요한지 논리를 정립하지 않은 상태에서 이용하려 한 것이다. 결국 Passport 관련 코드와 내가 직접 작성한 로그인 인증 코드가 뒤섞이면서 오히려 헷갈리는 결과를 초래했다..

결국 지난 프로젝트에서는 Passport를 삭제하고 관련된 로직을 지우면서 Passport와 작별했다. 내가 기능을 구현하기 전에 로그인 기능은 어떻게 구현할 것인지, 라이브러리를 도입할 것인지, 도입한다면 어떤 라이브러리를 도입할 것인지, 그리고 왜 이 라이브러리가 필요한지 정리를 먼저 했더라면 시간 효율적으로 코드를 작성할 수 있었을 것이다.



2. 잘못된 방향으로 발휘한 책임감 때문에 비효율적으로 시간을 보냈다.


앞서 작성한 1번의 연장선으로, 나는 라이브러리를 사용했다 지우고 코드를 수정하는 비효율적인 시간을 보냈다. 내가 잘못된 방향으로 달려나가는 것을 인지조차 하지 못했다. 이는 라이브러리를 도입할 때 논리를 정립하지 않았던 것도 있지만, 팀원에게 나의 고민을 말하고 상의를 요청하지 않았던 문제이기도 하다.

당시에 나는 ‘팀에서 못해도 1인분은 하자’라는 생각에 사로잡혔고, 내가 맡은 로그인 기능을 성공적으로 구현하는 것에 집착했다. ‘팀원들도 다들 바쁘고 본인들이 맡은 파트를 해결한다고 골머리를 앓고 있을 텐데, 내가 아무 생각없이 도움을 요청하는 것은 아닐까?’ 하고 속으로 삽질하며 로그인 기능을 붙잡고 끙끙대고 있었다..

즉, “책임감 = 내가 맡은 파트를 팀원들의 도움 없이 알아서 찾아서 잘 해결해내는 것” 이라는 잘못된 공식을 읊고 있었던 것이다. 물론 조금만 검색해도 해결할 수 있는 문제를 시도조차 하지않고 질문하는 건 팀원들의 시간 + 내 시간이 투자되는 걸 고려했을 때 비효율적이다.
하지만 여러 시도를 해도 막히거나, 혼자서 판단하기 어려운 문제는 다르다고 생각한다. 팀원들의 의견을 구하는 것이 혼자서 앓고 있는 것 보다 훨씬 명쾌한 답을 얻을 수도 있다. 나는 지난 프로젝트의 경험으로 이 인사이트를 얻을 수 있었다.

코드에서 passport를 제거한 뒤, 미처 uninstall하지 않았던 passport 라이브러리가 package.json 파일에 남았고 이를 본 팀원이 “passport 결국 삭제하셨군요.” 라고 운을 띄웠다. 사실 passport가 그렇게 필요해보이진 않았는데 내가 너무 몰입해서 만들고 있어서 차마 말할 수 없었다는 말이 이어졌다. 꼭 사용하고 싶은 사람처럼 보였다고..
내가 팀원에게 좀 더 적극적으로 의견을 구했더라면, 그리고 솔직하게 막힌 부분에 대해 설명하고 SOS 요청을 했더라면 빠르게 로그인을 마무리하고 다음 기능으로 넘어가지 않았을까 하는 아쉬움이 남았다.




TO BE

위 내용을 종합하여 새 프로젝트의 목표를 아래와 같이 설정했다.


1. 외부 모듈이나 라이브러리를 이용할 때, 프로젝트에 정말 필요한 것인지 논리적으로 생각하자.

  • 무작정 코드를 작성에 돌입하지 말고, 기능의 목적에 대해 먼저 이해하자.
  • 어떤 흐름으로 코드를 작성할지 구상하자.
  • 여기에 도움을 줄 모듈, 라이브러리가 있는지 찾아보자.
  • 그리고 이 모듈, 라이브러리가 꼭 필요한지 마지막으로 생각해보자.

2. 막히는 부분이 있을 땐 팀원에게 적극적으로 의견을 구하자.

  • 책임감은 내가 맡은 기능을 포기하지 않는 것이다.
  • 팀원에게 의견을 구하는 것은 내 역할을 포기하는 것이 아니다.
  • 팀원이 편안하게 도움을 주고, 의견을 제시할 수 있도록 내가 먼저 의견을 구하자.
  • 팀원과 지속적으로 소통해서 진행상황, 문제점을 공유하고 나 또한 팀원의 문제를 해결할 수 있는 방안을 함께 고민해주자.




위 개선사항을 염두하고 내일부터 진행될 프로젝트에 참여할 예정이다. 3주간의 프로젝트를 무사히 마치길 기원하며.. 내일부터 다시 달리자!

This post is licensed under CC BY 4.0 by the author.