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