책 '클린 코더 (The Clean Coder)'

유예지·2025년 6월 4일

0. 미리 읽어두기

  • 프로 프로그래머의 핵심 : 태도(attitude), 원칙(discipline), 행동(action)

1장. Professionalism (전문가 정신)

  • 프로그래머는 단순히 일하는 사람이 아니라, ‘전문가’ 다.
  • ‘전문가’ 란 자신의 한계를 알고, 필요한 경우 거절을 할 줄 아는 사람이다.
  • 실패를 숨기지 말고, 조기에 문제를 공유하여 해결해야 한다.

2장. Saying No (거절하기)

  • 실현 불가능한 일정이나 요구에 “No” 라고 말하는 것이 진짜 전문가의 자세이다.
  • "Yes” 는 신중히 사용해라. 모호한 동의는 신뢰를 깬다.

3장. Saying Yes (수락하기)

  • “Yes” 를 했다면 끝까지 책임지고 완수해야 한다.
  • 확신 없이 수락하는 것은 무책임한 태도이다.
  • 수락은 곧 “전념(commitment)” 이다.

4장. Coding (코딩)

  • 코딩은 단순한 기능구현이 아니라, 가독성과 유지보수성을 고려한 설계행위다.
  • 코딩 중간중간에도 테스트와 리팩터링을 습관화 하라.

5장. Test Driven Development (TDD, 테스트 주도 개발)

  • TDD는 품질과 신뢰성을 확보하는 도구다.
  • 테스트는 코드에 대한 실시간 피드백을 제공한다.
  • 실패하는 테스트를 먼저 작성하고, 이를 통과시키는 방식으로 코드를 작성하라.

6장. Practicing (연습하기)

  • 실전 외에도 계속 연습해야 전문가가 될 수 있다.
  • ‘코딩 카타(Coding Kata)’ 를 통해 루틴을 반복 연습하는 것을 추천.
  • 반복은 자연스러운 숙련으로 이어진다.

[ 코딩 카타 (Coding Kata) ]

  • ‘Kata’ 란 일본 무술에서 유래한 단어로, 정해진 동작을 반복하면서 숙련도를 높이는 훈련 방법을 말함
  • 이를 프로그래밍에 적용한 것이 ‘코딩 카타(Coding Kata)’
  • 즉, 작은 프로그래밍 문제를 반복적으로 풀면서, 근육처럼 사고력과 손을 훈련하는 것
  • 책에서 제안하는 코딩 카타 방식
    • 1) 반복이 핵심
      • 단 한 번이 아니라, 같은 문제를 여러 번 푸는 것이 중요
      • 예를 들어 “FizzBuzz”, “로마 숫자 변환”, “Prime Factors” 같은 문제를 여러 번 반복해서 풀기
    • 2) 속도 보다는 정확도, 구조, 품질
      • 처음에는 정답을 맞추는 데 집중하되, 반복하면서는 더 나은 설계와 테스트 방식, 더 깔끔한 리팩터링을 연습
    • 3) 시간을 정해놓고 진행
      • 집중력을 높이기 위해 타이머 사용
        • 예: 30분 동안 카타 한 세트
    • 4) 혼자 또는 페어로
      • 혼자 연습해도 좋고, 페어 프로그래밍으로 진행해도 유익함
    • 5) 다양한 관점으로 반복
      • 동일한 문제를 다른 언어나 스타일로 풀어보기도 추천됨

7장. Acceptance Testing (인수 테스트)

  • 고객이 원하는 것이 정확히 구현되었는지 검증하는 테스트가 중요.
  • 고객과의 긴밀한 협력이 필요하며, 인수 테스트는 이 소통의 핵심 도구이다.

8장. Testing Strategies (테스트 전략)

  • 단위 테스트, 통합 테스트, 시스템 테스트 등 다층적인 테스트 전략이 필요하다.
  • 자동화 테스트는 빠르고 반복 가능한 품질 검증 수단이다.

9장. Time Management (시간 관리)

  • 자신의 시간을 제대로 관리하지 못하면 약속을 지킬 수 없다.
  • 계획, 추정, 집중(Flow)의 확보가 중요
  • “예상보다 오래 걸리는 일은 반드시 생긴다.”

10장. Estimation (일정 추정)

  • 추정은 데이터에 기반한 근거 있는 예측이어야 한다.
  • 추정과 약속은 다르다 → 추정은 예측, 약속은 책임

11장. Pressure (압박)

  • 현실적으로 마감 압박은 존재한다.
  • 압박을 받더라도, 테스트나 리팩터링을 포기해서는 안된다.
  • 압박 상황에서도 균형을 유지하는 것이 진짜 전문가다.

12장. Collaboration (협업)

  • 팀워크는 기술만큼 중요하다.
  • 팀원과의 상호 존중, 원활한 커뮤니케이션, 피드백을 주고받는 문화가 필요하다.

13장. Teams and Projects (팀과 프로젝트)

  • 프로젝트는 팀의 책임이며, 구성원들은 각자의 역할을 존중해야 한다.
  • 신뢰, 투명한 커뮤니케이션, 명확한 목표 공유가 좋은 팀을 만든다.

14장. Mentoring, Appernticeship, and Craftsmanship

  • 경험 있는 개발자는 후배를 멘토링해야 할 책임이 있다.
  • 소프트웨어 개발은 단순한 일이 아닌, 장인정신(craftsmanship)을 요구하는 작업이다.

0개의 댓글