최종 팀 프로젝트
어찌저찌 한달 조금 넘는 기간의 최종 팀 프로젝트가 마무리 되었다.
역시 사람은 급해야 빠르게 배우는지 팀 프로젝트의 제한 시간이 있다보니 꽤나 몰입해서 공부할 수 있었다.
프론트엔드를 공부하면서 무뎌졌던 백엔드 감도 다시 익히고 기능 개발을 하면서 제법 많은걸 배웠다.
아무래도 그동안 공부하고 경험한게 있다보니 첫번째 팀 프로젝트를 하던 때보다 훨씬 능숙하게 할 수 있었던것 같다.
배운 점
팀 프로젝트 기간동안 배운 점, 느낀 점이 많았다.
그걸 지금 기억날 때 잊기 전에 간단하게 정리해볼까 한다.
1. 기존에 해보긴 했지만 이해하기 보다는 그저 따라만 했던 것들을 복습
기본적인 CRUD나 소셜 로그인, EC2 배포하기, 스프링 시큐리티, 테스트 코드 작성 등을 강의나 책으로만 접했었다.
그래서 매번 해봐야지 해봐야지 생각만 하고 막상 하지는 않아서 점점 머리 속에서도 잊혀가고 있었다.
하지만 이번 프로젝트에서 적극적으로 테스트코드도 작성하고, 스프링 시큐리티도 이해하고 적용해보았다.
또한 EC2 배포도 전엔 커맨드만 따라치면서 했었다면 이번엔 리눅스에 대한 이해도가 높아져서 쉽게 할 수 있었다.
2. 새로운 기술에 도전하기 두려워서 미뤄뒀던 것들에 대한 도전
괜히 이름만 듣고 쫄아서 못썼던 레디스를 사용해보았고, AWS나 각종 서드파티 API를 이용하기 위한 SDK 사용법을 익힐 수 있었다.
기존의 AWS ELB와 Route53을 이용한 HTTPS 적용법과 다르게 Nginx를 활용하여 certbot으로 HTTPS를 적용할 수 있었다.
이메일 발송 및 인증도 해보고, 웹소켓을 이용하여 채팅 기능도 구현해보았다.
3. 팀원의 코드를 보며 잊고 있던걸 상기하고 새로운 것을 배움
테스트 코드 작성 시 DB를 롤백 해야하는데 @Transactional 테스트로 쉽게 롤백할 수 있음을 다시 기억할 수 있었다.
또한 스웨거를 써본 적이 없어서 팀원의 코드를 참고하며 스웨거 사용법과 여러 기능을 배울 수 있었다.
느낀 점
완벽한 계획은 없다
이번 팀에서는 팀원들이 너무 완벽하게 계획을 세워두고 진행을 하고 싶어 했던것 같다.
그러다보니 너무 완벽하게 계획을 세우고자 시간을 들이고, 결국 그렇게 세운 계획도 각종 이유로 수정되는걸 다시 보았다.
역시 최대한 러프하게 정하고 진행하면서 수정하는게 가장 바람직한 방법인것 같다.
그리고 그런 수정 요청에 대응하기 용이하도록 유지 보수에 좋은 코드를 작성하는법의 중요성을 다시 느꼈다.
팀원의 코드에서 본 안티패턴
솔직히 웬만하면 가독성 신경써서 작업하지 않나? 생각 했는데 그런걸 생각 못하는 사람도 꽤 있단걸 알 수 있었다.
우선 코드 리뷰 할때부터 읽기 굉장히 불편하고, 100보 양보해서 내 코드는 나만 다룬다면 문제가 되지 않을지도 모르겠지만
팀 프로젝트에서는 팀원과 코드를 공유한다고 생각해야하기 때문에 가독성은 굉장히 중요한 요소임을 알 수 있었다.
팀원의 코드에서 발생한 버그를 디버깅 하면서 가독성이 너무 안좋아서 고생했다.
아래는 간단한 예시다.
왼쪽이 팀원이 작성한 코드고, 오른쪽이 내가 버그 수정을 하면서 가독성이 너무 나빠서 고친 코드다.
들여쓰기를 전혀 활용하지 않고, 파라미터가 여러개일 때 객체를 전달하지 않고 하나하나 늘여쓰는걸 보고 너무 고통스러웠다.
원활한 소통의 중요성
제한된 시간 동안 우선 완성부터가 제일 목표인데 연락이 잘 닿지 않으면 다른 사람의 작업 속도에 영향을 미칠 수 있단걸 느꼈다.
PR을 올리면 빠르게 처리 되어야 그 PR과 연동된 다음 작업을 하기 편한데 하루 넘게 PR을 확인하지 않는걸 보면 속이 탔다.
연락이 잘 안닿다 보니 버그가 발생해도 대부분의 버그는 내가 처리하곤 했다.
공부하는 입장에서 보면 뭐 도움이야 꽤 되긴 했겠지만 코드 가독성이 너무 나빠서 정말 애먹었다.
팀 프로젝트를 진행하면서 역시 소통이 제일 중요한듯... 뭐가 됐든 일단은 연락부터 돼야 함을 느꼈다.
사이드 이팩트 만들지 않기
클린코드나 실용주의 프로그래머 같은 인사이트 출판사에서 나온 개발서적류를 보면 보이 스카웃 규칙을 자주 언급한다.
들어갈때 보다 더 깨끗하게 하고 나오라는 의미인데 사이드 이팩트를 만들지 않는 코드 작성하기도 여기에 포함된다고 생각한다.
팀원이 테스트 코드를 작성하긴 하는데 신경 쓰이는 점이 너무 많았다.
딱히 그럴만한 사유 없이 매 테스트마다 컨텍스트를 초기화 해서 테스트 속도가 너무 오래 걸리게 작성했다.
또한 테스트 순서에 따라 성공, 실패 여부가 달라지는 테스트를 자꾸 작성해서 고치도록 설득하느라 힘들었다.
뭐 덕분에 나도 더 좋은 테스트 코드를 작성하는법을 익힐 수 있어서 얻은것도 있다만...
아무튼 이러니 저러니 해도 잘 마무리 되었다.
한 달 조금 넘는 시간동안 꽤나 바쁘게 작업했던것 같다.
이제 그간 바쁘다고 미뤄뒀던 블로그 글도 다시 쓰고 이력서 다듬어서 다시 제출해야지.