책 소개
요약
소프트웨어를 개발하는 많은 기업은 그들이 "애자일"이라 부르는 것들을 도입한다. 하지만 애자일이 무엇인지, 어떻게 사용하는지에 대한 오해들이 만연하다. 여러분의 소프트웨어 개발팀의 기민함을 개선하고자 한다면 이 책의 명확하고, 구체적이며, 상세한 가이드가 도움이 될 것이다. 저자는 이 책의 1판 이후 10년 동안 쌓은 경험을 바탕으로 애자일 도입, 계획, 개발, 전달, 관리에 관한 종합적인 조언을 전달한다. 여러분의 팀이나 조직에 애자일 개발을 성공적으로 도입하는 방법을 학습하고, 애자일이 여러분에게 적합하지 않을 수도 있음을 확인해보자.
추천의 글
우리가 애자일 소프트웨어 개발 선언문을 작성했을 때, 업계의 변화를 시도했던 소수의 사람만이 우리를 지지했다. 20여 년이 흐른 지금 ‘애자일(agile)’은 주류로 자리잡았다. 그러나 애자일 소프트웨어 개발을 하고 있다고 말하는 사람들이 하는 행동은 우리가 20여 년 전에 공유한 비전과 비슷한 점이 거의 없다.
애자일 방식으로 작업하기 위해서는 소프트웨어 개발 작업 관리 및 기술적인 실행 모두에 상호 연결된 프랙티스의 그물(web)이 필요하다. 이런 프랙티스 중 많은 부분, 특히나 기술적인 프랙티스에 관해서는 이해가 부족하거나 이해하고 있더라도 프랙티스를 널리 가르치지 않는다. 그 결과 너무 많은 사람이 소프트웨어 제품을 구축하는 효과적인 방법이 무엇인지에 대한 왜곡된 관점을 갖고 있다.
제임스 쇼어는 애자일 운동(Agile movement)의 핵심 기둥인 익스트림 프로그래밍(Extreme Programming)의 길을 걸은 개척자들 중 한 명이다. 이 책의 1판은 내가 가장 좋아하는 책으로, 팀에서 애자일 프로세스를 적절하게 실행하기 위해 알아야 할 것을 보여주는 핸드북이었다. 제임스는 이후 다이애나 라센(Diana Larsen)과 함께 애자일 플루언시 모델(Agile Fluency Model)을 만들었다. 이 모델은 사람들이 애자일 접근 방식을 이용해 기술을 개발할 수 있는 다양한 방법에 대한 경험을 담았다. 이 모델에서 기본 스크럼 접근법이라 불리는 프로젝트 관리 기술의 단순한 적용은 고객의 요구사항에 초점을 맞춤으로써 어느 정도의 가치를 제공하지만, 많은 팀이 달성하고자 하는 높은 생산성과 안정성을 얻는 데 필요한 기술적 스킬은 부족하다.
이런 관점은 가치에 집중하는 방법과 해당 가치를 안정적으로 전달하는 방법에 많은 비중을 둔 이 책의 구조를 올바르게 이끌고 있다. 가치에 집중한다는 것은 강력한 팀워크의 중요성을 이해하고, 적응적 계획(adaptive planning) 기술을 개발하고, 그 결과 개발된 소프트웨어의 고객 및 사용자와 긴밀하게 협업하는 것을 의미한다. 딜리버리 신뢰성 테스트, 리팩터링, 디자인 및 공동 개발을 위한 필수 기술 사례에 중점을 둔다. 내부 품질이 높은 소프트웨어를 구축하면 비용이 절감되고 코드 전달 속도가 빨라진다는 직관적이지 않을 수도 있는 개념을 인식한다. 데브옵스(DevOps) 문화 및 지속적인 제공과 결합해 높은 빈도의 기능을 신속하게 프로덕션에 적용할 수 있게 지원한다. 팀은 이를 통해 소프트웨어가 실제로 사용되는 방법을 관찰함으로써 무엇이 더 가치 있는 것인지 더 많이 배울 수 있다.
나는 20년 전 운이 좋게 소트웍스(Thoughtworks)에 둥지를 틀었다. 우리 팀은 이런 유형의 기술을 사용해 고객이 새로운 소프트웨어 제품을 구축하고 오래된 레거시(legacy)를 대체하도록 지원한다. 제임스와 마찬가지로 우리는 익스트림 프로그래밍이 확고한 기반을 제공하는 것을 발견했고, 지난 20년 동안 이 기술을 적용해 큰 성공을 거뒀다. 그렇기에 나는 제임스가 10년 동안의 코칭 경험을 2판에 반영한 것을 보게 돼 너무나도 기쁘다. 가치 있는 일에는 시간이 걸리고 그 과정에서 좌절도 있을 것이다. 하지만 이 가이드북에는 껍데기만 남은 의식에서 벗어나 제임스와 내가 수년 전 이 기술을 처음 사용했을 때 느꼈던 활력이 있다.이 활력은 여러분의 여정을 도울 수 있을 것이다.
— 마틴 파울러Martin Fowler),
소트웍스(Thoughtworks) 수석 과학자
이 책에서 다루는 내용
◆ 기민함을 개선하라: 애자일을 성공하기 위해 필요한 조건들을 만들고 조직에 맞게 확장하라.
◆ 가치에 집중하라: 팀으로 작업하고, 우선 순위를 이해하고, 가시성을 제공하고, 지속적으로 개선하라.
◆ 소프트웨어를 신뢰성 있게 전달하라: 오너십을 공유하고, 개발 비용을 줄이고, 설계를 진화시키고, 지속적으로 배포하라.
◆ 가치를 최적화하라: 제품 계획, 예산, 실험을 소유하라. 시장을 이끄는 소프트웨어를 만들라.
이 책의 대상 독자
애자일 팀에서 업무를 하거나 미래에 그렇게 하기를 희망하는 모든 사람을 위한 책이다. 프로그래머는 물론이고 관리자, 경영진, 도메인 전문가, 테스터, 프로덕트 매니저, 프로젝트 관리자, 아키텍트, 운영, 보안, 디자이너, 비즈니스 분석가들을 모두 읽기에 적합하다.
목차
목차
- 1부. 기민함 개선하기
- 1장. 애자일이란 무엇인가?
- 애자일의 탄생
- 위기 속에서의 탄생
- 애자일 개발 선언
- 애자일의 정수
- 애자일이 승리하는 이유
- 애자일이 작동하는 이유
- 애자일이 실패하는 이유
- 2장. 애자일하게 되는 방법
- 애자일 연습하기
- 마스터하기 위한 여정
- 시작하기
- 3장. 기민함을 선택하라
- 애자일 플루언시 모델
- 영역을 선택하라
- 4장. 기민함에 투자하라
- 학습 시간을 확보하라
- 애자일 팀을 선택하거나 만들어라
- 애자일 코치를 선택하라
- 팀에 권한과 책임을 위임하라
- 팀 매니지먼트 스타일을 바꿔라
- 팀 룸을 만들어라
- 팀별로 학습 친화적인 목적을 만들어라
- 워터폴 거버넌스의 가정을 바꿔라
- 해로운 인사 정책을 바꿔라
- 보안 문제를 해결하라
- 5장. 변화에 투자하라
- 변화 이해하기
- 대규모 변화
- 변화 만들기
- 경영진을 끌어들여라
- 팀을 끌어들여라
- 이해관계자를 끌어들여라
- 더 읽을거리
- 6장. 기민함 확장하기
- 플루언시 확장하기
- 제품 및 포트폴리오 확장하기
- 2부 가치에 집중하기
- 집중하기 영역으로의 길
- 집중하기 플루언시 달성하기
- 7장. 팀워크
- 전체 팀
- 팀 룸
- 안전감
- 목적
- 컨텍스트
- 정렬
- 활력이 넘치는 업무
- 8장. 플래닝
- 스토리
- 적응적 계획하기
- 시각적 계획하기
- 플래닝 게임
- 실질적인 고객 참여
- 점진적 요구 사항
- 9장. 오너십
- 태스크 플래닝
- 수용량
- 슬랙
- 스탠드업 회의
- 정보가 풍부한 업무 공간
- 고객 예시
- ‘완료 완료’
- 10장. 책임
- 이해관계자 신뢰
- 이해관계자 데모
- 예측하기
- 로드맵
- 매니지먼트
- 11장. 개선
- 회고
- 팀 다이내믹
- 장애물 제거
- 3부. 신뢰성 있게 전달하기
- 전달하기 영역에 온 것을 환영한다
- 전달하기 플루언시 달성하기
- 12장. 협업
- 집단 코드 오너십
- 페어 프로그래밍
- 몹 프로그래밍
- 유비쿼터스 언어
- 13장. 개발
- 제로 프릭션
- 지속적인 통합
- 테스트 주도 개발
- 빠르고 안정적인 테스트
- 리팩터링
- 스파이크 솔루션
- 14장. 디자인
- 점진적 디자인
- 단순한 디자인
- 반영적 디자인
- 15장. 데브옵스
- 운영을 위한 빌드
- 피처 플래그
- 지속적인 배포
- 진화적 시스템 아키텍처
- 16장. 품질
- 버그 없음
- 사각지대 발견
- 사건 분석
- 4부. 결과물 최적화하기
- 최적화하기 영역에 온 것을 환영한다
- 최적화하기 플루언시 달성하기
- 17장. 자율성
- 비즈니스 전문성
- 비즈니스 의사 결정
- 책임과 감독
- 자금 지원
- 실험과 더 읽을거리
- 18장. 발견
- 검증된 학습
- 적응성
- 실험과 더 읽을거리