시작하며
지난 2주차가 독서를 통해 자기주도학습을 실천한 주였다면, 이번 3주차는 독서도 역시 지속했지만 큰 변화로 “함께 나누기”에서 함께 성장한 주였다고 정리할 수 있을 거 같다. 이번 3주차엔 어느 정도 2주동안 쌓아온 프리코스에서의 학습법도 생기고, 프로세스에도 익숙해지니 커뮤니티에 적극 참여할 용기가 생겼다. 그래서 이번 주차엔 프리코스 커뮤니티를 통해 내가 성장한 이야기를 적고자 한다.
공유 1 : 내가 찾은 설계 방법을 공유했다
함께나누기 채널에 처음으로 글을 올렸다. 바로, 지난 주에 책을 읽고 이를 적용하며 객체지향적인 설계를 했던 과정을 공유한 것이다. 원래 이 내용을 리드미에만 올렸다가 코드리뷰를 오시는 분들께 호평을 받고 자신감을 얻어 포스팅으로도 다시 작성했다. 20개 넘는 좋아요를 받고 예상보다 좋은 반응에 뿌듯했다. 설계가 익숙하지 않은 다른 누군가에게 도움을 줬단 사실도, 내 설계 방법이 좋다고 평가받은 것도 모두 내게 동기부여로 다시 돌아왔다. 이 기분을 한 번 더 느끼고 싶어져 바로 다음 포스팅을 작성하기 시작했다.
공유 2 : 공유의 즐거움을 느껴 지속하고자 한다
이 다음 포스팅은 1, 2주차 코드리뷰 과정 속에 내가 얻은 정보들을 모두 사견과 함께 정리한 포스팅인데, 정보의 동기화를 위해 공유하고자 했다. 다만, 단순히 내 생각만 읊어 완성되는 게 아니라 합리적인 생각들을 전파해야하기에 예상보다 훨씬 오랜 시간이 걸렸다. 거의 4일을 이 포스팅을 완성하는데 사용했기 때문이다. 더이상 시간을 더 투자하다간 이번 3주차 과제를 할 시간이 없을 거 같아서 검토는 아직 못했다. 이번 과제가 끝나자마자 검토를 마친 후 한 번 더 함께-나누기에 공유해 보람찼던 기분을 다시 느끼고자 한다.
공유 3 : 코드 읽기에 많은 시간을 들여보았다
코드리뷰 과정에서 배운 것을 정리하는 건 물론 배로 시간이 걸렸지만, 정리 외에도 단순히 코드 리뷰 자체도 지난 주차때보다 훨씬 시간을 많이 투자했다. 그 이유는 코스타에서 실제 현업에서 코드 읽는 게 7~8이고 설계, 구현, 테스트, 리팩토링은 2~3 밖에 안된다고 하신 말씀을 듣고 이를 나도 경험하고 싶어졌기 때문이다. 실제 코드리뷰를 나눈 인원은 4명으로 엄청 많은 편은 아니지만 4명이서 60개 가량의 코멘트를 정말 밀도 있게 나눴다. 코멘트 하나를 달 때도 예시코드까지 해서 10줄, 20줄씩 달아가며 서로의 코드를 분석하려 노력했다. 또 재밌었던 게 4명이 각자 의견이 다른 것들이 꽤 있었는데 이런 것들이 PR창에서 마치 스택오버플로우의 댓글창처럼, 토론처럼 교류되며 혼자선 생각 못했던 부분들을 생각해볼 수 있어서 좋았다.
이번주를 정리해보자면
이번주에 스스로 칭찬하고 싶은 점은 공유의 기쁨을 느꼈단 점이다. 단순히 좋아요에 기분이 좋았다기보단 내가 누군가에게 유용한 사람이 되었단 점이 기뻤다. 또, 혼자서 글을 작성하고 조회수가 0인 포스팅을 올렸을 때보다 당장 이 글을 읽을 사람이 있다 생각하니 계속해서 내 글을 다시 읽어보게 되었었는데 이 역시 글의 퀄리티와 스스로의 사고를 확장하는데 도움이 되었다.
이번주에 한 가지 더 칭찬하고 싶은 점은 미션 진행 중에 지난 주차 코드리뷰에서 배운 것들을 적용하려 리마인드했고, 거기서 끝나는 게 아니라 스스로 새로운 키워드들을 더 찾아나갔단 점이다. 예를 들어 지난 주에 전략 패턴을 이야기하며 오버엔지니어링에 대해 이야기했었는데, 이번 주차에 과제를 하며 템플릿 메서드 패턴이나 커맨드 패턴이란 걸 처음 접하게 되었는데 이를 지난 주에 배운 YAGNI 원칙과 연결해 생각해봤을 때 오버엔지니어링이라 판단해 적용하진 않았다.
또, 여러 패턴을 공부하다 패턴은 아니지만 나만의 패턴이라고 볼 수도 있는 코드를 만들었다. 제네릭을 적용해 try catch를 제어하는 코드를 스스로 사고해 만들었고, 적용해 겪은 문제를 해결했다. 새로운 개념을 배우고, 스스로 판단해 보는 흐름을 가져간 경험이 개발자로서 성장하기에 앞으로도 좋은 발판이 될 거 같다.
이번주에 가장 아쉬운 점은 네이밍이다. 함수를 한 가지 기능만 하게 분리하다보니 굉장히 많은 함수가 만들어졌는데 신이 수많은 피조물의 이름을 붙이기 힘들었던 심정을 알 거 같았다. 다음주엔 한글 단어만 정의해두지 말고, 영어 단어들도 정의해두어 네이밍을 좀 더 유용하게 해보고 싶다.또, 이번 주차에 코드 리뷰와 과제 구현 각각에 시간 분배를 실패한 느낌이 없지 않아 있는데, 다음 주차엔 코드 리뷰는 어차피 계속 며칠 동안 해나갈 것이니 일단 과제 구현에 먼저 들어가면 좋을 거 같다.
다음주를 계획하자면
이번 주차엔 디자인 패턴쪽을 공부하다 tdd까진 욕심내지 못했는데, 마지막 주차엔 기필코 tdd를 적용할 것이다. 3주간 내가 배운 것을 핵심 키워드로만 정리하자면 아래와 같다.
•
1주차 : MVC 패턴, 매직넘버
•
2주차 : 객체지향적인 설계, 단위 테스트, 일급 컬렉션, 전략 패턴(YAGNI원칙)
•
3주차 : 각종 디자인 패턴(템플릿, 커맨드 패턴), 함수형인터페이스, 제네릭, 예외 처리
•
(예정) 4주차 : TDD + 알파
대부분 들어만 보았고 잘 모르거나 처음 접한 것들이었는데 이들에 대해 딥다이브할 수 있어 좋았다. 나는 토이 프로젝트 경험이 많은 편이다. 그런데, 부끄럽게도 딥다이브 경험이 적다. 즉, 매번 feature 중심의 단발성 프로젝트에서 기능을 쳐내기 바빴지, 깊이 있게 고민해보고 딥다이브한 프로젝트는 크게 없는 거 같다.
이번에 프리코스 과정에서 느낀 점은 나는 다른 친구들보다 더욱 딥다이브가 필요하단 점이었다. 코드 리뷰 중 만난 분들과 말하다보면 개인 프로젝트에서 온갖 공식문서를 찾아가며 딥다이브를 해본 경험이 있는 사람들이 꽤 되었다. 지난 주에 책의 필요성을 느낀 것처럼 확장적인 사고를 위해선 홀로 고군분투하는 시간이 필요한 거 같다 생각했다. 그렇기에 지금 하고 있는 프리코스 과정이 정말 내가 딱 맞는 교육법이라 생각되었고, 이런 생각을 할 기회를 갖게 됐음이 감사했다.
프리코스 마지막 주차까지 후회 없이 임하고 싶다. 그리고 4주간의 기간이 끝나고도 프리코스에서 딥다이브하던 습관을 이어나가고 싶다. 성장과 공유의 즐거움을 느끼는 개발자가 되고 싶기 때문이다.