본문 바로가기

내가 거쳐온 교육과정

<국비지원 개발자 과정> 마지막 프로젝트 - 소회

완성한 개인 프로젝트의 메인 화면

마지막 프로젝트를 마친지 2주정도 지났다.

소회를 계속 쓰고 싶었는데 여러일로 바빠지고, 생각이 정리가 안됐던 터라.

국비지원 교육에서는 총 2개의 프로젝트를 진행하고, 모두 팀 과제로 진행되는 것으로 알고 있다. 그런데 나는 이번 마지막 프로젝트는 개인으로 진행했다. 이유는, 중간 프로젝트 때의 경험으로 보아... 아무래도 비대면으로 계속 진행되었어서 같이 만나서 프로젝트를 진행하지도 못했었고, 각자 역할만 분담하고 계속 그냥 개인으로 진행하는 느낌이었어서. 그리고 나중에 맡았던 부분들을 합칠 때에만 잠깐 팀 프로젝트구나- 하는 느낌이었어서 그런 부분들이 여러모로 아쉬웠었기 때문.

강사님은 개인보다 팀으로 하기를 좀 설득하시고 권하시는 느낌이었지만, 중간 프로젝트가 만족스럽지 않은 부분도 컸고 뭣보다 스스로 백엔드까지 구현을 해봐야겠다는 생각이 컸어서 그렇게 선택한 것이었기도. 중간 프로젝트에서 스스로 부족함을 너무 많이 느꼈었다.

그래서 개인으로 처음 진행했던 이번 프로젝트를 마치고 느낀 점은-


- 잘한 점
1. 개인으로 진행한 것
사실 개인으로 진행하는 건 국비교육이 끝나고도 언제든지 할 수 있는 것이기도 했다. 그럼에도 국비교육이 진행되는 동안 하기를 잘했다고 생각했던 것은, 백엔드 부분은 혼자서는 못했을 것 같기 때문이다. 특히 스프링 레거시에 대한 이해도 아직 부족한 상태인데, 레거시에 대해 더 공부하거나 보충하는 것이 아니라 다음 단계인(...) 스프링 부트를 사용해서 웹 프로젝트를 개발하려고 하니 쉽지 않았던 것. 그래서 백엔드 부분은 강사님께 질문을 많이 하면서 구현했다. 그래서 또 많이 뭐랄까 혼난 느낌이기도 했지만... 그래도 계속 질문했다. 배울 수 있을 때 배워야 하니까.! 그리고 그러면서 깨달은 것이, 정말 질문하는 만큼, 강사님께 매달리는 만큼(?) 내가 더 많이 배워갈 수 있는거구나- 하는 거였다. 혼나는 게 기분이 상하기도 했지만 그래도 적극적으로 물어보고 해서 얻은 이 깨달음 만큼은 정말 값진 것이었다고 생각. 아무튼 그래서 개인으로 진행하길 잘했다고 생각한 것이, 교육을 마치고 혼자 했더라면 훨씬 어렵게 했을 것이기 때문이고, 혼자 진행한 덕에 프론트엔드부터 백엔드까지 전체를 구현해보며 웹 개발의 전체적인 흐름을 배울 수 있었다는 점 때문이다.

2. 시간과 분량을 잘 나누어서 진행한 것
혼자서 구현하는 것이 분명 쉽지 않을거라 예상했었기에 처음부터 계획을 세우고 시작했다. 최대 소요 기간은 3주 정도로 잡고, 1주는 프론트엔드를 구현하고, 1주는 백엔드를 구현해서 나머지 1주는 마무리를 하는 시간으로. 그런데 중간에 개인적인 일이 생겨 프로젝트에 온전히 집중하기가 어려운 시간도 있었고 해서 결국 계획보다는 걸리는 기간이 길어졌었다. 그럼에도 정말 다행이었던 것은, 초기의 그 3주 안에 마치겠다는 목표와 1주씩 나누었던 계획이 없었더라면 더 미뤄졌을지도 모르겠단 거. 그 목표와 계획이 있어서 힘든 날도, 주말에도 흐름을 잃지 않고 계속해서 프로젝트에 집중해서 마칠 수 있었다고 생각한다.

