PreProject 후기

김소희·2023년 6월 14일
0

부트캠프에서 섹션 4까지 마치고 프로젝트 기간이 되었다. 드디어 의미있고 재미있는 코딩을 할 생각에 기대되었지만, 여러 걱정도 있었다. 혹시 기간 안에 못 끝내면 어쩌지? 내 몫을 다 해낼 수 있을까? 프론트엔드가 요구하는 것의 구현을 못해주면 어쩌지?와 같은 고민들이었다. 하지만 지금 생각해보면 내가 부족하다는 걸 알고 있기에 고민이 들었고, 그 때문에 더 열심히 하려고 애썼던 것 같다.

이번 프로젝트는 https://stackoverflow.com/ 사이트의 클론을 하는 것으로 정해져 있었다. 스택오버플로우는 개발자가 질문을 하고 답변을 받는 서비스로, Q&A 게시판보다 더 진화한 형태다.

팀 이름은 내가 의견 제시했던 "Hello, World!"로 결정되었다. 코딩을 처음 배우는 사람들이 기본적인 문법과 출력 기능을 확인하는 데 사용되는 'Hello, World!'처럼, 나의 첫 프로젝트가 작고 간단할지라도 정상적으로 작동하기를 바라는 마음으로 지었다.

이후에는 요구사항 명세서(SRS)와 사용자 요구사항 정의서, 화면 정의서, ERD를 만들기 위해 길고 긴 회의가 반복되었고, 나는 불만이 쌓여갔다. 구현 시간이 부족할까봐 걱정되기도 했고, 이런 것들은 알잘딱깔센으로 알 수 있는 것들인데 문서화하는 시간이 너무 아깝다고 생각되었기 때문이었다. 그래서 내가 하겠다고 말을 꺼냈고 오래동안 고민하기보다는 양치를 후다닥 해치우듯 작성했다.

하지만 프로젝트가 끝난 후에 가장 후회되는 일이 사용자 요구사항 정의서를 혼자서 작성했던 일이었다. 변수 이름들을 제각기 다르게 지어서 나중에 변경하는 작업이 시간을 제일 허비하게 만들었고, 요구사항 정의서를 만든 나의 머릿속에는 모든 것이 체계적으로 정리가 잘 되어있었지만 나머지 팀원들은 엔드포인트나 담아주어야 할 정보를 몰라서 혼란스러워 했었다. 그래서 자꾸 물어보았고, 나는 계속 알려주면서도 귀찮은 마음이 생겼었다. 다행히도 팀원들은 내가 설명해준 것을 빠르게 이해하고 적용해나갔다.

그렇게 3일 뒤에야 나는 코드를 짤 수 있게 되었다. 내가 맡은 파트는 회원과 태그였는데, 회원이 있어야 다른 작업이 수월해질 것 같아서 하루만에 구현을 마치고 빠르게 공유했다. 테스트도 해보지 않은 채로 보내면서도 이 편이 더 도움이 될 것이라고 생각했었는데, 나중에는 양쪽에서 오류를 수정하다보니 머지 과정이 번거로웠다.

다음 날 태그도 CRUD를 마치고 이제 한숨 돌리나 싶었는데, 백엔드 팀원 한 분의 작업 속도가 현저히 느리다는 걸 알게 되었고, 코드가 올라오지 않아서 걱정을 했었는데, 아니나 다를까 수업 진도를 제대로 따라오지 못해서 어려워하고 계셨다. 따로 시간을 내서 컨트롤러, 서비스, 레포지토리, DTO와 엔티티, 매퍼 구조를 설명드렸지만, 결국 포기하셔서 질문과 투표까지 모두 맡게 되었다. 그래서 급하게 저녁 시간에 코드를 작성했는데, 여러 파일들을 가지고 있었는데 잘못된 파일에서 작업을 하고 지워버리는 실수를 한 줄도 모르고 기분 좋게 잠들었다가, 다음날 아침 텅 빈 코드를 보면서 느꼈던 감정이 얼마나 괴로웠는지 모른다.

휴지통을 바로바로 비우는 버릇이 있었는데, 다음부터는 프로젝트 기간에는 휴지통을 절대 비우지 않겠다고 다짐하며, 복구 비용이 10만원씩 든다는 걸 찾아본 후에 어제 만들었던 코드들을 다시 작성하기 시작했지만, 프론트엔드에서는 API 작업을 하고 싶다고 하고, 현재는 매핑 오류로 실행조차 되지 않는 상태여서 기다려 달라고 이야기하면서 무척 미안했다. 프론트와 백엔드 작업이 병렬적으로 처리될 수 없는 걸 알고 있었기에 저녁까지 작업했었는데, 허무한 실수로 계획에 차질이 생겨버려서 속상했다.

하지만 이후에는 오류를 찾아내는 일에도 익숙해지고, 변수 이름을 일일히 바꾸는 것밖에 방법을 몰라서 수시간을 소모하기도 하고, 다른 사람들에게 검색에 대한 구현을 어떻게 하는지 물어보기도 하고, 때론 우리 팀의 방식을 설명해주기도 하면서 프로젝트를 마음껏 즐겼던 것 같다. 수업 때는 다뤄보지 않았던 새로운 기능인 투표 기능을 어떻게 설계할지 고민한다던가, 검색과 정렬에 대한 구현을 만들기 위해 몰입했던 순간들이 날 지치지 않고 열심히 할 수 있게 만들어주었다.

그러다가 프론트에서도 작업을 마치게 되고 화면 공유로 테스트하면서 동작하지 않는 부분들을 서로 고쳐주고, 맞춰가면서 끝내는 제대로 동작하는 걸 본 순간, 우리는 희열을 느낄 수 있었다. 막연하게 잘 작동해라 기도하면서 만든 코드인데 엉뚱한 실수들이 있었고, 그걸 찾아내서 고쳐나가고, 그러니 또 동작하는 모습을 보니 너무 신기하고 기뻤다.

이번 프로젝트에서 가장 큰 깨달음은 프로젝트 시작 전에 많은 것들을 미리 정해두는 것이 오히려 시간을 절약할 수 있다는 것을 알게 된 일이었으며, 회의 시간 같은 사소한 결정에 에너지를 쏟지 않게 시스템을 잘 정해두는 것, 팀원들의 역량을 미리 파악해서 역할 분배를 할 것, 나는 의외로 꽤 구현을 잘한다는 자신감을 얻은 것이다. 또한 처음으로 협업을 하면서 깃이 좀 더 익숙해지기도 했고, 브런치개념도 느꼈고, 머지와 충동해결이 두렵지않게 되었다.

다만 이번프로젝트에서 아쉬웠던 점은 칸반을 사용하지 않았고, 코드리뷰를 못해본 점, 이미지를 다루는것과 레디스를 이용한 oauth로그아웃을 구현, 마크다운 기능을 구현하지 못한 점이 아쉬웠고, 팀원들이 더 편하게 소통할 수 있는 환경을 만들지 못한 점이 생각난다.

메인프로젝트에서는 랜덤이 아닌 더 좋은 라인업의 팀원과 멘토까지 함께 작업을 하게 된다.
기간도 2주에서 4주로 늘어나게된다. 지금까지처럼 즐겁고 열심히 만들면 좋은 결과가 나올 것 같기 때문에 이제는 걱정없이 자신감있는 모습으로 새프로젝트를 시작할 수 있을 것 같다.

profile
백엔드 자바 개발자 소희의 노트

0개의 댓글