이 챕터는 팀 전체에게 실용주의 기법들을 어떻게 적용할수 있는지에 이야기한다.
팀 전체가 깨진 창문을 용납하지 않아야 한다.
단단히 통제되는 팀이라도 자기네 프로젝트가 심각하게 변화하는 것에 대해 둔감할 수 있다.
모든 사람이 적극적으로 환경변화를 감시해야 한다.
애초에 합의사항에 있지 않았던 것들을 항상 점검하도록 하라.
새 요구사항에 대해서는 수치를 보유하라.
이미 일어난 변화를 거부할 필요는 없다 단지, 그런 일이 벌어지고 있다는 것을 알고 있으면 된다.
소통이 제일 중요하다!
프로젝트 팀 이름을 유별난 이름으로 지어라!
ex) 신화의 도시, 양을 잡아먹는 앵무새 등등
팀은 정체성 확립의 기반을 얻을 것이다.
의사소통으로 중복된 일을 제거한다
팀원에게 역할을 부여해서 관련된 일은 해당 팀원에게 물어보는 식으로 하면 좋다.
ex) 팀원 A에게 프로젝트 사서로 임명하여 문서와 코드 저장고를 관리하는 책무를 맡김 다른 팀원이 어떤 정보를 찾을 때 A를 1번째로 찾아간다.
팀을 기능 중심으로 조직하라.
팀을 기능적으로 분리하고 그 기능에 대해 책임지도록한다.
이렇게 하면 어떤 변화가 생기더라도 전체가 영향받는 일이 없게 된다.
자신의 산출물에 대해 주인의식을 더 많이 느낀다.
일관성과 정확성을 보장하는 훌륭한 방법은 팀이 하는 모든 일을 자동화하는 것이다.
팀은 개인들로 이루어진다는 사실을 명심하라.
각 팀원이 자신의 방식대로 빛나게 해 주어라
그러고 나서 계속 덧칠하려는 욕구를 참는 것이다.
생각 없이 행할 수 있는 중요한 작업의 수가 늘어남에 따라 문명은 발전한다.
-알프로드 노스 화이트헤드-
수작업 절차를 사용하지 말아라.
반복적이고 지루한 작업은 컴퓨터에게 시키자 우리에겐 더 중요하고 어려운 일들이 있다.
버그찾기는 그물낚시와 비슷하다
잔챙이를 잡기 위해 촘촘한 그물을 사용 : 단위 테스트
식인 상어를 잡기 위해 큰 그물 : 통합테스트
일찍 테스트하고, 자주 테스트하라. 자동으로 테스트하라.
코드를 작성하자마자 테스트해야 한다.
버그가 빨리 발견될수록 고치는 비용이 적어진다.
모든 테스트가 통과하기 전엔 코딩이 다 된 게 아니다.
고의로 버그를 심고 테스트가 잡아낼지 검증하는 것이다.파괴라를 써서 테스트를 테스트하라.
커버리지 분석 도구는 테스트 중에 코드를 지켜보고 코드의 어느 라인이 실행되지 않았는지 기억한다.
코드 커버리지보다 상태 커버리지를 테스트하라.
많은 사람들은 테스트를 마지막까지 미룬다. 하지만 일찍 시작해야 한다.
테스트는 대부분 자동화되어야 한다
현존하는 테스트의 그물을 빠져 나가는 버그가 있으면, 다음번에는 그걸 잡아 낼 수 있도록 새로운 테스트를 추가해야 한다.
버그는 한번만 잡아라.
즉, 버그를 발견한 사람이 그때가 그 버그를 찾는 마지막 순간이어야 된다는 것이다.
아무리 흐린 먹물이라도 가장 훌륭한 기억력보다 낫다.
-중국 속담-
한국어도 하나의 프로그래밍 언어인 것처럼 다뤄라.
문서가 애초부터 전체의 일부가 되게하고, 나중에 집어넣으려고 하지 말라.
너무 많은 것은 너무 적은것 만큼이나 좋지 않다.
단순하고 간략하게 어떻게 사용되는지, 어떤 일을 하는지 설명하는 주석을 달면 좋다.
변수 이름 또한 유의미한 것으로 해야하고 줄이지 말고 온전한 이름으로 사용해야 한다.
저자의 이름을 주석으로 넣으면 책임감도 생기고 문제가 일어났을 때 바로 찾을 수 있다.
웹 문서의 뷰를 최신의 것으로 유지하는 것이 더 쉽다.
현실적으로 프로젝트의 성공은 사용자들의 기대를 얼마나 잘 충족하는가에 따라 측정된다.
그들의 기대에 못 미치는 프로젝트는 이론적인 면에서 결과물이 얼마나 훌륭하던 간에 상관없이 실패로 간주된다.
사용자의 기대를 부드럽게 넘어서라.
사용자와 소통하는 것이 중요하다.
그들이 기대하는 것보다 조금더 해서 그들을 기쁘게 해주어라
상대적으로 손쉽게 추가할 수 있는 기능
이것들은 모두 상대적으로 표면적인 것들 이기때문에 기능 팽창으로 시스템에 영향을 주지 않는다.
자신의 작품에 서명하라
자신의 코드뿐만 아니라 다른 사람들의 코드도 존중해주어야한다.
개발자 간의 황금률("남들이 자신에게 해주기 바라는 대로 남에게 행하라")과 상호존중이라는 기반을 지키는 것이 핵심이다.
코드에는 주인이 있어야 하지만 꼭 개인일 필요는 없다.