github : https://github.com/DaVinciCodeGame
시연영상: https://youtu.be/UoJ0uUvuXig
항해99 최종 프로젝트가 마무리에 들어가는 단계이다. 6주간 프로젝트를 진행하면서 많은 일들이 있었고, 정말 많은 생각을 갖게 되는 것 같다.
처음 기획했던 프로젝트는 보드게임이 아니였다. 여행을 하면서 실시간 방송으로 사람들과 소통하면서 그 여행지를 보여주고 자랑하고 공감하고, 지도 시스템과 함께 주변 사람들을 찾는 그런 여행 관련 프로젝트를 구상하고, 이를 구현하기 위해 지식을 배우고 서버를 구현하려고 노력했다.
하지만 구성을 하면서 실시간 스트리밍에 대한 서버를 구현하는 것이 6주라는 짧은 시간에 가능할지에 대한 여부와 서버 비용과 같은 금액적인 면에서 가능할지 모르겠다는 시니어 멘토님들의 의견을 받아 2주가 지났을 때, 기획을 엎어 새로운 방향을 찾아 나섰다.
항해99를 진행하면서 배움에 있어서 너무 좋았지만, 여러 기술스택을 배우면서 만나는 에러 및 안풀리는 문제들에 대한 스트레스를 팀원들끼리 해결할 수 있는 무엇인가를 만들자 라는 생각으로 보드게임으로 방향을 잡았고, 그 중 개인의 실력차와 크게 상관없이 간단하게 즐길 수 있는 보드게임을 찾다보니 다빈치코드
를 선택하게 되었다.
남은시간 약 4주 안에 구현, User Test, 리팩토링을 하기 위해서는 시간이 정말 짧았다. 백앤드 개발자 2명이서 기간 내에 프로젝트를 진행하기 위해서는 분업이 필수적으로 느껴졌고, Main Server와 Game Server로 나눠 진행하게 되었다.
맡은 바 Main Server가 나오기 전에 게임 로직을 프론트앤드가 테스트 할 수 있는 EC2 Test Server를 구현하고 정한 Socket.Io 명세서와 Flowchart를 구현하기 위해 기능마다 프론트앤드와 협업하며 진행했지만, 코드에 대해 조금더 고민하고 생각하는 시간보다는 기능을 구현하는게 우선인 코드가 작성되어 중복되는 코드가 많았고, 코드 라인이 많아지고 기능이 추가될수록 맞물리는 Socket로직들에 대해 해결해야 하는 Error들이 계속해서 생겨났다.
일주일이 지났을 때, 백엔드 동료가 프로젝트 하차에 대한 고민을 털어 놓으면서 전체적으로 잡혀있는 scope를 완성하는데 있어서 시간적으로 불가능하다 판단하고, 각자 할 수 있는 영역만 선택하여 scope를 조정하였다.
이후 어느정도 전체적인 로직에 안정감이 생겼을 때 User Test를 진행하고, 설문으로 받은 여러 Error에 대해 수정 및 보완 하는 작업을 가졌다.
.
.
.
DavinciCode를 진행하면서 아쉬웠던 점을 쓴다면 내가 나의 역량을 파악하지 못한점
이다. 경험해보지 못한 기술스택에 대해서 정해진 시간내에 "제가 그것까지 해보겠습니다" 라는 막연한 자신감이 동료 백앤드 개발자를 힘들고 초조하게 했던것이라 생각한다.
도전성이라는 부분이 매우 중요하면서 그에 맞는 책임감을 갖고 해결했어야 하지만 아무런 기초지식 없이 TypeSrcript, Socket.Io, Redis를 할 수 있을것이다 라고 자신했던 부분에 대해 생각해보게 되었다.
게임로직 code flow를 정리있게 작성하지 못한점도 아쉽다. 시간에 여유가 있었다면 가능했을까? 싶지만.. 마감 시간을 맞추기 위해서 일단 생각하고 작성하는 시간보다 console.log()
로 한줄 한줄 찍어가며 작성해서 기능을 우선 완료로 하는것을 목표로 해라 라는 조언을 무작정 따라간 것을 조금은 후회하고 있다. 전체적인 그림을 보면서 작성하지 못했던 부분이 아쉽게 느껴지고, 이후에 유지 보수를 할 때 정말 힘들다는 것을 깨우쳤다.
.
.
.
최종 프로젝트를 진행하면서 내가 어떤 부분들이 부족했는지 알 수 있었다. 항해99를 달려오면서 빠르게 실력이 늘었으나, 그만큼 놓친 기본기들, 유지 보수를 위한 디자인 패턴, type 오류를 최소화 하기 위한 Typescript, DB들의 장단점 사용성 등에 대해서 물음표를 던져가며 기초를 탄탄하게 다져갈 생각이다.