Alistair Cockburn이 지은 책.
이 책은 이 질문에 대해 답한다.
- 다른 작고 성공적인 프로젝트 팀들은 뭘 했길래 성공했을까?
- 그들은 어떤 프랙티스를 사용할까?
십여년 동안 성공적인 작은 팀들을 디브리핑하면, 대부분 같은 메세지를 답했다:
- 사람들이 함께 가깝게 앉게 하라. 자주 좋은 의지(goodwill)를 가지고 소통하게 하라.
- 조직(bureaucracy)을 최대한 활용하고 설계하게 하라.
- 실제 유저가 직접 개입하게 하라.
- 좋은 자동화 회귀 테스트 집합을 마련하라.
- 배포(shipping) 가능한 기능을 일찍, 그리고 자주 생산하라.
이 모든 것을 하고, 대부분의 상세한 프로세스는 will take care of themselves.
Crystal Clear는 간단하게 이렇게 묘사할 수 있다.
- 리드 디자이너, 그리고 2~7명의 다른 개발자들이 큰 방 혹은 인접한 방에 있고, 정보 방열기 - 화이트보드나 플립 차트 같은 것이 벽에 걸려 있고, 핵심 사용자에게 접근하며, 방해(distractions)를 멀리 하고, 동작하고 테스트 되었고 유용한 코드를 매 한두달 (뭐, 최대한 세달까지)마다 한번씩 전달하고, 그들의 일하는 스타일을 주기적으로 회고(reflect)하고 조정한다.
이 간단한 제안은 경험과 이론 모두에서 뒷받침한다. 소프트웨어 개발의 특징은 경제적으로 제약된 개발과 커뮤니케이션의 협력 게임(CooperativeGame)이라는 점이다.
Crystal의 유전 코드는 아래와 같은 것들로 만들어진다:
- 경제적 협력 게임 모델
- 선별된 우선순위들
- 선별된 속성들
- 선별된 원칙들
- 선별된 예시 테크닉들
- 프로젝트 예시들
경제적 협력 게임 모델은, 소프트웨어 개발은 일련의 '게임'이라고 말한다. 어떤 게임이냐면, 발명하기와 의사소통하기 외에는 아무 것도 없는, 전형적인 자원 제한 상태인 게임이다. 일련의 게임 안에 있는 각 게임은 리소스를 두고 경쟁하는 두 가지 목표가 있는데: 이 게임에서 소프트웨어를 완성하기와, 다음 게임을 위해 준비하는 것이다. 각 게임은 반복되지 않으므로, 매 프로젝트에서는 이전의 모든 게임들과 약간 다른 전략을 필요로 한다. 경제 협력 게임 모델은, 사람들이 자신의 작업에 대해 매우 구체적이고 집중적이며 효과적인 방식으로 생각하도록 유도한다.
Crystal 패밀리에서 공통되는 우선순위는
프로젝트 결과물의 안전성
개발의 효율성
관습의 Habitability (개발자들이 그렇게 살기에 알맞은)
Crystal은 7가지 안전 속성을 지향하며, 그 중 첫 3개가 Crystal의 핵심이다.
- 잦은 전달
- 반성적(reflective) 개선
- 밀접한(close) 커뮤니케이션 (osmotic communication)
- 개인적 안전감 (신뢰의 첫 걸음)
- 초점 (집중)
- 전문가 유저(expert users)에게 접근하기 쉬움
- 기술적 환경; 자동화된 테스팅, 형상 관리, 잦은 통합
Crystal의 원칙들은 책/AgileSoftwareDevelopmentTheCooperativeGame에 자세하게 설명되어 있다. 그 중 몇 가지 핵심 아이디어는:
- 요구사항, 설계 및 계획 문서에 필요한 세부 사항의 양은, 프로젝트 환경, 특히 감지되지 않은 결함으로 인해 발생할 수 있는 손상의 정도와 팀이 즐기는 개인 공동 작업의 빈도에 따라 다르다.
- 요구사항, 설계문서 및 프로젝트 계획과 같은 모든 중간 작업 제품 및 약속 노트를 제거하는 것은 불가능할 수 있다. 그러나 팀이 짧고 풍구하고 비공식적인 의사소통 경로를 사용할 수 있고, 작동하고 테스트된 소프트웨어가 조기에 자주 제공되는 정도로 줄일 수 있다.
- 팀은 팀의 특정 성격, 현재 지역 작업 환경 및 특정 임무의 특성에 맞게 작업 규칙을 지속적으로 조정한다.
Crystal Clear는 팀이 같은 방이나 인접한 사무실에 앉아 있는 2~8명으로 구성된 경우 적용할 수 있는 Crystal의 최적화이다. 긴밀한 의사소통의 속성은 삼투 커뮤니케이션으로 강화되는데, 이는 사람들이 매일 프로젝트 우선순위, 상태, 요구사항 및 설계에 대해 서로 논의하는 것을 의미한다. 이 향상된 의사 소통을 통해 팀은 다른 방법으로 가능한 것보다 암묵적인 의사 소통과 작은 노트에서 더 많은 작업을 할 수 있다.
Chapter 2. Applied (The Seven Properties)
Chapter 9. Distilled (The Short Version)
Crystal Clear의 핵심은 무엇인가?
ClystalClear는 작고 한 곳에 있는 팀을 매우 효율적으로 활용하기 위한 방법으로서, 만족스러운 결과물을 전달하는데 있어 효율성, 거주가능성(habitability), 안전성을 우선으로 한다. level-3 실천가가 CrystalClear를 간단하게 설명하면 이럴 것이다:
- 리드 디자이너, 그리고 2~7명의 다른 개발자들이
- 큰 방 혹은 인접한 방에 있고,
- 정보 방열기 - 화이트보드나 플립 차트 같은 것이 벽에 걸려 있고,
- 핵심 사용자에게 접근하며,
- 방해(distractions)를 멀리 하고,
- 동작하고 테스트 되었고 유용한 코드를
- 매 한두달 (뭐, 최대한 세달까지)마다 한번씩 전달하고,
- 그들의 일하는 스타일을 주기적으로 회고(reflect)하고 조정한다.
팀 멤버들은 그들이 적절하다고 생각하는 기법들을 사용하여 아래 안전성 속성들을 수립한다. 첫 세 가지는 CrystalClear에 필수적이고, 나머지 네 개는 팀을 safety zone으로 더 깊이 들어가게 할 것이다.
- 잦은 전달
- 반성적(reflective) 개선
- 밀접한(close) 커뮤니케이션 (osmotic communication)
- 개인적 안전감 (신뢰의 첫 걸음)
- 초점 (집중)
- 전문가 유저(expert users)에게 접근하기 쉬움
- 기술적 환경; 자동화된 테스팅, 형상 관리, 잦은 통합