2주차 회고 : Where am I?
들어가며
이번 주는 자동차 경주 미션을 수행하며, 아래 세 가지 질문에 대한 답을 소감문에 담아야 했습니다.
- 지원서에 작성한 목표를 얼마나 달성하고 있다고 생각하나요? 그 이유는 무엇인가요?
- 지원서에 작성한 목표를 변경해야 한다고 생각하시나요? 그렇다면 그 이유와 어떤 목표로 변경하고 싶으신가요?
- 프리코스를 진행하면서 눈에 띄는 변화나 깨달은 점이 있나요?
답변을 준비하다 보니 어느덧 4주간의 프리코스도 절반이나 지났다는 사실을 깨달았습니다.
그동안 얼마나 성장했는지, 그리고 현재 어디쯤 와 있는지를 깊이 고민하며, 그 흔적을 회고록에 담아보았습니다.
회고 제목과 동명의 노래가 있습니다.
제가 즐겨 듣는 래퍼 비와이의 'Where Am I' 라는 곡인데, 이 노래를 배경으로 함께 읽어보시길 추천드립니다.
피드백을 통한 성장
프리코스의 큰 장점 중 하나는 미션이 끝난 후 서로 코드 리뷰를 주고받는 문화입니다.
저도 1주차 미션을 마친 후 다른 분들과 코드 리뷰를 주고받으며 아래와 같은 피드백을 받았습니다.
- 추가 설명이 필요한 로직은 별도의 메서드로 추출하기
- 매직 넘버는 최대한 지양하고 상수로 정의하여 의미 살리기
- 테스트 메서드명을 통해 테스트의 의도나 목적 드러내기
리뷰어분들의 피드백 덕분에 제 부족한 점을 객관적으로 볼 수 있었고, 2주차 미션에서는 이를 개선하기 위해 더욱 집중했습니다.
특히, 전체 47개의 커밋 중 12개를 리팩토링에 할애하며 피드백을 적극 반영하고자 노력했습니다.
‘이 객체가 아닌 다른 객체가 이 행위를 담당하는 게 더 적합하지 않을까?’, ‘현재 검증 로직을 별도 메서드로 추출하면 가독성이 높아지지 않을까?’와 같은 고민을 계속하며, 유지보수하기 좋은 코드를 작성하는 프로그래머의 자세를 배웠습니다.
코드 리뷰어분들뿐 아니라 프리코스 운영진으로부터도 공통 피드백을 받았습니다.
그중 "의미 없는 주석을 달지 않는다"라는 항목에서 마음이 뜨끔했습니다. 1주차 미션에서 모든 클래스와 메서드에 주석을 달아야 읽기 쉬운 코드가 될 것이라 생각해 그렇게 작성했기 때문입니다. 공통 피드백을 통해 제가 생각했던 방식이 오히려 코드의 가독성을 해칠 수 있다는 것을 깨달았습니다.
그래서 2주차 미션에서는 이름만으로 의미가 잘 드러나도록 고민하며 코드를 작성하려 노력했습니다. 그 결과, 전체 12개의 리팩토링 커밋 중 네이밍 관련 리팩토링 커밋을 6개나 남기게 되었고, 이를 통해 주석 없이도 이해할 수 있는 코드 작성에 한 걸음 더 가까워졌다고 느꼈습니다.
코드 리뷰어분들과 프리코스 운영진의 피드백 덕분에 저의 약점을 객관적으로 바라 볼 수 있었습니다. 이를 통해 프로그래머로서의 저에 대한 메타인지를 강화할 수 있었습니다.
또한, 제 약점을 극복하기 위해 코드 품질을 고민하는 과정에서 프로그래밍 역량을 키울 수 있었습니다.
자아성찰
1주차 미션이 끝난 뒤 스스로를 돌아봤습니다. 저의 부족한 점 세 가지를 발견했고, 2주차 미션에서는 이를 개선하고자 노력했습니다.
첫 번째로, 소프트웨어 아키텍처에 대한 무지입니다.
실력 있는 분들의 코드를 보며, MVC 패턴을 통해 클래스 간 책임과 역할을 명확히 분리하는 공통점을 발견했습니다. 부끄럽지만, MVC 패턴에 대한 이해가 부족했기에 이를 보완하고자 우아한테크 유튜브 채널의 ‘🧀제리의 MVC패턴’ 영상을 시청하며 MVC 패턴을 학습했습니다. 그리고 이를 2주차 미션에 적용하여 유지보수에 용이한 프로젝트 구조를 완성할 수 있었습니다.
두 번째로, 불규칙한 커밋 습관입니다.
1주차 미션을 진행하며 기능 단위로 커밋하는 데 익숙하지 않아, 구현을 마친 뒤 차례로 커밋하는 방식을 취했습니다. 이런 불규칙한 커밋 습관을 개선하고자, 2주차 미션은 먼저 요구사항을 면밀히 분석하고 기능을 세분화하는 데 시간을 들였습니다.
또한, 운영진 측에서 제공한 참고 자료인 ‘좋은 git 커밋 메시지를 작성하기 위한 7가지 약속’을 읽으며, 의미 있는 커밋 메시지를 작성하려 노력했습니다.
그 결과, 2주차 미션에서는 커밋 히스토리만으로도 작업 흐름을 파악할 수 있을 정도로 규칙적인 커밋 습관을 기를 수 있었습니다.
세 번째로, 유닛 테스트에 대한 무지입니다.
1주차 미션에서는 유닛 테스트에 대한 이해가 부족해 통합 테스트만 진행했습니다. 이로 인해 개별 클래스를 따로 테스트하지 못한 점이 아쉬웠습니다.
2주차부터는 운영진 측에서 제공한 자료를 바탕으로 유닛 테스트를 학습하고 적용했습니다. 이를 통해 버그를 조기에 발견하고 수정할 수 있어 개발 속도가 빨라지는 경험을 했습니다.
또한, 유닛 테스트를 여러 차례 진행하다 보니 코드가 공통 유형별로 반복된다는 점을 깨달았습니다. 그래서 일반 테스트, 입출력 테스트, 예외 테스트의 세 가지 유형으로 정리해 ‘🍱급할 때 꺼내먹는 Junit5!’라는 글을 작성하고, 이를 커뮤니티에 공유했습니다.
글쓰기의 즐거움
2주차 미션을 진행하며 글쓰기의 즐거움을 배울 수 있었습니다.
다른 분들과 코드 리뷰를 주고받으며 객체 지향 디자인 패턴을 학습하면 더 높은 품질의 코드를 작성할 수 있다는 것을 깨달았습니다. 그래서 인프런에서 '얄코의 객체 지향 디자인 패턴' 강의를 수강하여 관련 지식을 쌓았습니다.
단순히 코드만 읽는 것보다 클래스 다이어그램을 그리면 이해가 더 쉽다는 것을 깨닫고, 코드로부터 클래스 다이어그램을 자동으로 생성하는 방법을 찾아보던 중 ChatGPT를 활용하는 방법을 알게 되었습니다.
누군가에게 분명 도움이 될 거라는 생각에 ‘🤖 ChatGPT야! 클래스 다이어그램을 부탁해! (with 🧜♀️ Mermaid +🎨 draw.io)’ 라는 글로 정리하여 커뮤니티에 공유했습니다.
독자들이 쉽게 이해할 수 있도록 단어 선택과 문장 구조를 고민하는 과정에서, 작은 차이로도 글의 인상이 달라지는 점이 흥미로웠습니다. 무엇보다 글 쓰는 과정 자체가 매우 즐거웠습니다.
그래서 3주차 미션부터는 매주 적어도 한 번은 프리코스 커뮤니티와 공유할 만한 글을 블로그에 포스팅하여 나누기로 새로운 목표를 세웠습니다.
마치며
프리코스를 지원하며 다음과 같은 두 가지 목표를 세웠습니다.
- 주석이 없어도 이해할 수 있는 코드 작성하기
- 프로그래머로서 스스로의 강점과 약점을 객관적으로 구분하는 메타인지 기르기
4주간의 프리코스도 어느덧 절반이 지난 시점에서 돌아보면, 이 목표들에 대해 진전을 이룬 것 같아 뿌듯합니다.
앞으로 남은 기간 동안 새롭게 발견할 저의 강점과 약점, 그리고 이해하기 쉬운 코드를 작성할 수 있을 만큼 강화된 프로그래밍 역량이 기대됩니다!
'우아한테크코스 > 프리코스' 카테고리의 다른 글
3주차 회고 : ㅠ.ㅠ (3) | 2024.11.08 |
---|