React, Next.js, Typescript, Springboot, JPA 및 MYSQL을 사용한 한 달 간의 프로젝트 후 작성된 회고전
- 어떻게 시작했는지
- 소송 절차
- 너는 무엇을 배웠니
- 어떻게 변할까
1. 모든 것이 시작된 방법
팀원들이 제안한 아이디어로 : “사용하자 + 유용 할 것입니다. “42서울의 마음가짐으로 출발점을 끊었습니다. 한 달간 작업한 프로젝트에서 배운 점, 아쉬운 점, 달라진 점을 돌아보는 글입니다.
2차 공정(1개월)
기획은 개발에 앞서 프로젝트명, 필수 핵심 기술, figma로 화면 정의, 요구사항 정의, 사용할 기술의 구성 등을 정하여 기획하였다.
화면이나 기능에 대해 팀원들과 직접 이야기하지 않고 막연하게 “00페이지는 00스킬이겠죠?” 동의서를 보고 진행했는데 그 과정에서 미흡한 부분이 있었습니다. 00테크놀로지의 기본적인 정의가 다르기 때문에 작은 화면의 정의도 차이가 있습니다. 차이점에 대해 서로 이야기하고 우리가 느낀 차이점을 받아들이는 과정은 미묘하게 시간이 많이 걸렸습니다. 사용할 수 있는 기술이 너무 다양하기 때문에 무엇을 사용할지에 대한 논의도 많이 있었습니다.
DB 설계에서 막히는 부분이 있었는데 구현하면서 조정이 가능할 수도 있겠다 싶었는데 나쁘지 않은 선택이었습니다. 구현 단계에서 헤매다가 선택을 하려고 하면 비정규화된 DB가 귀찮고 시간이 부족해서 수정하는데 시간이 좀 걸리더라고요. 전반적으로 이전 프로세스를 수정하고 반복하는 시간은 진행이 더디고 사기가 떨어지고 팀원에게 문제가 발생했습니다. 나는 그것이 틀렸다는 것을 알고 있으므로 정상화하고 계속 진행합시다.
시간이 없는데 DB 설계 단계에서 그냥 넘기기로 했고 오늘 화가 났습니다. 그래서 뭔가 잘못됐다는 걸 안다면 백트래킹이 없도록 아는 최대치까지 DB 정규화를 거쳐야 한다는 주장이 있어왔다. 이를 주장한 팀원들도 어느 정도 이해했다. 시간이 없어서 DB를 바꾸다 보니 드디어 React에 입문하게 되었는데 백엔드를 다시 만지다 보니 바꿔야 할 것이 많았습니다. 하지만 뭔가 잘못되었다는 것을 알았다면 바로잡아야 했고, 언제라도 바로잡아야 한다면 지금이 최선일 것이라고 믿으며 바로잡을 수 있었습니다.
할 때는 ‘먼저 해보고, 모르면 배워보자’가 목표였는데, 생각보다 정말 어렵다는 걸 알게 됐다. 대학 졸업하고 했을 때 목차를 알고 있어서 어려운 문제에 부딪쳤을 때 목차를 볼 수 있었어요! 찾아봤지만 이번에는 달랐다. 말 그대로 그라운드 위의 헤딩이었다. 처음에 기술 키워드를 모르고 수행하려는 기능을 찾고 있습니다. e.g. 다수의 버튼 생성, 다수의 버튼 클릭, 컴포넌트 간 정보 교환 등. 이러한 검색의 단점은 키워드에 잡히는 확률이 낮아 원하는 결과를 보기까지 많은 시간이 걸린다는 점이다. 이렇게 검색 후 복사 붙여넣기 하시면 됩니다. 잘되면 왜 되는지는 모르겠는데 구현해야할게 너무 많아서 다음에 하자는 듯이 넘기고 안되면 안한다. 답을 모릅니다. 오류가 있으면 찾는 데 2시간이 걸렸습니다. 하지만 초심자로서 최소한의 기능을 구현했을 때 오류가 많이 발생하여 기간에 비해 기능 구현 횟수가 터무니없이 적었고 투자 대비 효율성을 보았을 때 자존감이 떨어졌습니다. 절대적인 시간 약속이 불충분하고 시간 효율성이 좋지 않았습니다.
어느 날 정말 구현하고 싶은 기능이 있어서(리액트: 컴포넌트 부모 클릭 시 API를 호출해서 데이터를 가져와 자식 화면에 한 번만 랜더링해서 표시) 밤을 새워보려 했지만 겨우 데이터를 얻을 수 있었습니다. 화면에 나타나야 할 때는 오류가 없지만 1) 데이터를 가져오려면 한 번 클릭해야 하거나 2) 변화가 없습니다. 나는 새벽에 너무 절망적이어서 거울을 보며 스스로를 위로했다.
3. 무엇을 배웠습니까?
스터디에 대한 멘토님들의 말씀이 많이 와 닿았고 책도 순서대로 따라가는데 정말 재미있습니다. 다양한 버전의 실수를 잡아내고 배운 내용을 정리하며 배우는 재미를 배웠습니다.
서버 또는 API 개념이 조금 더 명확해졌습니다. 프론트, 백엔드 서버를 생성하고 API를 통해 호출하는 것이 도움이 되었습니다.
공부만 하는 게 아니라 프로젝트를 하다 보니 부딪히는 문제가 많았다. 새로운 충격을 받았습니다.
바르게 사는 삶에 집착했지만 스스로 행복해지기 위해서는 일정 수준의 성취가 필요하다는 것을 깨달았다.
책을 보고 나서 3일 정도 걸렸던 기술 구현을 ‘일회성 프로젝트’에서는 20분 만에 해결했다.
오류 메시지를 대충 읽고 구글에 가봤지만 나중에 초조한 마음을 접고 다시 시도해보니 오류에 키워드가 있었다. 읽기 오류의 마음에 대해 배웠습니다.
구현이 급해서 복사해서 붙여넣기로 했는데 나중에 오류가 발생하면 이해하지 못한 채 글을 써서 어디서부터 수정을 시작해야할지 몰랐습니다. 미래 연구의 무조건적인 복사는 사라졌습니다.
4. 어떻게 다를까
내가 발견한 개선 사항
- 나중으로 미루지 말자.
- 한번 해보자는 마음가짐으로 하다보니 어쩔 수 없이 “이거 해보고 좀 있다가 고치자” 였습니다. 나는 한동안 오지 않았다. 지금 이 문제를 계속 해결하고 나중에 뵙겠습니다. 잠시만 기다리자, 하지만 프로젝트는 끝났다.
- 나중에 해야겠다고 생각하고 건너뛰면 일이 너무 많이 쌓여서 부담이 된다. 작업을 쌓지 맙시다.
- 정확히 말해봅시다.
- 이렇게 해도 될까요? ‘혹시?’ 라고 대답했는데 멘토가 모르는 걸 모른다고 하는 게 낫다고 하더군요. 오른쪽으로. 팀원이 이유도 모른 채 신규 확진자 수를 물었을 때 “네, 그럴 겁니다”라고 말할 수는 없다.
- 또한 UX/UI 구현에서 “원래 기능입니다”와 같은 근거 없는 주장을 하지 말고 검색 결과 이 기능이 여기 저기 필요합니다. 척하자
- 만남의 시간은 금입니다.
- 시간이 부족해서 제대로 준비하지 않으면 하루를 다 써 버리곤 했어요. 논의할 주제를 명확히 한 후 자료를 입수하여 한데 모으고, 합의가 되지 않으면 잠시 연기한 후 다시 회의를 진행한다.
- 공부하고 구현하고 공부하자
- 한 번 해보고 모르면 공부하는 것보다 이제는 졸업 후 시행할 때 부딪힌 문제들을 공부하는 것이 더 효율적입니다. 그 이유는 오류가 작동하려면 최소한 키워드나 흐름을 알아야 하는데 저는 그것도 없었습니다. 그래서 키워드도 흐름도 몰라서 막 싸운 것 같다.
스터디를 통해 키워드나 유창한 목차를 만들고, 목차를 진행하면서 부딪힌 문제들을 풀어나가는 식으로 공부해야 한다.
- 한 번 해보고 모르면 공부하는 것보다 이제는 졸업 후 시행할 때 부딪힌 문제들을 공부하는 것이 더 효율적입니다. 그 이유는 오류가 작동하려면 최소한 키워드나 흐름을 알아야 하는데 저는 그것도 없었습니다. 그래서 키워드도 흐름도 몰라서 막 싸운 것 같다.
- 오류가 발생했을 때 오류 메시지를 주의 깊게 읽는 습관
- 에러메세지가 뜨길래 긁고 구글링했는데 멘토님이 추천해주신대로 해야겠네요.
- 오류 메시지 분석
- 공식 문서에 나온 키워드를 확인하세요.
- 인터넷 검색을 시도하십시오.
- 에러메세지가 뜨길래 긁고 구글링했는데 멘토님이 추천해주신대로 해야겠네요.
- 왜? 중요하다.
- 또한 복사하여 붙여넣을 때 왜 이런 일이 발생합니까? 안녕히 주무세요! 할 수 없다면 왜 안 됩니까? 구글링해서 복사했습니다. 버그를 고쳐준다고 하면서도 6번 연속으로 버그를 만나면 정리하지 않고 해결만 했다. 실행에 집착합니다.
- 이런 일이 생기면 이런 과정을 거친다는 것을 이해하자.
- 클론 코딩으로 기초를 다져봅시다.
- 처음부터 아이디어를 구현할 근본적인 기반이 없었습니다. 클론 코딩을 통해 기반을 마련한 후 프로세스로 이동합니다.
- 또한 주간 스프린트 동안 목표는 이번 주 금요일 여기까지 가는 것이었지만 그 목표는 현실적이지 않았습니다. 그 이유는 기술을 구현하는 데 배경 지식이 필요하지 않기 때문에 어렵거나 쉬울 수 있기 때문입니다. 복제 코딩을 하면 적어도 그것에 대한 느낌을 얻을 것입니다.
- 절대적인 시간 부족
- 잠을 자거나 깨는 동안 코딩 문제를 어떻게 풀어야 할지 생각해야 할 정도로 너무 편안했습니다.
- 프로젝트에 시간을 할애했기 때문에 알고리즘과 42개의 작업을 백그라운드에 넣었습니다. 시간 제어 기술을 개발해야 합니다.
- 나는 천재가 아니므로 천재가 한 시간만큼의 효율성을 얻을 수 있도록 두 세 시간을 투자합니다.
- 누락된 코드 검토
- 이들은 서로를 구현하느라 바빴고, 갈등을 해결하면서 결속을 다지고 밀고 나갔다. 우리는 상대방이 무엇을 하고 있는지, 왜 그런지 이해하지 못했습니다.