한화시스템 BEYOND SW CAMP 1월 3주차 회고
2번째 프로젝트의 시작
이번 주부터 2번째 프로젝트가 시작되었다.
이번 프로젝트는 Spring을 활용하여 웹 페이지를 만드는 게 목표인 프로젝트로써
저번 프로젝트가 DB설계만 했다면 이번에는 직접 설계한 DB를 활용하여 실제로 구현하는 프로젝트이다.
프로젝트를 하기 앞서 새로운 팀원들과 인사를 나눴는데 이전에도 그랬지만 모두 열정이 넘치는 분들이어서 좋았다.
Spring을 아직 경험해보지 못한 분도 계셨고 이전 직장에서 사용해보거나 나처럼 프로젝트를 진행해 보신 분도 계셨다.
그래서 일단은 설날에 프로젝트에 필요한 Spring을 공부해오기로 하였고 이 기회에 나도 리마인드 하는 시간을 가지기로 했다.
프로젝트 구성을 하기전...
이번 프로젝트에선 모두 모여서 이전 프로젝트에서 맘에 안 들었거나 문제가 되었던 부분에 대해서 소통하고 진행하였다.
팀원들은 여러 가지 의견을 내주었고 이러한 분위기가 정말 마음에 들었다.
또한 프로젝트에 대한 아이디어를 각자 한 개 이상으로 상세하게 구상해서 모두에게 발표하는 식으로 선정하였다.
회의 끝에 2개의 프로젝트가 남았는데 하나는 일정관리 사이트, 나머지 하나는 팀프로젝트 관리 사이트였고,
최종적으로 팀 프로젝트 관리 사이트가 선정되었다.
이전 프로젝트에 대한 기억
이전에 나는 졸업작품으로 Spring을 활용하여 '웹 주문 키오스크 시스템'을 만든 적이 있었다.
이때 우리 팀의 문제점을 생각해 보면
1. 버전관리 문제
-> 모든 프로젝트 파일을 디스코드로 공유했었다.
2. 기능 명세서는 있었지만 상세한 API 명세서의 부재
-> 이 때문에 프런트엔드와 백엔드 사이에서 어떻게 값을 넘겨주고 받을 건지에 대한 정의가 없어서 많은 혼선을 겪었다.
3. DB 이름 규칙 부재
-> DB 이름에 대한 규칙이 정확히 없었기에 서로 다르게 작성하다 마지막 통합과정에서 충돌이나 많은 수정을 해야 했다.
4. 처음부터 너무 많은 기능을 설계
-> 너무 많은 기능을 설계한 탓에 제 기한에 맞추느라 급급했고 완성했지만 미처 공개하지 못한 기능도 있었다.
5. Spring에 대한 이해도 부족
-> 왜 이렇게 써야 하는지, 왜 이렇게 작동하는지 모르고 그냥 이렇게 해야 한다!라고 생각해서 썼던 것들이 많았다.
대충 정리하면 이런 문제들이 있었고 이번 프로젝트에서는 같은 실수를 하지 않기 위해 많은 공부를 해야겠다고 생각했다.
시작이 반이다
프로젝트를 시작하기 전 팀원들과 많은 이야기를 나누었고 일단 시작하기 전부터 계획을 확실하게 잡았다.
먼저, 위에서 말했던 '처음부터 너무 많은 기능의 설계' 부분에 대한 한계를 정했다.
최소한의 기능 즉, 최소한 우리의 프로젝트가 동작하는 기준치를 설정했고 생각보다 아주 많이 낮췄다.
물론 많은 기능을 넣으면 좋지만 우리에게 주어진 시간은 단 2 달이고, 이 안에 모든 걸 완성할 수 있다는 생각은 들지 않는다.
그렇기에 처음부터 최소치를 정하고 이제 모두 완성되고 난 이후에 시간이 남는다면 하나씩 추가하는 방향으로 설정하였다.
오늘 친구와 스터디를 하면서 API 명세서를 작성하는 것이 도움이 될 것이라고 배웠다.
아직 팀원들에게 말하진 않았지만 이 부분도 같이 도입하여서 확실한 규칙이나 기능을 설정하면
더 빠르고 효과적인 구현을 할 수 있을 것이라 생각한다.
이렇게 프로젝트 초기에 기반을 잘 다져놔야 그 위에 어떤 건물을 지어도 튼튼하고 안정적으로 운영할 수 있다고 생각한다.
그리고 지금까지 배운 것들을 제대로 활용하려면 이 기회에 적용하는 게 맞다고 생각한다.
최종적인 목표
처음 팀원들끼리 회의하던 내용 중에 하나는 우리 팀의 최종 목표를 어디까지로 할 것이냐였다.
나와 다른 팀원 2명은 배포까지 하기를 원했고 다른 분들은 Spring에 대해서 많이 배워가는 것이 목표였다.
개인적인 생각으로 물론 프로젝트를 진행해서 Spring에 대해 배워가는 건 매우 중요하고 핵심적인 일이라고 생각하지만
마지막으로 배포까지 하면 더 많이 배울 수 있을 것이라 생각한다.
그리고 나 또한 이번 프로젝트로 Spring에 대해서 더 확실하게 배워서 성장하고 싶다.
이전에 했던 프로젝트는 삽질 그 자체였지만 이제 삽질한 구덩이에 튼튼한 기반을 세워서 높은 건물을 세우고 싶다.
지금까지 배웠던 것들을 활용하여 성공적으로 프로젝트를 완성하고 배포하는 것이 목표이다.
Ps.
아직 부족한 부분이 많지만 그래서 더 좋다고 생각한다.
그만큼 아직 배울 것도 많고 얻을 수 있는 것도 많기 때문이다.