
블랙잭 미션으로 정신없는 4주차를 보냈다. 이제 슬슬 미션의 난이도가 올라가는게 느껴진다. 처음 예상했던 것보다 시간이 훨씬 오래걸렸고 까다로운 코드가 많아서 이래저래 쉽지 않은 미션이었던 것 같다.
이번 미션의 핵심 주제는 클린 코드였다. 평소에도 클린 코드를 중요하게 생각하면서 코드를 짜는 편이어서 크게 걱정하지 않았는데, 생각보다 쉽지 않았다. 구현기능이 복잡해지면서 일단 돌아가는 코드 에 초점을 맞추게 되었고 클린 코드는 계속해서 뒷전으로 미루게 되었다. 나중에 개발자로 일하게 된다면 내가 생각하는 이상적인 클린 코드는 어려울 수도 있겠다..?는 생각을 하게 됐던 것 같다.
이번 미션이 클린 코드였던만큼 클린 코드에 대한 나만의 기준을 정리하면 좋을 것 같다.
글을 읽듯 최대한 막히지 않고 이해할 수 있는 코드가 클린 코드라고 생각한다.
여기서 가장 중요한 것은 네이밍이 아닐까 싶다. 이번 미션에서 유독 네이밍을 고민하는 시간이 길었다. 사다리타기, 자동차 경주 등 지금까지는 잘 알고 있는 주제로 미션을 진행해서 비교적 빠르게 네이밍을 결정했다. 하지만 블랙잭은 처음 접해봐서 어떤 네이밍이 적절할까 고민을 많이 했던 것 같다. 특히 도메인에 전문적인 이름을 지을 것인가? 도메인을 잘 모르는 개발자가 보아도 이해할 수 있는 네이밍을 지을 것인가?를 두고 페어와 오랫동안 이야기했다. 프로그램이 커질수록, 클래스가 많아질수록 의미를 잘 드러내고 이해하기 쉬운 네이밍이 중요하다는 것을 느꼈고 페어와 공감했지만 이를 나타낼 적절한 용어를 찾는 과정이 어려웠다. 주변 동료들에게 어떤 이름이 더 이해하기 쉬운지 물어봤던 게 도움이 됐던 것 같다.
또한 적절한 시점에 리팩토링을 하는것이 중요하다고 느꼈다. 어느정도 리팩토링을 했다고 생각하고 찜찜한 부분은 TODO를 남기고 넘어가며 구현했다. 하지만 구현을 완료하고 코드를 보니 어디서부터 손을 대야할지 막막했다. 또한 이미 설계된 클래스 구조를 변경하는게 어려웠고, 변경할때마다 파급 효과가 커서 여러 클래스의 코드를 고치는 것이 힘들었다. 결과적으로 미션을 제출할 때 내가 만족할만큼의 클린한 코드를 구현하지 못한 것 같았다. 다음 미션부터는 조금 더 시간을 들여 리팩토링을 진행하면서 구현해보고 싶다.
내 첫번째 목표인 모르는 것은 솔직하게 물어보자 이 부분은 꽤나 잘 지키고 있는 것 같다. 이번주에 SS수업으로 페어와 피드백하는 시간이 있었는데 페어가 이번까지 미션중에서 가장 의견 충돌이 많았다고 했다. 충돌?이라는 단어가 적절하지 않을 수 있는데, 어쨌든 내가 생각하는 것과 다른 부분이 있으면 그냥 넘어가지 않고 꼭 질문했다. 그리고 리뷰어에게 점점 더 많은 질문을 하게 된다. 미션을 진행하다 궁금한 점이 있으면 짤막하게 노션에 적어뒀고 그 중 질문을 추려 리뷰어에게 질문했다. 개발에는 정답이 없고 이렇게 코드를 구현한 나만의 이유가 있으면 된다는 점, 그리고 사소한 질문도 같이 고민해주고 의견을 주는 크루들 덕분에 질문이 점차 자연스러워지는 것 같다 👍