3. 프론트엔드 구현 시 참고할 모델을 정해두었던 것
미리 계획했던 부분은 아니었는데, UI 구현은 모델을 정해두었었다. 그게 바로 토스와 애플 웹 사이트였는데, 두 사이트가 그동안 이용해봤던 곳들 중 가장 깔끔했고 직관적인 UI 였어서 개인적인 취향에도 맞아 이 둘을 참고해서 프로젝트를 구현했다. 그래서 고민하는 시간을 줄이고, 덕분에 프론트엔드 부분을 비교적 빨리 마칠 수 있었다.

4. 오롯이 혼자 구현한 JS 파트
3개의 질문에 대한 답을 선택하면 해당하는 결과 페이지로 보내주는 부분과, 회원가입 시 입력된 3칸의 이메일 주소를 JS를 통해 1개의 주소로 합쳐 DB에 저장하는 부분은 오롯이 혼자서 구현했다. 물론 틀은 잡아두고 강사님께 도움을 받아 완성하기는 했지만, 사실 이게 배운 부분이 아니라 정말로 처음 도전하는 부분이었다. 그래서 하면서도 긴가민가 했는데, 정말로 성공하니 신기하기도 하고 뿌듯했다. 뭐랄까 이 부분이 개인적으로도 참신한 도전이었던 것이, 늘 정해진 방식이나 틀을 찾아 그것에 맞게 만들고 구현하는 등의 선택을 다른 분야에서도 해왔는데 이 두 가지 기능에서 만큼은 스스로 생각해서 코드를 짰기 때문이다. 그래서 개발자로서도 개인적인 측면에서도 정말 새로운 시도를 한 것이었어서 눈이 확 트이는 느낌이었다. 무엇보다 그래서 성공을 했다는 것이 가장 성취감이 큰 부분임은 물론이고 말이다. 효율적인 코드라고까지는 말하기 어렵지만 그래도 어디가서 내가 직접 짠 코드라고 자랑하고 싶기까지 한 그런 부분이었다.


- 아쉬웠던 점
1. 기획, 디자인을 생각하느라 코드에 더 집중하지 못했던 점
후에 멘토님께 이 프로젝트를 통해 멘토링을 받을 수 있었는데, 기획을 하는 사람과 디자인을 하는 사람은 따로 있지 않느냐, 그럼 개발자는 무엇을 해야 할까(...)라고 소크라테스 식(?) 질문을 주셔서 아... 코드에 더 집중했었어야 했구나, 라는 걸 깨달았다. 특히 JS의 if 조건문에서는 else가 필요 없다면 굳이 쓸 필요가 있는지, 같은 부분들에 대해서도 말씀해주셨는데 그런 부분에 대해서 더 고민하는 시간을 들였어야 했단 걸 멘토님을 통해 깨우칠 수 있었다. 그러고 보니 정말 나도 모르게 구현해보고 싶었던 아이디어로 드디어 프로젝트를 진행하는구나! 라는 생각에 이번 프로젝트에서 아무래도 기획이나 디자인에 시간을 쏟았던 점이 없지 않아 있었어서, 앞으로는 프로젝트 시 코드에 집중하고 효율적인 코드를 위해 더 고민하는 시간을 가져야겠다고 결심하게 되었다.

