Yunseok's Dev Blog

배운 것을 적는 블로그입니다.

클린 코더 서평

굉장히 부끄러운 경험일 수도 있는 엉클 밥의 자신이 경험한 이야기와 그 속에서 배운 교훈들을 아주 자세하게 알려준다. 프로 개발자라면 어떻게 행동해야 하는지에 대한 행동 강령책이다. 요즘에 좋은 책들을 많이 접하게 되었는데 프로그래머의 길 멘토에게 묻다 라는 책과 클린 코더 바로 이 책이다. 나는 개발 서적이라는 것은 헤드 퍼스트 디자인패턴이라는 책을 처음으로 읽었었다. 그 책을 읽음으로써 더 좋은 코드를 작성하려는 마음이 생겼었고 그다음 코드 컴플리트 2를 읽었었다. 그래서 나도 개발을 배우려는 사람을 만났을 때 디자인 패턴을 먼저 권했었다. 왜냐하면 내가 그렇게 배웠기 때문이었다. 나한테는 좋았다고 생각했기 때문이었다. 하지만 두 책 프로그래머의 길 멘토에게 묻다라는 책과 클린 코더라는 책을 읽고 나서 생각이 바뀌었다. 이 두 책을 가장 먼저 읽어야 한다. 물론 별로일 수도 있다. 나만 이 책에 감동을 받았을 수도 있다. 내가 책에서 나온 사례들을 이미 겪어서 더 와닿는지도 모르겠다. 처음 개발을 배울 때로 돌아가서 이 책을 읽었다면 어떤 느낌이었을까? 지금처럼 많은 깨달음을 얻을 수 있었을까 모르겠다. 이전의 나는 일정에 대해 싸우지 않았다. 최선을 다하면 할 수 있다고 생각했다. 내 체력을 굉장히 과대평가했다. 내가 틀렸다는 것을 알게 됐다.

아니라고 말하기

밥의 사례가 내가 겪었던 것과 너무 비슷해서 놀랬다. 2차 개발을 한다고 하여 열심히 만들고 원래 안된다고 했던 기능들도 계속 요구에 의해 받아줘서 힘들게 만들었는데 결국 서비스하지 않았었다. 프로라면 권위에 맞서 진실을 말할 수 있는 용기를 가져야 한다.

컨디션 조절

컨디션이 좋지 않은 상태에서는 코드를 작성하지 말라고 했다. 전에 해커톤 할 때 밤을 새우면서 했는데 그때는 도저히 힘이 나질 않아서 TDD를 하지 않았다. 몸이 피곤하니 생각이 제대로 안 낫고 이 정도는 넘어가도 될 것이라고 생각하며 원칙을 어겼다. 건강하지 못한 정신 상태에서 코드를 작성하는 일은 민폐를 끼치는 행위고 설계를 망치는 행위다.

음악

코드를 작성하는 일이 지루하다고 느껴질 때 음악을 들으면서 하고는 했는데 이런 행동들이 잘 설계된 코드를 작성하는데 좋지 않다고 하여 코드를 작성할 때 음악을 듣지 않기로 했다.

연습

프로 개발자라면 자신의 기술을 갈고닦아 연마해야 한다. 하루에 한 문제씩 풀겠다고 했다가 시간이 오래 걸려서 하루에 한 문제가 안 풀리다 보면 지쳐서 그만두고는 했는데 그런 것이 중요한 게 아니다. 정말 간단한 문제를 하나씩 꼭 풀기로 했고 다 안 풀리더라도 괜찮다. 매일 수련을 하느냐가 중요하다. LeetCode에서 문제를 다시 풀기로 하여 풀기로 했는데 금방 풀리는 문제들도 있고 또 금방 풀리다 보니 다른 사람들의 코드를 참고하거나 다른게 풀어볼 수 있는지 생각할 시간이 많아서 좋았다.

완료에 대한 정의

전에 일할 때도 완료에 대한 정의가 모호했던 것 같다. 완료했지만 배포는 아직 안 됐다던가, 배포했지만 오류가 많아서 제대로 동작하지 않는데도 완료했다고 말했던 것 같다. 완료의 정의는 말 그대로 다 됐다는 뜻이다. 모든 코드를 작성했고, 모든 테스트를 통과했음을 말하는 것이고, QA 전문가와 이해당사자들이 이를 인수했다는 뜻이다.

추정

추정은 정말 어렵고 두려운 일이었다. 얼마나 걸릴 것 같아요?라고 물어보면 대답하기가 쉽지 않았다. 두려워서 속으로 생각했던 것의 3배 정도를 말하고는 했는데 그러면 돌아오는 대답은 거의 뭐 때문에 그렇게 오래걸려요?라는 대답이 돌아왔었다. 그럼 나는 변명을 했다. 최악의 경우와 예상치 못한 일들이나 기술적인 변명도 늘어났었다. 이러한 방식이 옳지 않다는 걸 깨달았다. 추정이란 숫자가 아니라 분포다. 일어날 일들에 대해 낙관적인 추정 값, 가장 성공 가능성이 큰 값, 최악의 경우 세 가지를 모두 계산해야 하고 그것을 드러내야 이해관계자나 관리자가 대안을 생각할 수 있다.

압박

규율을 머릿속으로 잘 알고 있지만 시간의 압박 속에서는 잊어버리기 쉽다.