인간, 조직, 권력 그리고 어느 SW 엔지니어의 변
프롤로그 소프트웨어 개발의 현장 속으로
사례연구: 덴버공항 수하물 처리 시스템 프로젝트
덴버공항 건설
시스템 구축과정
시스템 구축 실패 과정
프로젝트 실패의 결과
1부 소프트웨어가 뭔지 제대로 알아야 살아남을 수 있다
사례연구: 미국 항공 교통 통제시스템(AAS) 개발 프로젝트를 통해 본 소프트웨어의 특징
AAS 프로젝트의 전개 과정
AAS 프로젝트의 실패와 교훈
Chapter 01 소프트웨어는 생물이다
소프트웨어의 역할
사람들의 기대와 소프트웨어의 능력 사이의 간격
가설과 임시적인 해결책으로서의 소프트웨어
소프트웨어의 생물학적 특성
소프트웨어의 복잡성
Chapter 02 소프트웨어는 보는 사람에 따라 다르다 - 분류 문제
분류 문제
소프트웨어는 늙어간다
Chapter 03 고립된 소프트웨어는 죽는다 - 소프트웨어의 폐쇄성
Chapter 04 소프트웨어를 개발하는 새로운 원리 - 테스트 주도 개발
요구사항 분석과 가설의 차이점
폭포수 개발 모델에 대한 비판
반복 모델에 대한 비판
테스트 주도 개발 방식
Chapter 05 구조적인 복잡성을 해결하는 원리 - 아키텍처
구조적인 복잡성
소프트웨어 아키텍처 설계
아키텍처 지식관리
2부 능력 있는 팀을 만들어 임무를 완수한다
사례연구: 작은 규모의 프로젝트를 통해 본 소프트웨어 개발팀의 문제
Chapter 06 팀을 통한 개발 생산성 향상
이상적인 개발팀의 특성
자율적인 역할 조정과 비공식적인 조직
역할 떠넘기기
Chapter 07 개발팀의 권력 구조
친호 구조
팀의 정보 구조
팀 소속감
소프트웨어 개발팀의 희생양과 소외감
Chapter 08 소프트웨어 개발팀 내의 동조 압력
동조
동조 압력을 극복하는 방법
동조 압력으로 인해 명령이 먹히지 않는 경우
Chapter 09 소프트웨어 개발팀 내의 리더십과 팀 구축
소프트웨어 개발팀 구축
팀 구축과 리더의 역할
소프트웨어 개발팀의 성공을 위한 희생
Chapter 10 소프트웨어 개발팀 구축을 위한 실용적인 기술
원칙
프로세스 관리
조직관리
형상관리
3부 고도의 정치력으로 어떤 어려움도 헤쳐 나간다
사례연구: 미국 국세청 프로젝트 사례를 통해 본 소프트웨어 개발 조직의 정치적 특성
Chapter 11 조직 구조의 특성
고객사의 조직 구조
개발사의 조직 구조
Chapter 12 권력의 속성
감독자의 유형
소프트웨어 개발팀의 운명
조직에서 명령에 대한 태도
Chapter 13 권력을 획득하고 유지하는 방법
적은 자원으로 많은 일을 하는 방법
소프트웨어 개발자의 권력
4부 어떤 상황에서도 자아를 잃지 않는다
사례연구: 마이크로소프트 워드 개발 프로젝트를 통해 본 개인의 특성 247
Chapter 14 인간의 특징
욕망
두려움
편견
Chapter 15 인간에 대해 공부하자
인간을 이해하자
유연한 사고방식을 갖자
어떤 지식이 명확해지면 모호한 부분도 함께 파악해야 한다
회의주의
Chapter 16 소프트웨어를 개발하기 위해서는 건전한 정신이 필요하다 285
세상과 나를 분리하자
건전한 정신을 유지하는 방법
Chapter 17 소프트웨어 개발을 벗어나 진정한 자유를 획득해야 한다
자유를 획득하는 방법
행복을 누리는 방법
때로는 남들에게 나쁜 사람으로 인식될 수도 있어야 한다
에필로그 한국에서 탁월한 소프트웨어 엔지니어로 살아남자
부록 또 다른 SW 엔지니어의 변
주석 및 참조문헌