2. 설계에 대해 더 고민하지 못했던 점
사실 질문에 대한 답을 선택하고 결과 페이지로 보내는 기능은 프론트엔드만으로 구현하기가 어려운 부분이었다. 왜냐하면 결과 페이지가 여러개인데, 모두 다 다른 페이지로 구현을 했다보니 순열&조합 알고리즘, for 반복문 등으로도 적용이 어려웠기 때문이다. 결국 그래서 결과 페이지에 대한 객체를 일일이 다 만들어야 했던(...). 이런 점을 설계할 때 충분히 고민하지 못했어서 구현은 해냈어도, 보다 효율적으로 돌아가는 프로그램을 개발하지 못했던 점이 아쉬웠다. 설계할 때 이 부분을 좀 더 고민했었더라면 이 부분은 프론트엔드가 아니라 DB로 연동하여 구현을 하는 것이 더 좋은 방법이었더라는 것을 알 수 있었을 텐데, 하는 깨침을 나중에야 얻었다(그런데 한 편으로 이런 부분은 보다 많은 경험을 통해서 얻을 수 있는 배움인 것 같기도 해서, 아무튼간에 계속해서 프로젝트를 해나가면서 고민하고, 배워보려고 한다).

또한 모아진 학습 자료들을 한 눈에 볼 수 있도록 만든 페이지에서도, 불필요한 코드를 줄이려면 한 번의 코드로 학습 자료들을 대표하는 이미지들의 크기를 설정해야 했는데 이 부분에서 간과했던 점이 있었다. 이미지의 크기가 모두 달랐던 것이다. 그래서 한 번으로 정한 이미지 규격으로 모든 이미지에 적용하려니 크기가 제각각이라 모양새가 좋질 않았다. 이런 부분도 처음에 생각하지 못했던 것이 아쉬웠다. 이로써 코드는 처음의 원초적인 작은 부분에서 쌓이고 쌓여가며 이 쌓인 코드들이 서로 연결되어 유기적으로 돌아가는 것이란 점도 이전보다 확연히 느낄 수 있었고, 그래서 설계를 할 때에 이런 부분도 생각을 잘 해야겠다는 배움을 얻을 수 있었다.

3. 진작에 복습을 잘 해두지 못했던 점
백엔드 구현 시에는 강사님께 물어물어 결국 어려웠어도 어떻게든 해낼 수 있었지만, 그래도 사실 정말 어려웠던 부분이었다. 그리고 어쩔 수 없이 계획에 맞추기 위해 100%, 아니 50%도 이해가 안되더라도 넘어갈 수밖에 없는 부분들도 없지 않았어서 이런 부분에 대해 좀 후회가 되었다. 평소 수업들을 때 복습에 좀 더 시간을 쏟았더라면 100%까지는 되지 않더라도 70~80%까지는 이해해서 기능 구현에 이 정도로 어렵지는 않았을텐데, 하는 생각이 들었다. 그래서 강사님이 혼내실 때 할 말이 없기도 했고(...). 나름 어느정도는 이해했다고 생각해서 넘어갔던 부분들이었는데, 막상 혼자서 구현해보려니 역시나 내 이해도를 잘 파악하고 있지 못했던 거다. 그래서 아쉬웠지만 그래도 덕분에 뼈저린 교훈을 얻을 수 있었어서 다음에는 내 이해도에 대해 의심을 갖고(?) 혼자 다시 복습해보는 시간을 제대로 가져야겠다는 생각이다.


- 결론
그래도 전체적으로는 개인으로 진행해서 하나의 프로젝트를 끝마쳤다는 점에 대해 후한 점수를 주고 싶다. 결코 쉽지 않았는데, 약 한 달 가량의 시간동안 혼자서 헤이해질 틈도 없이 달린 덕에 프로젝트를 무사히 마칠 수 있었다(그래서 지금 신나게 보상중이다). 배운 점도, 아쉬운 점도 적지 않았지만 늘 실패는 성공을 위한 훌륭한 밑거름이 될테니. 아쉬운 점을 통해 얻은 교훈, 잘한 점을 통해 얻은 교훈을 통해 앞으로의 개발에서도 성장을 위해 노력하려 한다. 참 뿌듯하고 값진 시간이었다.