84page
오래 전에 작성했던 코드를 지금에 와서도 고칠 부분이 없어 보인다면, 그것은 그동안 배운 것이 없다는 뜻이다.
1부 이념과 태도
1장 21세기의 소프트웨어 개발
고참 개발자
새로운 현실
2장 애자일
절차적인 관점에서의 애자일 원칙
기술적인 관점에서의 애자일 원칙
애자일을 따른다는 것
게임 체인저
피플 임파워먼트
프로페셔널의 진화
애자일 매니페스토
애자일 매니페스토의 원칙들
애자일 격변기
애자일 행오버
부분적인 전환
애자일 코치
새로운 기술적 실행 관례에 대한 거부감
소프트웨어 프로젝트를 바라보는 편협한 시각
나쁜 소식만 있는 것은 아니다
애자일과 소프트웨어 장인정신
요약
3장 소프트웨어 장인정신
더 나은 비유
위키피디아에서의 정의
좀더 주관적인 정의
짧은 정의
정의 이상의 의미
공예, 사업, 엔지니어링, 과학 또는 예술
소프트웨어 장인정신의 토론 이력
소프트웨어 장인정신 모임
경계를 지나
장인 교환 프로그램
소프트웨어 장인 커뮤니티
소프트웨어 장인정신 매니페스토
매니페스토
‘동작하는 소프트웨어뿐만 아니라, 정교하며 솜씨 있게 만들어진 작품을’
‘변화에 대응하는 것뿐 아니라, 계속해서 가치를 더하는 것을’
‘개별적으로 협력하는 것뿐만 아니라 프로페셔널 커뮤니티를 조성하는 것을’
‘고객과 협업하는 것뿐만 아니라, 생산적인 동반자 관계를’
생산적 동반자 관계가 될 준비가 안 된 고객
매니페스토의 문제점
요약
4장 소프트웨어 장인의 태도
내 커리어의 주인은 누구인가
고용자?피고용자 관계
끊임없는 자기계발
독서, 많은 독서
블로그
기술 웹사이트
팔로우할 리더 찾기
소셜미디어
끊임없는 훈련
카타
펫 프로젝트
오픈 소스
페어 프로그래밍
사회 활동: 다른 개발자들과 어울리기
‘개별적으로 협력하는 것뿐만 아니라, 프로페셔널 커뮤니티를 조성하는 것을’
의도한 발견
일과 삶의 균형
시간 만들기
집중: 뽀모도로 기법
균형
요약
5장 영웅, 선의 그리고 프로페셔널리즘
‘아니오’라고 말하는 방법 배우기
재앙의 기억
교훈
프로답게 행동하기
대안 제시
뜻밖의 실용적인 대안
깨어 있는 관리자
요약
6장 동작하는 소프트웨어
동작하는 소프트웨어만으로는 부족하다
정원 돌보기
보이지 않는 위협
자신이 만든 소프트웨어에 인질이 되는 상황
평범한 개발자가 아닌 장인을 고용하라
시간에 대한 잘못된 인식
기술적 부채에 대한 이야기
우리는 올바른 것을 하길 원한다
시간적 여유가 없는 바쁜 팀
내겐 없는 여유, 다른 누군가에겐 있는 여유
단위 테스트 작성은 별개의 업무인가
효율적인 시간 활용
몇 개월 후
레거시 코드
태도의 변화
고객과 개발자 모두의 만족
요약
7장 기술적 실행 관례
올바른 일 vs 올바른 실행
상황 논리
익스트림 프로그래밍의 역사
실행 관례와 가치
실행 관례를 통한 가치 창출
자동화된 테스트
테스트 먼저
테스트 주도 개발
지속가능한 통합
페어 프로그래밍
리펙토링
책임감
실용주의
요약
8장 길고 긴 여정
브라질 어느 십대 소년의 이야기
결단과 집중
어디로 가야 할지 모른다면
투자로서의 일터
당부의 말
자율성, 통달, 목적의식
회사 안에서의 커리어
요약
2부 완전한 전환
9장 인재 채용
전형적인 채용 공고
인터뷰할 시간이 없다는 변명
틀에 박힌 직무 요건
참고 정보로 필요한 직무 요건
일은 단순히 일이 아니다
추천 채용
커뮤니티의 활용
효과적인 선별 조건의 정의
적극적인 리쿠르팅
요약
10장 소프트웨어 장인 면접하기
비즈니스 협상
생산적인 파트너십을 알아보는 방법
회사 입장에서의 관점
지원자 입장에서의 관점
바람직한 면접 방법
올바른 집중
마인드 맵핑 대화
페어 프로그래밍 면접
개인 컴퓨터를 지참한 면접
맞춤형 면접
번트 홈런
기존 팀을 위한 채용, 새로운 팀을 위한 채용
사전 면접용 코딩 시험
지원자와 회사 모두 면접을 어떻게 하는지 알아야 한다
개발자 채용 면접은 개발자가 보아야 한다
요약
11장 잘못된 면접 방식
똑똑한 척하는 면접관을 세운다
수수께끼식 질문을 던진다
답을 모르는 질문을 한다
지원자를 바보로 만든다
인터넷 접속을 막는다
종이에 코드를 작성하게 한다
알고리즘 문제를 낸다
전화 면접을 한다
요약
12장 낮은 사기의 대가
애자일 행오버: 낮은 사기
그저 ‘출퇴근’만 하는 개발자들로 인한 대가
낮은 수준의 동기가 만드는 제약
개발자들에게 열정을 불어넣기
요약
13장 배움의 문화
잘못된 방향으로 동기 부여하기
배움의 문화 만들기
북 클럽에 가입하기
테크 런치 진행하기
그룹 토론회에 참여하기
업무 교환하기
얼마 동안만 업무 교환하기
그룹 코드 리뷰하기
코딩 실습하기
사용할 기술은 가능한 자유롭게 선택하기
내부 학습 모임을 만들기
회사에서의 펫 프로젝트 시간을 허용하기
외부 기술 커뮤니티와 교류하기
아무도 참여하려 하지 않는다면
모범을 보여라
관심을 보이는 사람들에게 집중하라
강제하지 마라
모두를 변화시키려 들지 말라
모임에 대한 약속을 제때하라
허락을 구하지 마라
투덜대지 마라
리듬을 만들라
요약
14장 기술적 변화의 실행
회의론의 종류
준비
기술적 변화를 시작하는 방법
신뢰를 쌓으라
전문성을 확보하라
모범을 보여 사람들을 이끌라
신중하게 싸울 곳을 정하라
점진적으로 반복, 관찰, 수용하라
두려움과 자신감 부족
상사를 설득하는 방법
팀이 TDD를 수용하도록 설득하는 방법
회의론을 상대하는 방법
상아탑 아키텍트
권한과 책임
피해망상
이 모든 것을 다 챙겨야만 하는가
요약
15장 실용주의 장인정신
품질은 선택사항이 아니다
좋은 품질은 비싸고 시간이 오래 걸릴까
테스트 주도 개발이 항상 필요할까
리펙토링
소프트웨어 개발 방법의 한 가지 예
비즈니스 돕기
단순하고 빠른 솔루션
소프트웨어 프로젝트는 우리를 위한 것이 아니다
비범함과 평범함
단순한 설계를 위한 네 가지 원칙
디자인 패턴
패턴을 위한 리펙토링
장인정신과 실용주의
요약
16장 소프트웨어 장인으로서의 커리어
장인의 길
정직과 용기
커리어의 진전
다른 커리어 사다리
여정과 이정표
커리어 만들어 나가기
원하는 바를 모른다면 어떻게 해야 할까
다양성
소프트웨어 장인의 사명
부록 소프트웨어 장인정신에 대한 오해와 설명
소프트웨어 장인과 소프트웨어 개발자
장인정신 != 엘리트주의
견습생, 숙련공, 마스터
마스터 장인
근시안적 개념으로 보는 시선
장인정신과 XP
실행 관례와의 관계
애자일 코치와 관리자
소프트웨어 도제 제도
비유로 인한 문제