로버트 마틴의 "클린 코더"

클린 코더(The Clean Coder)

아샬님이 진행하시는 하시는 개발자, 한 달에 책 한 권 읽기 모임에 처음 참여했다.
로버트 마틴의 클린 코더(The Clean Coder)를 읽고
모임에 참여해서 여러 개발자 분들과 함께 이야기를 나누었다.
인상깊었던 책의 구절들과 내가 느낀점들에 대해 정리하고자 한다.

1. 최소한의 기술 목록

클린 코더의 p57, 58의 두 페이지에 걸쳐 최소한의 기술 목록이 나와 있다.
디자인 패턴, 플로우 차트, UML 등등 다양한 기술들이 나와있는데, 최소한이라는 표현과
이 기술들을 어느 정도의 깊이로 아는 것을 의미하는가 대해 집중적으로 얘기를 나누었다.

예를 들어, UML을 안다는 건 무엇을 의미하는 것일까?
단순하게 UML 표기법을 의미하는 것일까?
시스템을 설계할 때, UML을 그려서 다른 사람에게 내 의견을 전달할 수 있는지의 여부가 중요하다.
우리가 UML을 공부하는 목적을 생각해보면, UML 표기법의 장인이 되는 것보다는
함께 일하는 동료와 UML을 도구로 소통할 수 있다는 점이 중요하다고 생각한다.

추천 도서

아샬님께서 UML에 관한 책으로 UML 실전에서는 이것만 쓴다를 추천해주셨고,
이 책은 추후 읽은 후 리뷰하고자 한다.

2. 일정 관리

일정에 쫓길수록 테스트 자동화를 해야 한다.
FackBook은 매일 하루에 4번 배포를 하고 있으며, 구글은 QA 조직이 따로 없다.
이렇게 할 수 있는 이유 중 하나는 자동화된 테스트가 계속해서 돌고 있기 때문이다.

3. TDD

테스트를 하는 이유는 우리가 작성한 코드가 어떤 상태라는 걸 알 수 있기 때문이다.
예를 들어, 기존의 코드를 바꾸었을 때 테스트가 줄줄이 깨질 경우는 설계가 잘못된 것이다.
(-> 의존성 관리가 제대로 되지 않고 있다는 것을 의미한다. )

코드 커버리지가 100을 한 번 찍은 후, 코드 수정 후 코드 커버리지가 100 미만으로 떨어질 경우,
TDD를 작성해 볼 수 있다.

4. 프로가 선을 그어야 할 자리다.

(p102)
로버트 마틴은 책에서 수년간의 경험을 통해 원칙을 깨면 느려질 뿐이라는 사실을 깨달았다고 한다.
소프트웨어 프로그램을 처음 한 번 만들고 마는게 아니지 않은가?
유지 보수를 위해서는 시간이 걸리더라도 소신있게 클린한 코드를 작성할 수 있도록 해야 한다.

5. 프로로서의 자세

(p63) 한다. 하지 않는다 둘 뿐이야. 해본다는 말은 없어. - 요다

  • 처음에는 개발자로 일하면서 “해보겠습니다.”라는 말을 자주 했었다.
  • 그게 신입의 자세라고 생각했고 열정을 보여줄 수 있는 말이라고 생각했었다.
  • 그러나 프로 개발자라면, 갑자기 요구사항에서 없던 기능을 추가하거나
    불가능한 기한 안에 해내라는 압박을 받을 때, 아닌 건 아니라고 확실하게 말할 수 있는 용기가 필요하다.
    불가능한 일을 매일 야근을 하며 한 노력이 아닌 프로는 결과로 말한다.
  • 기한이 코앞에 다가와서야 못한다고 하는 건 다른 팀에도 민폐를 끼치는 일이며 프로로서의 자세가 아니다.
  • 확실한 의사 결정을 통한 협업이야말로 프로 개발자로서 중요한 자세라고 생각한다.