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