멤버십 3주차를 마쳤다.
배우고 느낀 것들
코드는 썩는다.
좀 긴 기간으로 스프린트를 진행하다보니 내 코드가 썩고있다는걸 실시간으로 느낄 수 있었다.
작성할땐 잘 읽히던게, 다음날이 되면 읽히지 않는... 굉장한 현상을 겪었다.
결합도가 가면 갈수록 높아지는 느낌을 받았다.
계속해서 분리하려고 했지만 정말 쉽지않았던 것 같다.
그래서 리팩터링을 읽으면서 프로젝트를 진행했다...만 아직 얼마 못읽어서 실질적으로 뭔가 개선해본건없다.
그래도 나름대로 다른 활동 멘토링이나 여러 곳에서 질문을 해본 결과 나름대로의 결론을 낼 수 있었다.
고건 바로...
테스트코드를 미리, 기능 구현 중간중간에 작성하기
왜 이런 결론을 내리게되었느냐...
기본적으로 유닛테스트를 작성하게되는데, 유닛테스트는 단일한 함수를 테스트하는 것이다.
단일한 함수를 테스트하는 것이므로, 외부 환경, 외부 함수들에 대한 의존성을 떨어뜨려야한다.
모킹이 필요한 부분은 어쩔 수 없지만, 어찌됐던 다른 함수들과의 관계를 최대한 줄일 필요가 있다.
이걸 하다보면, 자연스럽게 전체 코드에서도 의존성이 줄어들게 된다.
또, 변경이 일어날때 테스트코드에서도 변경이 일어나게 되므로, 어떻게 하면 변경을 더 줄일 수 있을지 한번 더 고민하게 되는 것 같다.
마지막으로, 테스트코드가 있으니 조금 더 과감하게 구조를 변경하고, 리펙터링을 시도할 수있다.
이것과 관련해서 클린아키텍처를 공부해볼 생각이다.
https://daryeou.tistory.com/280
나만의 지식맵 그리기
이번주부터 옵시디언을 도입해서 학습한 주제들을 기록하고, 이들을 엮어가고 있다.
이렇게 하자 놀라운게, 기존에는 학습하기 굉장히 어렵다고 느끼고, 읽기 힘들다고 느낀 주제들이 잘 정리되었다는 것이다.
지식을 나만의 언어, 나만의 지식맵으로 바꿔갈 수 있었다.
가장 크게 느낀 것이 http와 CORS였다. CORS를 처음 본건 작년 8월이었던 것 같다.
이후 항상 프로젝트를 하면서 CORS를 만났는데, 항상 이번에야 말로! 하면서 문서를 읽다가 실패했던 것 같다.
하지만, 이번에는 옵시디언을 사용하며 개념을 제대로 학습할 수 있었다.
지금에야 와서 생각해보건데 과거에 실패한 원인은 정보를 수동적으로 읽었기 때문일 것이다.
읽다가 모르는 단어가 나오면 찾아보긴 하나, 읽기 힘들어져서 포기하기 일수였다.
수동적인 태도, 수동적 읽기만 했기때문이다.
쓰기의 위력
하지만 이번 주에 옵시디언을 도입하면서 학습에 " 명시적인 쓰기 과정" 이 더해졌다.
이 한가지 과정이 더해짐으로서 나의 태도를 수동적인 상태에서 적극적인 상태로 변화시킬 수 있었다.
모르는 단어가 나오면 옵시디언 문서 링크로 처리한 뒤 단어를 또 학습하고, 단어 학습이 완료되면 돌아와서 읽던 문서를 마저 완성했다.
이걸 완성할 수 있었던 것은 옵시디언의 그래프 뷰의 기여가 크다. 비어있는 문서의 경우, 색상이 다르게 표기된다.
그래서 이후에라도 이 문서를 채우게 된다.
코드와 개념의 연결
더불어, 이렇게 기본적인 쓰기가 선행되다 보니, 코드를 작성하는 과정에서 이슈들을 개념에 연결시킬 수 있었다.
경험과 지식을 연결시킬 수 있는 간단한 방법을 하나 찾아냈다.
더이상 목으로 날아가는 비둘기를 안봐도 될지도...?
아쉬운점, 개선할점
좀 더 유지보수하기 좋은 코드를 작성해보기
더이상 하루단위로 썩어가는 코드를 보고 싶지 않다...
클린아키텍처와 테스트를 중간중간에 잘 작성해서 좀 천천히 썩는 코드를 작성해보자.
4주차도 화이팅!!