내가 프로그래밍을 하면서 늘 지키는 원칙, 그리고 늘 지키고 싶은 원칙을 정리해본다. 프로그래밍이 잘 안될 때는 이 페이지를 보라.
기록
- 내가 수정할 가능성이 있는 모든 코드는 소스 저장소로 관리한다.
- 프로그램의 소스는 물론이고 설정 파일, 빌드 스크립트, 서버 관리 스크립트, IDE 설정 파일, 문서까지 모두.
- 다음에 또 해야 할 가능성이 있는 작업에 필요한 정보는 위키에 남겨라.
- 사건 사고에는 반드시 기록을 남겨라.
- 나만 어떤 정보를 알고 있는 상황을 어떤 형태로든 제거하라.
clean code that works
- clean code that works에 예외는 없다.
소스 코드, 테스트 코드, HTML, CSS, JavaScript, XML, fixture 등 모두 포함.
- that works를 먼저 해결하고 clean code를 해결하라.
- 중복을 제거하고, 의도를 드러내라. 중복만 제거하면 문서 없이 적응할 수 없는 코드가 나온다.
- fixture 작성은 테스트 코드 작성보다 훨씬 중요하다.
- TDD로 인한 생산성 향상이 내일 나타난다면 아직 개선의 여지가 많은 것이다.
- 리팩토링되지 않은 코드량이 늘어나면 관성이 커지고 이 관성은 변경 저항으로 작용한다.
SelfDescriptive 하게 이름을 지으라.
- 자동화하기 전에 단순화하라.
사용자 스토리
- 사용자에게 가치가 전달되기 전까지 나의 생산량은 0이다.
- 사용자 스토리는 실제 소비자 관점에서 가치를 발생시킬 수 있는 단위로 완결되어야 한다.
- 사용자 스토리는 오해의 여지가 없을 만큼 명확하게, 구현 방법에서 창의성을 발휘할 수 있을 만큼 두리뭉실하게
일 잘하기
- 문제가 발생하면 알아차릴 수 있게 만들어라.
- 지금 해야 하는 일을 적어라. 어디에든!
일을 잘게 쪼갤수록 좋은 프로그래머다. 그렇다고 늘 BabyStep을 밟을 필요는 없다. 막히면 쪼개라.
- 인터럽트 중에는 인터럽트를 걸지 말 것.
- 쉴 때는 컴퓨터 앞을 떠나서 멍 때려라.
- 커피숍이라서 자리에 컴터를 두고 나갈 용기가 없다면 주위에 예쁜 여자들을 구경하며 안구를 정화하라.
- 돈 세는 일을 줄여라.
- 돈을 셀 때는 머리를 많이 쓰지는 않으면서도 다른 생각을 못하고 돈 세는 데만 집중해야 한다. 이런 종류의 일은 실수가 발생할 가능성이 높으면서 머리를 낭비하는 일이다. 이런 일은 대개 머리 속으로 status를 유지해야 하는 일이다. 예를 들면 머리 속으로 status를 유지하면서 디버거로 step을 밟는다든지지 하는 것. 코드 돈 세는 기계를 만드는데 머리를 써라.