(네이버 블로그에서 옮겨온 글이며, 22.01.06에 쓰여진 글입니다.)
어느새 국비지원 학원 5개월 과정을 모두 마쳤다.
개발 학원의 꽃을 정의하자면 바로 FinalProject라고 생각한다.
오지 마라 하면서도, 그래도 어느 정도 수준의 프로젝트가 나올까 하고 설레어 하며 기다렸던 기억이 있다.
개발자(가 되려는 자)로서의 첫 회고글, 이 FinalProject를 주인공으로 세워 시작해 보려고 한다.
1. 팀원 구성
팀은 나 포함 6명으로 구성되었다. 세미 프로젝트 때와는 다르게 이번엔 조장을 먼저 뽑고, 남은 사람들이 원하는 조장을 선택하는 시스템으로 팀을 구성했다.
나는 학생 때부터 조금은 주도적인 편이었고, 여기서 조장을 맡아 힘든 일을 자처해 보면 나의 한계를 알 수 있지 않을까 하는 마음에 조장에 지원을 했다.
그렇게 나를 선택한 팀원들은 모두 나보다 나이가 많았다. (물론 국비 학원 특성상 나보다 어린 친구들이 많이 없기도 했다.) 그렇다고 해도 큰 부담은 없었다. 학원을 다니면서 주변 사람의 실력이나 행동에 너무 휩쓸리지 말자고 늘 되뇌었다. 그래서 그냥 모두 나와 같은 배우러 온 사람들 이라고 생각했던 것 같다.
다행이도 팀원들은 나쁘지 않았다. 모두 의견도 많이 낼 뿐더러, 의견에 대한 피드백도 바로 돌아왔기 때문에 첫 회의를 마치고 어, 생각보다 순조롭게 진행되겠는데? 하는 생각을 했다.
2. 나 풀스택도 가능하겠는데??
우리는 크라우드 펀딩사이트 텀블벅을 벤치마킹하여 펀딩사이트를 만들어보기로 했다.
내가 맡은 부분은 펀딩프로젝트의 상세페이지, 결제 페이지이고 그 안에서 구현해야할 기능들을 나열해보자면..
상세페이지 - 프로젝트 정보 출력, 찜 기능, 메세지 기능, 선물 정보 출력 등
결제페이지 - 프로젝트 정보와 사용자 정보 출력, 개인정보 등록 안한 사용자들은 Ajax를 통해 정보 입력, 정기결제 기능 등
내가 맡은 기능을 구현하려면 서너개의 테이블에 데이터가 넣어져 있었어야 했다. 그러나 DB설계를 만만히 봤던 우리는 테이블 구조를 최종적으로 결정한 것이 프로젝트 마감 일주일 전이었다.
(돌이켜 생각해보니 사실 이 부분은 실력이 부족했었던 나의 착각이었던 것 같다. DB설계가 안되어 있었어도 내가 맡은 기능을 구현하기에는 무리가 없었을 것 같다.)
그렇기에 내가 사용해야 하는 테이블의 데이터가 자주 없어지고, 구조가 변경되는 상황이 생겨서 나는 어느 정도 테이블 구조가 잡히는 동안 두 페이지의 프론트를 열심히 잡았다.
전체적인 디자인은 텀블벅 사이트를 참고했고, 프론트 바보인 나는 며칠 밤을 새우면서 페이지를 완성했다.
그러면서 어라, 프론트 은근 재밌네? 풀스택 가능? 가능? 하면서 혼자 히죽거렸다.
(그렇지만 뭔지도 모르고 쓴 css 속성이 아직도 많다는점......)
그렇게 프론트에 대한 자신감이 슬쩍슬쩍 올라왔다.
3. 팀원의 이탈
프로젝트가 진행된지 2주가 지난 시점이다. 메인 페이지를 맡은 팀원이 개인 사정으로 빠지게 되었다.
사실, 처음부터 예상하고 있었던 일이었다. 그래서 최대한 빨리 완성해야 하는 메인 프론트단을 그 팀원에게 맡겼었다. 흠... 하지만 뭐랄까 아무도 만족하지 못하는 결과물을 내놓은 채 3일간 연락도, 진전도 없었고(심지어 되던 기능도 안되는 사태가...) 결국 팀을 나가기로 결정했다.(개인 사정으로 인한 잠수였긴 하다........)
그 분이 만들어 놓은 메인 프론트단은 파이널에서 나오면 안 되는 퀄리티라고 판단했기 때문에 팀원들과 회의를 통해 처음부터 다시 만들 수밖에 없었다.
그 분의 파트를 나 포함 세명이 나누어서 작업했고, 한 분은 전체적인 메인 페이지 css, 다른 한 분은 필터, 검색 등 백단을 맡으셨고, 나는 팀원들이 만들어 놓은 코드들을 연결하고 세세한 css를 맞추기로 했다.각자가 구현할 기능들도 많이 남았기 때문에 여기서 최소한의 시간을 쓰려고 노력했고, 사흘 만에 우리가 구현하고자 하는 기능을 완성할 수 있었다. (전체적인 메인폼 잡기, 프로젝트 리스트 출력하기, 카테고리 별 필터 설정, 검색기능 등 - 검색은 셀렉트 박스로 카테고리 이동을 해도 해당 키워드가 유지되도록 구현하였다.)
별로 한 것도 없어보이는데 셋이서 사흘이라니? 할 수도 있지만... 우리는 모두 프론트바보들이었다.......
4. 코로나야 제발...
그렇게 시간은 흘러 어느덧 프로젝트 마감날이 다가왔다. 프로젝트 도중에 학원에서 확진자가 나와 남은 2주 정도는 비대면으로 진행이 되었다. 그래도 발표가 있는 주는 PCR 검사를 받고 음성이 나온 사람은 출석을 해도 된다는 공지를 받았다.
마지막 프로젝트인 만큼 우리는 스티븐 잡스님처럼 발표하자는 농담(이 아니라 진담이었다..)을 주고받으며 나와 함께 발표를 맡은 팀원을 발표 이틀 전날까지 만나 합을 맞춰 나갔다.
그러나... 발표 전 날 오전, 우리 팀원 중 한 분이 코로나 확진이 되었다는 소식을 전달받았다(불행인지 다행인지 발표를 맡은 팀원은 아니었기에 그 분과의 만남은 일주일 전에 있었다.) 다른 팀들은 모두 학원에 나가 발표를 하는데, 우리 팀만 비대면 발표를 하라는 학원의 공지를 받고는 오전 내내 멍만 때렸다. 열심히 준비한 만큼 완벽하게 발표하고 싶었기 때문에 다른 팀원을 만나도 되는지, 밀접 접촉자도 일상생활이 가능한지 등을 보건소 세 군데에 전화해서 물어봤다.
세 보건소는 모두 '접촉한지 1주일이 지나기도 했고, 2차 접종까지 완료했고, 어제 PCR 검사를 받고 오늘 음성이 나왔으니(학원 출석을 위해 증명서를 제출했어야 했기 때문에 전 날 PCR 검사를 받았었다.) 일상생활이 가능하다.' 라는 답변을 주셨다.
학원에 못 가는 건 학원의 지침이니 어쩔 수 없다고 생각하고 시연을 도와줄 다른 팀원(이하 햄언니)을 만나서 정신 차리고 열심히 발표 준비를 했다.
문제는 프로젝트 마감날이 다가오면서 우리는 모두 예민해져 있었다는 것이다.
햄언니는 원래 함께 발표할 팀원은 아니었다. 발표 하루 전 날인데 서로 아쉬움 + 짜증 + 예민이 가득한 상태로 처음부터 맞춰가며 준비를 하려니 서로 별것도 아닌 거에 기분이 나빠졌다.
나는 심적으로 너무 지쳐서 ' 다 짜증 난다.. 그냥 하지말까..' 하는 마음까지 간 상태였다.
그래도 내일이면 우리가 고생한 한 달이라는 시간을 증명하는 날인데 이렇겐 안되지. 정신 차리자 라고 다시 마음을 고쳐먹었고, 그 날 저녁 9시경 팀원들과 비대면 발표 리허설을 마치고 나서야 기분이 풀리고 마음이 안정되기 시작했다.
5. 발표 아자자자!!!!
다음 날 오전 발표 30분 전. 여기서 또 문제가 발생했다.
우리 학원은 파이널 발표는 강의실이 아닌 소강당? 같은 곳에서 진행하고, 또 유튜브로 실시간 방송을 내보내준다.그러나.. 비대면인 우리 조의 마이크 소리가 송출이 안될 수도 있다는 연락을 받고는 아침부터 매니저님과 화가 잔뜩 난 메세지를 주고받았다.
분명 전 날 매니저님께 비대면 발표를 하면 소리 송출은 잘 되는지, 유튜브 실시간 방송은 잘 되는지 모두 확인을 마친 상태였다. 그런데 당일에 소리가 안 나온다니?? 답답하고 짜증났지만 내가 할 수 있는 건 기다리는 것 뿐이었다.
그래도 학원 측에서 프로그램을 정상화했고, 30분간의 지연 끝에 다행히 우리의 발표가 정상적으로 진행될 수 있었다. 발표전 까진 엄청 떨렸는데, 발표 자체는 재밌었다! 우리가 만든 서비스의 기능을 최대한 설명하려니 시간이 길어져 소개 못한 기능도 있었고, 시간 절약 하느라 말을 빨리 한 것이 아쉽기만 하다ㅜㅜ 그냥 천천히 다 보여줄걸.다른 팀들의 대면 발표를 보면서 너무 부러웠고 또 너무 아쉬웠다. 나도 스티븐 잡스님처럼 발표하고 싶었는데!
발표를 마치고 나서는 수능이 끝났을 때처럼 허탈했다. 30분 정도 멍하니 있었던 것 같다. 이제 정말 끝이라니.. 아쉽기도 하고 허무하기도 하고 후련하기도 했던 파이널 프로젝트는 이렇게 마무리되었다.
6. 마무리
6-1. 느낀점
먼저 우리 팀원들에게 무한한 감사를 보낸다. 어떻게 생각하면 재수 없을 수도 있었던 막내 조장의 의견을 잘 따라주었고, 또 내가 지쳐있을 땐 우리 팀원들의 에너지와 위로가 있었기에 끝까지 올 수 있었다. 서툴렀고, 미흡했던 내가 프로젝트를 잘 마칠 수 있었던 건 우리 팀원들이 있었기에 가능했다.
다른 사람들은 어떻게 평가할지 모르겠으나, 일단 나와 팀원들은 프로젝트 완성도에 꽤나 만족한다.
각자가 맡은 기능들을 모두 구현해냈고, 버그가 있을 땐 피드백을 통해 바로바로 코드를 수정해 버그를 잡아내었다.
(1차 테스트 후 발견한 버그만 50개.... 다음날 모두 정상적으로 작동했다! 하지만 우리가 놓친 버그들이 아직 수두룩할지도)
다만 나는 아직도 예쁜코드가 무엇인지, 내 코드를 어떻게 바꿔야 더 효율적인 코드가 되는건지 잘 모르겠다.
Git 같은 경우도 이번 프로젝트를 진행하면서 많이 익숙해졌다고 생각했지만, 아직 새발의 피인 것을 너무나도 잘 알고있다.
그래도 처음엔 내가 무엇을 모르는지 모르는 상태였다면, 이제는 내가 모르는 것이 뭔지는 아는 상태가 되었다는 점에서 아주 조금 더 성장했다고 생각한다.
팀 프로젝트에서 중요한 것은 실력은 분명히 아니라고 생각한다. 물론 실력이 좋으면 당연히 더 좋다! 그러나 이번에 느낀 건 실력보다는 다른 팀원에 대한 배려와 성실함이라고 생각한다. 우리 팀원들은 모두 다른 사람들에게 폐 끼치지 않으려고 열심히 노력한 흔적이 보인다. 그리고 우리가 구상해 놓은 기능을 모두 구현했다는 점에서 나 스스로는 우리 팀에게 좋은 평가를 주고 싶다. 다른 팀들은 개인행동을 한다거나, 팀의 규칙을 지키지 않고, 분명 할 수 있음에도 금방 포기를 하는 사람들이 있어서 스트레스를 많이 받았다고 한다. 다시 한번 우리 팀원들에게 감사함을 느낀다.
이렇게 회고록을 써보니 지난 한 달의 시간을 헛되게 보내진 않았구나 생각이 든다.
그리고 더 열심히 공부해야겠다는 마음이 차오른다. 아직 엄청 부족하다. 그러니까 열심히 공부할거다.
당장 할 것만 해도 자바 기초 공부, 코테 준비, 인텔리제이 사용해보기, spring 공부하기, AWS 공부해서 서버 배포하기, IT 기초 지식 쌓기 등등... 그리고... 제일 이루고 싶은 취업!
지금은 내가 조급해 하는게 느껴진다.
해야할 건 많고 시간은 흐르고...사람이라는게 조급한 건 어쩔 수 없지만.....
늘 기초부터 탄탄히 하겠다는 생각과 게을러 지지 말자는 마음가짐으로 더 성장해보자.
6-2. 잘한 점, 아쉬운 점
6-2-1. 잘한 점
1) 팀 노션을 통해 진행상황 등 기록하고 공유하기
: 조장을 맡기 전부터 협업을 효율적으로 할 수 있는 방법이 뭐가 있을까 자주 고민했다. 효율적인 협업을 위해선 소통이 잘 되어야 한다고 생각했다. 나는 소통의 창구로 '노션'을 선택했는데, 팀원들은 노션을 사용해보지 않았지만 사용법이 간단해 금방 적응해서 사용할 수 있고, 필요한 페이지를 무제한으로 만들수 있기 때문에 소통을 위한 최적의 도구라고 판단했다. 노션엔 팀규칙과 코딩규칙을 기록해 놓았고, 각자의 진행상황, 참고할만한 사이트, 회의 내용 등을 기록했다. 덕분에 따로 연락하지 않고도 진행상황을 한 눈에 알 수 있었고, 효율적으로 소통을 할 수 있었다.
2) 결제 시스템 구현
: 아마 대부분의 프로젝트엔 결제기능이 필요할 것이라고 생각한다. 프로젝트 시작 전부터 결제 기능을 구현하는 것이 어렵다는 말을 많이 들었다. 그래서 우리는 '되면 좋고 안되면 말고'라는 마음으로 프로젝트를 시작했다. 그러나 나는 다들 어렵다는 그 결제를 구현해보고 싶었다. 그렇게 며칠간 구글링과 삽질을 반복한 끝에 결제 기능을 구현할 수 있었다. 결제를 구현한 팀은 우리 팀밖에 없었고, 다른 팀들과는 확실이 구분되는 고급(?)기능이었다.
3) 텀플벅에 저작권 동의 받기
: 프로젝트 마감 5일전, 한 팀원이 말했다. "텀블벅에 있는 펀딩프로젝트 우리가 막 끌어와서 써도돼? 유튜브에도 올라갈 건데 저작권 걸리는거 아니야?" 아뿔싸. 저작권 생각을 못했다. 그렇다고 우리가 프로젝트 데이터를 하나하나 생각해서 넣기엔 시간도, 아이디어도 당연히 부족했다. 나는 바로 텀블벅에 문의를 하여 프로젝트를 사용해도 되냐는 문의를 남겼고, 텀블벅 측에선 창작자분들이 허락하면 사용해도 괜찮다는 답을 받았다. 그렇게 텀블벅의 창작자님들 한 분 한 분께 메세지를 남겼고(총 50분께 허락을 구했다.) 사용을 허락해주신 창작자님들의 펀딩프로젝트를 우리의 서비스에 등록할 수 있었다. 저작권 문제나 디자인 유출 문제로 허락해주지 않으신 창작자분들도 계셨기 때문에 저작권 동의를 받은건 정말 잘한 일이라고 생각한다.
4) 마감 일주일 전까지 진행률 90%를 목표로 잡고 미리 테스트 했던 점
: 우리는 프로젝트 마감일에 딱 맞춰 완성을 하기 보단, 기능 구현을 빠르게 마무리 지은 후 남은 일주일 동안 버그를 잡거나, 세세한 부분 수정하면서 여유로운 마감을 하기로 정했다. 모든 팀원들이 일정에 맞춰 기능 구현을 완료해 주었고, 남은 기간 버그를 잡으면서 우리의 바램대로 여유로운 마감을 할 수 있었다. 덕분에 위 저작권 관련 문제도 스무스하게 해결할 수 있었다. 기능구현도 못한 상태에서 저 상황을 맞이했더라면...어휴..끔찍하다.
(그러나 다른 팀들에게서 너희조 다 했다며??? 라는 연락이 계속 오면서 조금 스트레스를 받았더랬다... 다 한거 아닌데...)
6-2-2. 아쉬운 점
1) 깃 브랜치를 제대로 활용하지 못함
: 학원에 다니기 전부터 미리 깃을 공부하고 사용해본 덕분에, 남들보다 깃 사용에 익숙했다. 그러나 겉핥기 식으로 공부했고, 깃 명령어를 쓰기 보다는 이클립스의 기능으로 깃헙에 소스를 올렸기 때문에 협업을 위한 깃 지식은 많이 부족했다. 가령 새로운 아이디어로 뭔가를 시도해보고 싶을 때 새로운 브랜치를 만들어 거기서 작업하면 되는데, 우리는 모두 프로젝트를 복사한 후 복사한 프로젝트에서 기능을 구현해보고, 그 파일을 다시 원래의 프로젝트에 복사 붙여넣기를 하는 효율성 제로의 작업을 했다. '잠깐, 브랜치를 만들면 되지 않나?? 우리 왜 다 복붙하고 있었지??' 라는 생각이 들었던 건 마감 하루 전날이었다...ㅎㅎ
2) Ajax에 대한 이해가 부족함
: 프로젝트 시작 전부터 나는 Ajax에 많이 약했다. 그래서 Ajax를 더 자세히 알고 싶었는데, 이번 프로젝트에서도 강사님과 배운 코드를 그대로 사용하거나, 구글링을 통해 Ajax를 사용했다. 프로젝트를 진행하면서 이해를 했으면 좋았을텐데, 제대로 이해하지도 못한 채로 사용했던 것이 아직도 많이 아쉽다.
3) 기능 구현 전 지레 겁을 먹음
: 나는 결제 기능과 찜 기능을 구현했다. 시작 전 부터 두 기능 모두 구현하기 어렵고 복잡하다는 말을 많이 들었다. 그래서 나는 해보지도 않고 어떻게해ㅜㅜ 어떻게 하지??ㅜㅜ 라는 생각으로 시도조차 안하며 구글링만 몇시간을 했었다. 찜 기능 같은 경우는 구글링을 해도 감이 오지 않아서 냅다 코드를 짜봤다. 근데 웬걸? 두 시간만에 찜 기능을 모두 완성할 수 있었다. 기능구현보다 어려웠던건 오히려 하트 색을 바뀌게 하는 css였다....
그런데 다른 팀들은 적게는 3일, 많게는 일주일이 걸렸다는 말을 듣고 어..? 나 뭐 잘못했나..? 내 기능에 하자가 있나..? 하는 생각이 자꾸 든다. 기능은 잘 되고 있는데.....
뭐든지 걱정부터 하지 말고 일단 해보는 것이 나에게 잘 맞는 방법이라는 걸 다시 한 번 깨달았다.
4) DB설계를 제대로 하지 않고 프로젝트를 진행한 점
: 나는 프로젝트를 본격적으로 시작하기 전에 주제를 정하고, 요구사항을 정의하고, 파트를 나누는 것으로 회의를 마쳤다. 물론 테이블에 대한 얘기도 나왔지만 member, project 테이블을 메인 테이블로 잡고 나머지는 기능 구현하면서 추가하는 걸로 결론을 내렸다. 이게 가장 큰 실수였다. 프로젝트 시작 전 DB설계를 먼저 해야한다는 사실을 며칠전에 알았다... 그러나 아직도 DB설계를 어느정도까지 한 후 프로젝트를 시작해야 하는지 잘 모르겠다. 어차피 프로젝트가 진행되면 미리 짜놓은 구조에 변경이 생길거고, 수정해야할텐데... 흠... 이 부분은 더 공부해봐야지.
어쨋든 우리는 너무 대략적으로만 짜놓았기 때문에 프로젝트를 진행하면서 테이블 구조를 짜는데 꽤나 골머리를 썩혔었다. 다음부터는 아주 세세하게는 아니더라도 틀을 튼튼하게 만들고 시작해야지.
이상 즐거웠던 FinalProject 회고 여기서 마침!
깃헙 주소 > jeejee1106 (Kim-MinJee) (github.com)
Bunddeuk 주소 > http://3.37.218.252:8080/
발표 영상 > [비트캠프] 자바 213기 [원격활용]디지털컨버전스 기반 Framework 전문 개발자 양성과정 B / 팀명 : 번뜩번뜩 / 프로젝트명 : Bunddeuk - YouTube
'회고록' 카테고리의 다른 글
[2023회고] 1일 1커밋 이제 안녕! (0) | 2023.06.01 |
---|---|
[2023회고] 1일 1커밋 1년 회고 (0) | 2023.01.29 |
[2022회고] 2022회고글 (3) | 2022.12.31 |
[2022회고] 2022년 상반기 정리, 1일 1커밋 5개월 후기 (2) | 2022.06.26 |
[2021회고] 2021회고글 (0) | 2022.02.03 |
댓글