소규모 프로젝트를 진행하면서 배운점
소규모 프로젝트를 진행해보며
학부생활을 하며 지금까지 여러 프로젝트를 경험해볼 수 있었습니다.
아무것도 몰랐던 첫 프로젝트부터, 일 년이 지난 지금까지 협업을 겪으며 배우고 느낀 점을 적어보려고 합니다.
기획의 중요성
좋은 서비스를 만들기 위해서는 좋은 기획이 필요합니다.
단순한 아이디어로부터 시작한 프로젝트도 , 여러 사람의 이야기를 더해나가면 좋은 프로젝트가 될 수 있습니다.
학부 레벨에서는 이러한 과정을 팀플 또는 동아리 활동밖에 없기 때문에, 다양한 경험을 하기 위해서는 외부 대회나 행사에 많이 참가해보는 것이 좋은 것 같습니다.
프로젝트를 설계하는 방식
캡스톤 디자인 과목에서 진행한 프로젝트에서 순서도와 와이어프레임에 대해서 멘토님께 자세히 배울 기회가 생겼습니다.


먼저 순서도를 작성하고 , 순서도를 기반으로 와이어 프레임을 만듭니다.
이때 가장 중요한 것은 모든 팀원이 같은 생각을 가지고 있어야 한다는 점입니다.
지금까지 프로젝트를 하면서 힘들었던 점으로, 구두로 진행된 회의가 많았는데 문서로 정리하지 않다보니 했던 얘기를 또 하고 , 같은 질문을 반복하는 일이 자주 발생했습니다.
이를 방지하기 위해서라도 정확한 문서를 만들어서 이것을 베이스로 개발을 진행할 수 있어야 합니다.
또한 애자일 프로세스에 대해서도 배울 수 있었습니다.
어떻게 회의를 진행해야 할까?
기존의 주먹구구식 회의에서 벗어나기 위하여 타 프로젝트들을 둘러보기 시작했습니다.
그 중 애자일 프로세스 중 한 사이클을 빠르게 진행해보는 스프린트에 대해서, 구글 스프린트를 본따 진행된 테오의 스프린트의 회고 글을 재미있게 읽고 적용해보게 되었습니다.


원래 더 많은 과정이 있지만, 캔버스 → 아이디어 스케치 → 구현 세 단계로 축소하여 적용하였습니다.
팀 캔버스에서는 팀원들의 생각을 자유롭게 적어보며 가벼운 아이스 브레이킹을 진행합니다.
아이디어 스케치에서는 아이디어를 적어보며 발표를 통해 투표로 최종 아이디어를 선정합니다.
구현 에서는 아이디어에 대해 각자 기능을 그려보며 최종적인 구현을 하기 위한 이야기를 나누었습니다.
이런 과정을 따라가다 보니 자연스럽게 하나의 결과에 도달할 수 있었습니다.
최종 구현된 내용을 차치하고서라도 이 과정을 도입한 결과 자체에는 팀원 모두 만족하는 모습을 보았습니다.
어떻게 협업을 해야할까?
현업에서는 github는 물론, slack,jira와 같은 다양한 협업 툴을 사용한다고 알고 있습니다.
그 중 jira 까지 배우기에는 타 팀원들에게 러닝커브가 있다고 생각되어 slack을 이용하여 팀원간의 소통을 진행했습니다.
github에서는 팀 organization을 만들어 프론트엔드와 백엔드 레포지토리를 나누었으며,
project를 이용하여 각 레포지토리의 이슈를 스프린트별로 트래킹할 수 있도록 하였습니다.

프로젝트들에서 react를 사용하였는데, 좀 더 나은 아키텍쳐 구조를 구현하기 위하여 많은 고민 끝에 좋은 글을 보게되어서 많은 참고가 되었습니다.
여기에 airbnb 자바스크립트 스타일 가이드를 베이스로 하여 eslint와 prettier 규칙을 적용하여, 같은 팀원들 사이에 동일한 코드 문법을 적용하려고 노력하였습니다.
결론
항상 프로젝트를 진행하면서 느끼는 것이지만, 진행하면서 이 부분은 이렇게 할 걸, 이 방식보다 다른 방식으로 진행하는게 더 좋았을텐데 하는 부분이 존재합니다.
그래도 프로젝트를 진행하면서 다음 프로젝트에는 더 나은 방식으로 해나갈 수 있다는 생각이 들면서
성장해나가고 있다고 느끼고 있고, 계속해서 좋은 방식을 찾아 나가는 개발자가 되고 싶습니다.