길다고 하면 긴, 하지만 어떻게 보면 짧은 2달 간의 파이널 프로젝트가 끝이 났다. 너무 하고 싶은 말이 많아서 무엇부터 말해야 할지, 어떤 것을 말해야 할지조차도 손끝에서 맴돌고 있다. 코드스테이츠에서 약 8개월 간 개발공부를 하면서, 나와 개발 사이의 핏을 가늠할 수 있었고, first project를 하면서는 그 핏에 확신을 가지게 되었다. 운이 좋게도 잘 맞는 팀원들을 만났던 덕도 크다. 다른 방면으로 좋은 기회가 생겨서 예상보다 빨리 이전 회사를 그만두고, 개발자라는 옷을 이리저리 입어보며 나의 스타일에 맞게 맞춰갔던 과정이 8주 동안의 파이널 프로젝트 기간이었던 것 같다.
기존에 배운 기본기를 탄탄하게 다지는 것에 집중한 첫번째 프로젝트에 반해, 파이널 프로젝트는 진짜 내가 만들고 싶은 서비스 / 이를 위해 필요한 기술에 집중했던 것 같다. 프로젝트 아이디어 선정에 있어서는 크게 어렵지 않았다. 우선 첫 번재 프로젝트 팀원과 동일하게 파이널 프로젝트 팀원이 구성되면서, 당시 가볍게 나누었던 서로의 지향성과 그 공통점 덕에 이야기가 빠르게 흘러갔다. 전체적으로 모바일 서비스를 만들고, 모바일 자체 하드웨어에도 접근할 수 있는 기능을 넣기로 했다. 또한 나와 현정님은 머신러닝에 대한 관심도 있었고(심지어 현정님은 딥러닝 모델 학습관련해서 너무 잘해주셨다 ㅠㅠ 일당백 최고..이는 뒤에 자세히 말하겠다.) 이를 종합하여 약 복용 일정 관리 서비스를 만드는 것에 모두가 동의했다. 팀명은 medisharp이며, 서비스 명은 약올림으로 정하였다.
약올림 프로젝트소개 & 내가 한 일
What과 Do에 대한 이야기는 블로그의 다른 글에서 정리해두었으므로, 링크로 전달하려 한다.
이번 회고 글에서는 Feel, Finding, Future Action 즉 내가 배우고 느낀 점에 집중하려 한다,
약올림 소개
약올림 프로젝트 진행
기획
개발 진행
- sprint 1주차 Social Login / Get Main 기능 구현
- sprint 2주차 Data Caching / Schedule 관련 기능
- sprint 3주차 Error Handling / DB transaction
- sprint 4주차 회원관련 기능/ Push 기능
배우고 느낀 점
정확한 소통 & 건강한 비판은 언제나 Good.
개발자라는 직무 뿐 아니라, 어느 곳이든 커뮤니케이션의 중요성에 대한 이야기는 항상 언급되고 있다. 그런데 어떤 커뮤니케이션이 좋은 것일까? 에 대해서 확실하게 이 것이라고 말하기도 어렵다고 할 수 있다.
나는 이에 대해 정확한 소통과 건강한 비판을 좋은 커뮤니케이션의 핵심이라고 말할 수 있을 듯 하다. 실제로 프로젝트를 진행하면서 아무리 기획을 꼼꼼하게 하더라도, 많은 것이 바뀌고 새로 생겨났다. 그러면서 이미 구현한 코드도 리팩토링 되는 경우가 많았고, 그만큼 코드에 대한 리뷰와 서비스 테스트가 매우 중요해졌다. 더군다나 마감기한이 없는 비교적 여유로운 프로젝트가 아니라 기한이 있는 프로젝트로 일정관리까지 중요한 상황이었다. 완성 뿐 아니라 완성도까지 중요한 상황이었다.
이러한 상황에서 서로가 상대의 코드로 서비스 테스트를 해보며 정확하게 코드리뷰를 진행하고, 사용성에 있어서 문제가 되는 점에 있어서는 거리낌없이 비판했다. 또한 기능 구현의 속도를 늦추거나, 더하여 다시 되돌려야 하더라도, 매 주마다 모여서, 기획방향에 대해서 다시 되짚어가며 실제 개발 방향을 정확하게 잡아갔다. 단순히 그 순간만 보았을 때는 시간을 지체하는 것 처럼 보일지는 몰라도 결국은 더 커질 뻔한 에러를 미리 방지하고, 오히려 후반부로 갈 수록 완성의 속도를 높일 수 있었다.
물고기 잡는 방법을 공부하는 법도 깨닫다.
이를 이야기 하기 위해서는 프로젝트 stack에 대한 이야기를 빼놓을 수 없을 것 같다. 전반적으로 딥러닝 모델 학습부터, client에서는 모바일 하드웨어 접근까지 구현하려는 기능 자체도 생소한 것인데, 이를 위한 언어 자체도 파이썬을 사용함으로써 기존과는 전혀 다른 시도를 했기 때문이다.
그러나 일주일동안, 새로운 stack을 공부하는 시간을 가지고 우리는 바로 파이썬으로 서버 코드 작업을 진행할 수 있었다.
만약에 8개월 전의 나라면 어땠을까? 이 강의, 저 강의 들어가면서 애매한 지식들은 늘어나는데 뭔가 내 것이 된 느낌 없이 허투루 시간을 보내고 혼자서 답답해하며 개발이란 분야에 점점 벽을 쌓았을 것이다. 하지만 8개월 후, 지금의 나는 새로운 언어라도 공부하는 것에 큰 어려움을 느끼지 않게 되었으며, 자연스럽게 검색하고 질문해가며 내 것으로 만들어 가게 되었다.
서비스 구현을 위한 개발기술이나 언어가 물고기라면, 이를 공부하는 법이 바로 물고기 잡는 법일 것이다. 8개월동안 자바스크립트 언어에 대해서 공부해왔다고 생각했지만 나는 사실 자바스크립트라는 물고기를 연습삼아서 물고기 잡는 방법을 어떻게 익히는지 더 큰 차원의 방향에 대해서 익히게 되었다는 것을 느낄 수 있었던 8주였다.
8주동안 깊이 몰두해보다.
프로젝트를 진행 한 8주동안 약올림 서비스는 내 머리에서 한 시도 떠난 적이 없었던 것 같다. 기획 단계에서 기본적으로 논의한 기능 외에도, 내가 사용자의 입장에서 고민하고 추가적인 기능을 먼저 제안하고 주도해서 구현하려 했던 것 같다. 나노 단위로 기능이 구현될 때마다, 일일이 다 테스트 해보고, 말 그대로 누가 시키지도 않았는데 나 스스로가 서비스에 빠져들어서 완성도를 높이기 위해서 집중했던 8주였다. 원래 성향 자체가 "이거다!" 싶으면 소위 뽕을 뽑았다고 말할 수 있을 정도로 내 것으로 만들고 완성해야 만족하는 성격이며, 이에 대해 한 번 궁금하고 막히는 것이 있으면 피곤하다고 말하면서도 밤을 새서라도 해결해야 직성이 풀리기 때문에, 누가 밤을 새라고 하지도 않았는데도 자진해서 새벽코딩을 했던 나날이었다.
오랜만에 타의가 아니라 자의에 의해서 몰두하고 나니, 아이러니 하게도 지치는 것이 아니라 더 뿌듯했고, 그만큼 나라는 사람에 대해서 돌아볼 수 있는 기간이었다. 아무래도 배운 게 도둑질이라고, 어떤 일이든 사소한 거 하나에도 철학적으로 고민해보고 나의 입장에서 분석해보는 것이 습관이 들어서 그런가, 개발 프로젝트를 하면서도 나에 대해서도 끊임없이 탐구할 수 있는 기간이었다.
어떻게 보면 단순히 학습만 했다면, 개발"일"에 대해서는 이해도가 높아졌을지는 몰라도, 내가 어떤 개발자가 되고 싶은 지, 혹은 나는 어떤 개발자가 될 수 있는지에 대해서는 제대로 파악하지 못했을 것이라는 생각이 들었다. 무엇보다 마음맞는 팀원들과 같이 밤새고 코딩하면서 가까워졌다는 점 또한 8주간의 프로젝트에 몰두하면서 얻은 것 중 하나이다.
마무리 하며....
프로젝트를 마감 기한 내에 100%완성하지는 못했고, 아직도 리팩토링은 진행 중이다. 그러나 기능 하나하나의 난이도와 완성도를 고려하면 나는 사실 매우 만족하고 있다. 생각했던 것보다 짧은 시간 내에 많은 것을 공부하며 이를 바로 서비스에 활용했고 팀원들과 기획단계에서 논의했던 기능들을 다 갖추었기 때문이다. 아직도 서비스를 전체적으로 작동해보면 우리가 이걸 직접 구현했다는 사실이 신기할 따름이다.
아마도 프로젝트에 대한 만족도가 높은 이유는, 단순히 내가 코드를 짜서 서비스를 만들었다가 아니라 그 과정에서 많은 것들을 느끼고 나 또한 많이 성장했기 때문이다.
이 기간동안 배운 점들을 잊지 않고 현업에서도 계속해서 활용할 수 있도록 다짐하며 프로젝트 회고를 마무리 하려 한다.
'PROJECT_BE > 약올림_2020' 카테고리의 다른 글
[Sprint 4]회원관련 기능/push 기능 구현(Week7) (0) | 2021.01.15 |
---|---|
[Sprint 3]Error Handling/DB transaction(Week6) (0) | 2021.01.15 |
[Sprint 2]Data Caching / Schedules 관련 기능 구현(Week5) (0) | 2021.01.15 |
[Sprint 1]Social Login/Get Main API 구현(Week4) (2) | 2021.01.02 |
[Intro]프로젝트 시작하기(Week2-2)기능리스트업/마일스톤 짜기 (0) | 2020.11.15 |