파이널 프로젝트 회고
파이널 프로젝트
교육원 마지막 프로젝트로 나를 포함한 총 4명의 팀원과 함께 진행하게 되었고,
프로젝트를 진행하면서 있었던 해프닝과 느낀 점, 아쉬웠던 점 등을 기록해보려 한다.
글제주 없어서 두서없음 주의... 최대한 노력해 보겠음!
1. 시작부터 위기
사실 프로젝트를 시작했을 당시 팀원은 총 5명이었다.
파이널 프로젝트 1주 차 2번의 회의를 통해 기본설계를 마무리하고 각자 개발파트 분배까지 끝난 시점이었다.
솔직히 이분에게 어떤 기능을 맡겼었는지 정확히 기억은나지 않는다(나가신 후 너무 정신없이 만들어야 했기 때문에...)
기억이 나는 부분은 이분이 자주 자신 없어하는 모습과 가능한 쉬운 파트를 받기를 원하셨었기 때문에 "너무 부담스러워하지 마시고 저희도 다 배우는 입장이니까 같이 물어보면서 잘해보자" 말씀드리고 간단한 프론트단 개발과 차후의 기능테스트를 맡겼었던 것 같다.(백엔드 교육과정이었지만 백엔드 개발이 거의 없으셨던 것 같다...)
그렇게 본격적으로 각자 개발에 들어가 처음으로 병합해야 하는 일자가 되었는데 이분이 아무런 연락도 없고 연락을 받지도 않았다. 그래서 일단 4명이서 진행도 체크를 하고 병합을 시도해보고 있었는데 불안한 예감은 피해 가는 법이 없었고 팀원 단톡방에 장문의 메시지가 올라왔다.
내용은 요점만 적자면 자신의 실력이 너무 부족한 것 같고, 팀원들에게 피해 줄 것이 부담스러워 팀을 나가게 되었다는 내용이었다. 처음부터 약간 불안한 감이 있었기도 하고 선택은 존중하기 때문에 아쉬운 마음이 먼저 들었었는데 여기서 문제는 부담스럽고 피해주기 싫으셔서 나가시는데 그동안 작업해 두신 게 전혀 없으셨다는 점이었다...
불행 중 다행이라면 이분이 맡았던 파트가 크지 않았고 수정할 코드가 없으니 차라리 잘되었다고 서로서로 다독이면서 이분이 맡으셨던 프론트가 메인페이지, 모임페이지, 정보수정폼 등에 사용될 카테고리 이미지 포함 부가 기능이었을 것인데 그 부분까진 메인페이지 기능을 담당한 내가 포함해서 다시 만들기로 하고 4명이서 어찌어찌 다시 흔들렸던 마음을 다잡고 다시 이어나갔었다.
이날 팀원들의 인성이 얼마나 중요한지 다시 한번 느낀 것 같다. 그 서로서로 으쌰으쌰? 하는 분위기로 이어졌던 게 마음안정에 큰 힘이 되었던 기억이 나는데 결론적으론 프로젝트 시작부터 너무나 정신없었던 것 같다.
2. 생각대로 되는 게 없네!
토이 프로젝트를 제외하고 첫 프로젝트이자 첫 팀플레이! 긴장감, 부담감 200% 풀충전한 상태에서 개발을 시작했다.
우리 팀은 모임 커뮤니티 어플인 소모임을 벤치마킹하여 모임이나 활동 커뮤니티 사이트를 만들어보기로 했는데, 여기에서 내가 맡은 부분은 마이페이지 전체 CSS와 메인페이지 CSS, 기능으로는 검색, 카테고리별 필터, 모임개설기능, 모임리스트 출력하기, 회원이 가입하거나 찜한 모임 목록출력을 담당하였다.
프로젝트를 진행하면서 기술직은 역시 경험이 중요하다는 것을 뼈저리게 느낄 수 있었다.
첫 프로젝트는 말 그대로 모든 부분이 미숙했다. 협업 플랫폼으로 사용한 GitHub부터 시작해서 교육원에서 배운 방식이 아닌 다른 방식으로 구현하게 된 대부분의 기능이 생각처럼 구현되지 않았고, 데이터의 흐름도 익숙하지 않아 굉장히 당혹스러웠었다. (아마 이때부터였던 것 같다... 밤, 낮 없는 구글과 나의 연애??? 의 시작이)
프로젝트를 진행하면서 낮았던 자신감이 점차 오를 줄 알았는데 프로젝트 초반에는 오히려 더 떨어졌었던 것 같다.
이래저래 굉장히 산이 많았는데 하루종일 검색과 질문을 해가면서 진짜 악착같이 개발했던 것 같다.(이 기간만큼 하루가 짧다고 느낀 기간도 드물었다.) 다른 분들이 본다면 뭐 그렇게 어려운 건 없는 것 같은데라고 할 수도 있지만 나는 어쩔 수 없는 프로그래밍 초짜였다...
3.DB야 살려줘...
프로젝트를 진행하면서 구현페이지, 구현기능, 담당파트 분배 등 여러 가지 기존계획에서 수정해야 하는 부분이 생겼는데, 이런 수정사항 중에서 제일 난감했던 부분이 작업진행 중에 DB를 수정할 일이 생길 때였다.
개발이 시작한 후에는 DB는 가능하면 수정하지 말아야 한다는 것은 알고 있었지만 나름 꼼꼼히 설계한다고 했던 DB는 외래키 투성이에 NOT NULL도 없던 칼럼이 여럿 있었고, 필요한 컬럼이 누락된 경우도 있었다. 또 카테고리의 경우에는 종류가 고정되어 있어서 따로 테이블을 만들 필요 없이 배열함수 하나 만들어서 했어도 구현이 가능했을 텐데 그때는 왜 생각을 못했는지... 괜히 DB용량만 더 먹었다.
솔직히 기존에 없던 새로운 테이블을 추가하는 것은 큰 문제가 되는 건 아니었는데, 문제는 기존테이블을 수정할 경우였다.
보통 DB에 문제가 있다는 걸 깨닫는 순간이 개발이 어느 정도 진행된 후였는데 이때 기존 테이블을 수정하면 수정한 테이블과 관련 있는 모든 메서드와 클래스, 쿼리문을 수정해줘야 하기 때문에 빡빡한 기간에 초보 개발자의 멘탈을 흔드는 최악의 수정사항이었다.
4. 마무리!
여러 산을 넘어 드디어 발표날이 왔다.
한 달 남짓한 기간 동안 팀원들 모두 고생 많았다고 서로서로 다독이면서 발표순서를 기다렸다. 발표전까지는 굉장히 떨렸었는데, 혹시라도 발표 중에 생각지 못한 오류가 생기진 않을지, 다른 팀에 비해서 결과물이 부족하진 않았을지 등등 걱정이 많았다. 막상 발표를 시작하니 굉장히 순탄하게 진행됐고, 다른 팀에 비해서도 그렇게 부족해 보이지도 않았다. 구상한 기능도 다 만들어서 첫 프로젝트론 결과물이 나름 만족스러웠다고 생각한다.
발표까지 끝내고 나니 후련하기도 하고 긴장도 풀리면서 멍했던 것 같다. 엄청 힘들었는데 뭔가 순식간에 지나가버렸다. 더 잘할 수 있지 않았을까란 아쉬움이 남기도 했는데, 그건 다음 프로젝트 때 생각해 보기로 했다. 그렇게 교육과정에서 가장 험난했던 파이널 프로젝트가 마무리되었다.
5. 느낀 점
우선 프로젝트 기간 동안 같이 고생해 준 팀원들에게 감사하다고 말하고 싶다.
협업 시에 팀원 간의 케어가 얼마나 중요한지 잘 알 수 있었고, 다들 어렵고 힘들어서 예민해질 때마다 서로서로 다독여주는 분위기가 너무 좋았고, 나도 많은 위기가 있었지만 팀원들 덕분에 끝까지 잘 완주한 것 같다.
위에서도 언급했지만 첫 프로젝트의 결과물로는 그 과정이나 전체적으로나 만족스러웠다.
잘하시는 분들이 볼 때는 엉망진창의 프로젝트이겠지만 초반과는 달리 마지막에는 떨어졌던 자신감도 회복할 수 있었다.
물론 아직 클린코드는 어떻게 작성해야 하는 것인지, 테스트코드작성은 어떤 식으로 해야 옳은 건지, 디버깅은 어떤 식으로 해야 효율적인 것인지 그 외에도 아직도 너무나 배우고 발전시켜야 할부분이 많지만, 처음에 뭘 해야 할지 전혀 모르겠던 상태와 비교하면 지금은 어떤 것부터 시도해봐야 하는지는 알고 있는 상태가 되었으니 이런 점에서 이번프로젝트가 성장에 도움이 되었다고 생각한다.
프로젝트를 진행하면서 협업에 가장 중요한 것은 책임감과 팀원 서로 간의 배려라고 생각한다. 물론 실력까지 겸비했다면 금상첨화일 것이다. 하지만 몇몇의 실력이 좋다고 팀플레이가 원활하게 흘러가지는 않았다. 우리 팀만 해도 그랬고, 다른 팀도 비슷한 일이 많이 있었다고 하는 것 보면 말이다... 팀원이 너무 자기 생각만 하거나 약속을 지키지 않거나, 금방 포기해 버려서 힘들어한 사람들이 많았다. 나는 팀원 한 명 빼고는 다들 좋은 분들이었기 때문에 나름 러키였다고 생각한다. 다시 한번 고생해 준 팀원들에게 감사를 전한다.
6. 아쉬운 점
1) GitHub에 자신이 없어서 너무 팀원에게만 의지한 점
깃 자체는 팀원들 모두 사용해 본 적이 없었기 때문에 교육원에서 배웠던 이클립스를 통해 깃허브 리포지토리에 소스를 올리는 식으로 협업을 진행하였다. 때문에 이클립스에서 병합브랜치를 따로 만들어서 소스를 합치고 오류수정 후에 메인브랜치에 푸시하는 방식으로 작업했는데, 프로젝트 시작 전에는 이 풀 푸시도 실수를 많이 했었지만 다행히 파이널 시작 전에 따로 공부를 해둬서 냅다 메인브런치에다 푸시해 버리는 실수는 하지 않았지만 문제는 병합하는 게 너무 자신이 없어서 조장에게만 의지했던 것 같다. 지금생각해 보면 그때 실수해 보는 게 맞지 않았을까 하는 아쉬운 점이 남는다.
2) 걱정이 너무 많았다.
아는 게 적을수록 걱정이 많아지는 건 당연하다 생각하지만 어쩌면 마음 편히 실수해볼 수 있는 마지막 기회일 수도 있는데혹시라도 피해줄까봐 다른 시도를 회피하고 전체적인 틀은 강사님의 코드를 기본으로 쓰려했던 게 많았던 것 같다.
빨리 나만의 코딩스타일을 찾을 수 있으면 좋겠다...
3) 비동기에대한 이해부족
프로젝트가 시작하고 어려웠던 부분중 하나가 javascript작성이었는데 이중 Ajax를 활용한 비동기 처리가 아직 제대로 이해가 되어있지 않은 상황이었다. 때문에 프론트단에서 처리할 수 있던작업도 jstl에 의지해 처리해서 코드도 결과물도 썩 좋지 않았다. 프로젝트 중반부터는 Ajax를 틈틈히 학습해서 대부분 프론트단에서 처리하고 기존에 jstl로 작업했던 코드도 어느정도 수정했지만 기간부족으로 jstl을 전부 수정하지 못했던게 많이 아쉬웠다.
4) 체크리스트를 제대로 작성하지않았다.
개발을 시작하기전 팀원들끼리 모여서 주제를 정하고, 클레스다이어그램, ER다이어그램, DB등등 설계를 한뒤에 파트분해를 했었는데 파트분배 후에 각자 기능구현 체크리스트를 작성하기로하고 마무리를 했다. 문제는 내가 체크리스트를 너무 대략적으로 짜놓고 개발이 시작한 후에도 확인하면서 진행하지 않았다는 것이다.
그래서 개발 막바지에 점검을 해야했는데 기존에 대략적으로 짜놓은 체크리스트랑 너무 다르고 어떤 기능이 덜 만들어 졌는지, 완성된 것인지 명확하게 확인이 어려워 벤치마킹한 웹사이트를 계속 들어가서 하나하나 확인해야만 했다.
조금 편해지려다 그대로 돌려받았다 ㅠㅠ.
이상으로 두고두고 반성하기위한 회고글을 마칩니다!