항해99 본 정규과정에 들어가기 앞서, 5명의 팀을 이뤄 약 3일간 진행했던 웹 미니 프로젝트에 관련한 회고를 작성해보려고 합니다. 짧다면 짧은 시간이지만, 느낀점이 많았던 미니 프로젝트 였습니다.
개발 공부가 처음이신가요? 처음이 아니라면, 어느 정도 기간을 가지고 어떻게 학습을 하셨나요?
- 저는 전공자(학사)이며, 약 2년 정도 백엔드 개발 경력이 있습니다. 프로그래밍 언어는 PHP를 사용했었고, 주력 언어를 Java로 변경하기 위해 공부 중입니다. 퇴사 후 Java, Spring 프레임워크를 6개월 정도 독학하였습니다. 전 배달의민족 CTO '김영한' 님의 인프런 강의를 참고하여 공부하였습니다.
내가 항해99에 참여한 계기는 무엇인가요?
- 저는 독학을 하면서, 팀 프로젝트를 경험해 보고 싶다는 생각을 했습니다. 이전 근무했던 회사는 git과 같은 버전관리 시스템을 활용하지 않았습니다. 그래서 특히 git과 github를 활용한 팀 프로젝트를 경험해 보고 싶은 마음이 컸습니다. 팀 프로젝트로 저의 커뮤니케이션 역량 강화, git을 활용한 팀 협업 역량 강화에 몰입해 보고 싶었습니다. 기간도 3개월 정도로 짧은 편이며, 9 to 9 으로 몰입할 수 있는 환경이 만들어지는 것에 긍정적인 마음을 가지고 참여하게 되었습니다.
개발자의 역할을 수행하는 데에 있어 나의 강점과 연관된 부분은 무엇이라고 생각하나요?
혹은 보완, 개선하고 싶은 개인 역량이 있나요?
- 저의 강점은 커뮤니케이션 능력이라고 생각합니다. 팀 프로젝트를 진행할 때, 팀원들 간에 원활한 소통은 매우 중요하다고 생각합니다. 다른 팀원의 의견을 존중하고, 내 의견과 어떤 차이가 있으며 어떤 장점과 단점이 있는지 생각하고 설명할 수 있는 능력이 강점이라고 생각합니다.
- 백엔드와 프론트엔드는 서로의 관심사가 다릅니다. 프론트엔드 분과의 소통을 진행할 때, 백엔드의 관심사에 초점을 맞추는 게 아닌 프론트엔드 분이 잘 이해할 수 있게 설명하는 방법을 보완, 개선해 보고 싶습니다.
항해99 수료 후, 어떤 모습으로 성장하고 싶나요?
- 팀원과의 원활한 소통을 기반으로 프로젝트를 진행할 수 있는 개발자가 되고 싶습니다. 서로 알고 있는 내용이 다른 동료들과 다양한 개발 관련 대화를 진행하여, 가르쳐 주기도 하고 배우기도 하며 서로 성장하는 선한 영향력을 끼칠 수 있는 개발자로 성장하고 싶습니다.
5명이 한 팀이되어 프로젝트를 진행
우리 팀은 5명이 한 팀이 되었습니다. 저를 포함하여 3명은 개발경험이 있었고, 나머지 2명은 개발 경험이 없으셨습니다. 회의를 진행해서 프로젝트의 컨셉을 잡게되었습니다. 이름은 투어룩(Tour look). 블로그 형식의 여행지를 자유롭게 공유할 수 있는 커뮤니티를 개발하는게 목표였습니다. 3일도 되지 않는 시간이고, 개발경험이 없으신 분들이 계시기 때문에 프로젝트의 범위를 기본적인 CRUD 정도만 구현하는 것을 목표로 하였습니다. Python, Flask, HTML, CSS, SQLite 를 활용한 프로젝트를 진행하게 되었습니다.
제가 개발 경험이 제일 많았기에, 이 프로젝트에서 팀장을 맡게 되었습니다.
git을 활용한 프로젝트 협업
우리 팀은 git을 활용한 협업을 어떻게 진행해야 할 지 고민이 많았습니다. 저는 git 협업 경험도 없던 상황이었고, git을 활용해서 프로젝트 협업을 진행했던 분이 한 분 계셨는데, 협업을 하신지 오래되셔서 기억이 잘 안나시던 상황이었습니다. 저희는 프로젝트가 시작된 첫 날, git으로 어떻게 효율적으로 협업을 해야할지 생각하느라 하루를 모두 보내게 되었습니다.
그렇게 회의를 통해 정해지게 된 우리 팀의 전략은 아래와 같았습니다.
- main : 최종 배포할 브랜치
- develop : 다음 출시할 버전을 개발하는 브랜치
- feature : 기능 개발 및 버그 수정을 할 때 분기하는 브랜치
해당 브랜치 전략을 사용하니 팀 구성원이 main 코드를 중심으로 새로운 기능 개발을 안전하고, 독립적으로 할 수 있다는 장점이 있었습니다.
또한 우리는 각자의 버전이 너무 멀어지지 않게, 누군가 기능을 완성해서 develop 브랜치에 merge를 진행하게 되면 팀원 전체에게 알렸습니다. 팀원들은 각자 작업을 잠시 멈추고, develop 브랜치로 이동하여 pull 해오고, develop의 갱신된 코드를 가져온 다음에 각자의 작업을 다시 이어가도록 아래와 같은 규칙을 정했습니다.
- 자신이 feature/list 브랜치에서 작업중 팀원이 develop 브랜치에 merge 를 한 상황 가정
- 내 진행 중인 작업 git stash (진행 중인 작업 임시 저장) 후 develop 브랜치로 이동
- 바뀐 원격 저장소의 develop 내용을 pull 해온다 --> git pull origin develop
- 다시 작업 중이던 feature/list로 복귀
- 새로 추가된 develop 내용을 merge 하여 갱신 --> git merge develop
- git stash apply (임시 저장 작업 불러오기) 후 다시 작업 진행
이렇게 develop의 최신 코드를 갱신하며 작업을 이어가다보니, 각자의 버전이 너무 멀어지지 않게 유지되어 merge conflict가 잘 발생하지 않았고, merge conflict가 나더라도 수정 할 곳이 매우 적었던 장점이 있었습니다.
개발 경험이 처음이셨던 분들
개발 경험이 처음 이셨던 분들은 이번 프로젝트가 굉장히 힘드셨을 것 같다는 생각이 들었습니다. 이해 안가는 부분 투성이이고, HTML, CSS 가 무엇인지도 모르는 상황에서 프로젝트는 진행됐습니다.
한 분도 빠짐없이 팀원분들 모두 다함께 프로젝트를 진행하고 싶었고, 같이 이끌고 가고 싶었습니다. 기본 개념들을 차근차근 설명해드리며 진행했지만, 개발 시간이 너무 부족했기에, 개발경험이 있던 사람들끼리 먼저 작업을 진행하였었습니다. 그러다가 중간중간 작은 단위의 기능을 개발 경험이 처음 이셨던 분들께 넘겨드리기로 했습니다.
그렇게 한 분은 도움받으시며 댓글 기능을 완성하시게 되었고, 한 분은 로그인 페이지의 UI를 완성하셨습니다.
개인적인 생각으로, 이번 항해99 웹 미니 프로젝트 전에 사전스터디 커리큘럼에서 'HTML, CSS, Javascript 만을 활용한 프로젝트 만들기 & git을 활용해보기' 가 있었다면, 그 분들께 지금 웹 미니 프로젝트가 훨씬 수월하지 않았을까 하는 생각이 들었습니다.
프로젝트 진행중 너무 신경을 못 써드린 것 같아 죄송하기도 하고, 공부를 도와드리고 싶었습니다. 이번 프로젝트가 끝나고 공부를 해야할 방향이나, 어떤 순서로 공부하면 좋을지 등등 경험있는 사람들이 방향을 잡아주며 도와드렸습니다. 제가 처음 개발을 시작했던 때랑 너무 똑같은 모습이셨습니다. 아무것도 손도 못대겠고, 뭘 해야할지도 모르겠고. 제 경험을 바탕으로 많은 조언들을 드렸고, 포기하지 않으려는 모습에 저도 깊은 감명을 받았습니다!
프로젝트 완성
배포 : https://chiz.pythonanywhere.com
github repository : https://github.com/yoonion/tour-look-project
시간이 부족해 계획한 기능들을 모두 개발하진 못 했지만, 팀원들과 함께 협업을 맛 볼 수 있는 미니 프로젝트 였습니다. 팀장으로서의 역할을 잘 해냈는지는 의문이지만, 부족해도 잘 따라와 주신 우리 팀원분들께 감사하다는 말씀 전해드리고 싶습니다.
KPT 회고
Keep 이번 프로젝트에서 진행한 과정 중 다음 프로젝트에서 유지하였으면 좋을 부분
- 다양한 브랜치 전략을 참고하여 버전 관리를 하는 과정이 다음 프로젝트에서도 유지 되었으면 좋겠습니다.
- 밝은 팀 분위기가 너무 좋았습니다.
- 미니 프로젝트를 진행하면서 협업 시의 소통하는 방법에 대해 배워서 좋았습니다.
Problem 문제점 : 이번 프로젝트에서 발생한 문제점을 객관적으로 판단 원인 : 문제점이 발생한 원인을 객관적으로 판단
- git에 대한 이해도가 부족한 상태로 프로젝트를 시작해서 처음에 문제가 발생했습니다.
- 문제점 : feature 브랜치에서 작업중, 갱신된 develop 브랜치를 pull 받기 위해 브랜치를 이동했다가 돌아오는데 작성했던 코드가 사라짐.
- 원인 : 작업 중이었던 브랜치에서 다른 브랜치로 이동할 때에는 꼭 commit이나 stash로 자신의 작업 사항을 저장하고 이동해야 하는데, 저장하지 않고 이동해서 발생했던 문제.
- 프로젝트 초기에 팀원의 역할을 제대로 구분하지 못 했었습니다.
Try 해당 문제점을 해결할 수 있는 현실적인 방안 제시 다음 프로젝트를 위해 해야 할 노력 + 이번 프로젝트를 통해 느낀점
- 현실적인 방안과 해야 할 노력
- git의 기본적인 원리를 이해하기
- git과 관련한 영상 및 자료 공부 후 다양한 상황 만들어보기
- 체크리스트를 만들면서 정확한 역할 분담하기
- 프로젝트에 대한 느낀점
- 열심히 한 우리 모두가 최고다!
- 첫 협업이지만 밝은 분위기의 팀원들이 좋았고 이번 프로젝트에서 부족한 점을 잘 보완해서 다음 프로젝트에서 잘 적용해 보고 싶습니다 😄