Clean Coders 책 챕터 6 - Practicing

모든 프로들은 연습을 통해 최고 상태의 실력을 유지합니다.

Turnaround Time

“1960년대에 제가 코딩을 할 때에는, 컴파일 결과를 보기 위해 하루나 이틀정도를 기다려야했습니다.”

“현대의 프로그래머들은 컴파일을 위해 기다릴 필요가 없습니다. 제가 작성한 64,000 줄의 Java 프로젝트인 FitNesse를 전부 새롭게 빌드하고, 모든 유닛테스트와 통합테스트를 실행하는데에 4분도 채 걸리지 않습니다.”

“즉, 모든 QA 과정을 실행하는데에 소스코드에서부터 배포까지 4분도 걸리지 않는다는 뜻입니다.”

 

Kata

“Kata (품새)는 격투무술에서 특정 상황을 시뮬레이션하기 위해 사용되는 움직임의 모음입니다.”

“프로그래밍을 위한 kata는 특정 프로그래밍 문제를 풀기 위해 필요한 움직임 - 키보드 입력과 마우스 입력 -의 모음입니다.”r

“Kata를 통해 다양한 단축키도 익힐 수 있고, TDD와 CI와 같은 개념도 익힐 수 있습니다.”

“격투무술가가 여러 품새를 알듯이, 프로그래머도 다양한 kata를 익혀야합니다. 또, 기억에서 사라지지 않도록 자주 연습해줘야합니다.”

  • http://katas.softwarecraftsmanship.org
  • http://codekata.pragprog.com.
  • The Bowling Game: http://butunclebob.com/ArticleS.UncleBob.TheBowling-GameKata
  • Prime Factors: http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactors-Kata
  • Word Wrap: http://thecleancoder.blogspot.com/2010/10/craftsman-62-dark-path.html

“진짜 잘 하는 수준까지 되려면, 음악을 틀고 리듬에 맞춰서 코드를 칠 수 있도록 되어보세요.” (ㄷㄷ)

 

Wasa

“주짓수를 배울 때, wasa를 많이 했습니다. Wasa는 마치 두명이 하는 kata와 같은겁니다. 한쪽이 공격, 한쪽이 방어를 하며 동일한 움직임을 여러번 반복하며 서로의 롤을 바꾸게 되죠.”

“프로그래머도 마찬가지입니다. 한쪽이 유닛테스트를 작성하고, 다른 쪽이 그 테스트를 통과하는 코드를 짜는거죠.”

“기존의 kata를 할 수도 있습니다. 이미 결과가 어떻게 나올지 알기 떄문에, 서로의 키보드/마우스 입력을 지적해주며 서로 얼마나 kata를 잘 기억하는지 평가해줄 수 있죠.”

 

Randori

“Randori는 자율적인 스파링입니다.”

“프로그래머의 randori는 ㄷ이렇게도 할 수 있습니다. 프로젝터를 켜서 벽에 화면을 보이게 하고, 한명이 테스트를 적고 앉습니다. 다음 사람은 테스트를 통과하는 코드를 작성하고, 또 테스트를 하나 새로 적습니다. 이렇게 테이블에 앉은 모든 프로그래머들이 돌아가면서 테스트-코드-테스트-코드를 작성하며 마칩니다.”

 

Broadening your experience

“고용주들은 보통 개발자들에게 단 하나의 언어, 플랫폼, 도메인에 집중하기를 원합니다. 이 구조에 익숙해진다면 우리의 이력서와 마인드셋인 시간이 지날수록 점점 더 좁아지게 될 겁니다.”

Open source

“의사나 변호사들이 하는걸 따라해보죠. 본인 분야가 아닌 다른 분야의 작업에 기여를 하면서 분야를 넓혀가는겁니다.”

“당신이 Java 프로그래머라면 Ruby on Rails 프로젝트에 도전해보세요. 당신이 C++ 프로그래머라면 Python 프로젝트에 도전해보세요.”

Practice Ethics

“프로들은 개인 시간에 연습합니다. 고용주가 우리의 능력을 최상위로 유지해줄 의무는 없어요. 환자들도 의사들에게 수술을 연습하라고 돈을 주는게 아닙니다. 관객들도 뮤지션들에게 스케일 연습하라고 돈주는게 아니죠.”

연습을 하는 시간은 개발자 본인만의 고유의 시간이니, 어떠한 언어를 사용하던, 어떠한 플랫폼을 사용하던 상관없습니다.”