프로젝트 소개 | 링크 => github
이번에 했던 DB프로젝트를 기반으로 앞으로 있을 백엔드, 프론트엔드 프로젝트를 해야한다고 생각하니 주제를 정하는 것 부터 쉽지 않았다.
하지만 시간이 오래 걸리더라도 팀원들이 흥미있어하고, 흐름을 이해할 수 있는 주제여야 한다고 생각해서 다른 팀들 보다 주제 선정에 조금 더 많은 시간을 사용한 것 같다.
예전에 창업학 수업을 들었을 때, 사업 아이디어는 사소한 문제에서 비롯되고 이를 자유롭게 이야기 하는 분위기가 만들어지면 주제는 자연스럽게 도출된다는 교수님 말씀이 떠올랐다. 그래서 처음부터 어떤 서비스를 할지 이야기하는게 아니라, 오늘 뭐했는지? 어제는? 누구만났는지? 그 행동은 안불편했는지? 와 같이 사소한 질문들로 잡담을 하면서 어떤 의견도 거절하지 않고 우선 다 받아적었다.
그 결과 대략 30개 가까이 되는 키워드와 주제를 뽑아냈고, 3개 정도를 구체화하여 정량적인 기준으로, 현실적인지도 판단하여 경쟁입찰을 통한 공동구매서비스로 주제를 선정했다.
아직 구현이나 문제를 겪기 전이었던 단계라 이 과정 자체가 너무 즐거웠다. 일상생활에서 문제점을 발견하여 이를 SW적으로 해결하려는 고민 자체가 항상 새로운 도전이고 즐길거리인 것 같다.
프로젝트간 배운 내용
프로젝트 기간이기 때문에 그 동안 배웠던 개념들을 정리하고 응용하는 시간이었다. 팀원들과 프로젝트를 하면서 git의 기능을 하나씩 알아가는 재미가 쏠쏠했다.
아직까지 git과 관련한 큰 이슈는 없었지만 자잘한 실수나 상황들을 해결하는 방법들을 새롭게 익힐 수 있었다.
그 중 stash기능을 굉장히 유용하게 사용했는데 stash는 현재 작업중인 내용을 잠시 따로 분리하는 일종의 백업 비슷한 기능이었다.
현재 브랜치의 최신 커밋으로부터 stash를 사용한 시점까지 작업한 내용을 추적하여 stack의 구조로 저장하여 나중에 불러올 수 있는 기능이다.
파일이 변경되고 git이 이를 추적중에 감지하면 해당 파일을 commit하지 않으면 브랜치를 옮길 수 없다. 이때 지금까지 작업했던 내용을 stash로 잠시 옮겨두고 브랜치를 옮겨 해결한 뒤 다시 해당 내용을 불러올 수 있었다.
이번에 프로젝트를 하면서 실수로 브랜치를 분기하지 않고 작업하는 상황이 잦았는데, stash기능을 발견하여 팀 레포에 큰 문제를 일으키지 않고 잘 사용하는 중이다.
❗ 부족했던 점 ❗
예전에도 느꼈지만 ERD와 요구사항이 정말 많이 부족한 것 같다. 추상적인 개념을 구체화된 물리적 개념까지 도달시키는 일이 너무 어려웠다.
가장 어려웠고 부족했던 점은, 어떤 속성들을 테이블로 만들고 어떤 속성들을 컬럼으로 만들지가 직관적으로 이해가 안된다는 점이었다. 특히 카테고리 같은 값은 직관적으로 생각했을 때 컬럼으로 들어가야할 것 같은데, 테이블로 따로 빼는 것이 일반적이라는 이야기를 듣고 한 동안 이해가 가지 않았다.
지금까지 계속해서 큰 틀의 원리에 집중해서 공부했는데 갑자기 원리보다는 사용성 및 코드적인 관점에서 바라봐야 해서 적응이 잘 되지 않았고 다소 혼란스러움이 있었다. 나 뿐만 아니라 팀원들도 비슷한 상황이었지만 그래도 팀 프로젝트였기 때문에 나쁘지 않은 결과를 도출해낼 수 있었던 것 같다.
서로 다소 서툰 부분도 있었지만, 분명한건 혼자였을 때보다 대화를 통해 더 좋은 결과를 이끌어냈고 이 과정에서 많은 것을 배웠다는 점이다. 한 명이 나가게 되어 4명인 만큼 앞으로 더더욱 돈독하게, 더 열심히 마무리 해야겠다는 생각이 들었다.
❓ 느낀 점❓
혼자가 아니라서 다행이라는 생각이 가장 먼저 들었고 이를 많이 느꼈다. 내가 알고 있다고 생각해서 당당하게 말했지만 막상 디테일한 질문이나 상황에 대한 가정이 들어오자 턱턱막히기 시작했다. 건강한 토론을 통해 서로 양보하고 납득시켰기 때문에 큰 갈등이 없어서 좋았다.
그리고 무엇보다도 생각보다 꽤 실력이 많이 늘었다. 아직 디테일은 부족하지만 그래도 DB설계까지의 전반적인 기본 흐름은 경험한 것이기 때문에 앞으로 어떤 방향으로 나아가야 할지에 대한 명확한 답은 얻은 것 같아 굉장히 만족스러웠다. 개인 토이프로젝트라 추후 다른 프로젝트에서 이 경험을 녹여내서 내것으로 만들면 꽤나 괜찮은 경험이 될 것 같다.
하지만 마냥 순탄하진 않았다. 4명이라는 다른 팀보다 부족한 인원수 때문에 항상 시간에 시달렸고 이에 따른 스트레스가 꽤나 크게 다가왔다 .
그렇기 때문에 특히 어디까지 기능을 넣고 구현을 할지에 대해 팀원들과 정말 많은 고민을 했던 것 같다. 구현을 위해 허락된 시간은 백엔드3일, 프론트엔드 2일이라는 굉장히 짧은 시간 뿐이었고 다들 뚜렷한 개발 프로세스 경험이 없어서 괜히 욕심냈다가 프로젝트 완성은 꿈도 못 꾸는 상황이 발생할까봐 다소 걱정됐다.
2일만에 주제 선정부터 요구사항 명세서, ERD, git을 통한 버전관리 및 README 작성, SQL개발, 성능개선 이 많은 내용을 해야했기 때문에 프로젝트 규모에 대한 타협이 불가피했고 결국 수정, 삭제 등 부가적인 기능이나 욕심냈던 추가기능은 전부 제외하고 회원, 입찰, 등록 등등 필수기능만 구현하고 시간적 여유가 된다면 기능을 추가하고 되지 않는다면 각자 고도화 시켜보는 방향으로 가닥을 잡았다.
2일이라는 시간이 정말 순식간에 지나갔다. 코드를 쓰지 않고 프로젝트를 먼저 해본 경험은 처음이라 당황스럽긴 했지만 이게 진짜 개발이다라는 생각이 계속해서 들었다. 알지도 못하면서 코드만 먼저 쓰고, 문제가 생겨 완전히 꼬여버리는 상황을 몇번 경험했기 때문에 이런 절차와, 절차별 완성되어야 하는 다양한 결과물, 그리고 문서들의 소중함을 배운 프로젝트였던 것 같다.