독일의 다그스튤(Dagstuhl)에서 있었던 일주일간의 워크숍에서 이 책은 시작됐다. 세미나는 두 가지 이유에서 개최됐다. 하나는 1980년대와 1990년대 이후로 많은 것이 변했다는 점이고, 또 다른 하나는 현대 소프트웨어 엔지니어의 생산성을 높이려면 무엇이 필요한지 재조명해 봐야 하는 시기였기 때문이다.
그럼 1980년대와 1990년대 이후로 무엇이 변했을까? 오늘날의 소프트웨어 팀과 엔지니어는 전세계적으로 활동한다. 또한 소프트웨어 엔지니어는 국경을 넘고 시간대를 넘어서 협력하며 신속하게 변화하는 소프트웨어 개발 업무를 한다. 종종 엔지니어는 스택 오버플로(Stack Overflow)와 깃허브(GitHub) 같은 소셜 코딩 도구를 사용하기도 하고 노트북이나 개인용 전자기기에서 작업을 하기도 한다. 오늘날의 소프트웨어 엔지니어는 전례 없는 복잡한 작업을 하고 클라우드 안에서 큰 시스템을 구축하기도 한다. 또한 단일 저장소에 수백만 줄(가끔 몇십억 개)의 코드를 저장할 수 있고, 하루에도 몇십 번씩 소프트웨어를 배포할 수 있다. 이들은 웹 검색이나 블로그, 질의 사이트나 소셜 네트워킹 사이트 등과 같은 대화 채널을 평균 11.7개가량 사용한다. 1984년에는 소프트웨어 엔지니어는 직접 만나거나 전화 통화를 통해 대화해야 했다. 사람과 컴퓨터의 상호작용(HCI, Human-Computer Interaction), 컴퓨터 보조 공동 작업(CSCW, Computer-Supported Cooperative Work) 커뮤니티가 지식 노동자의 생산성을 높이는 데 엄청난 기여를 했고 이는 소프트웨어 엔지니어에게도 적용할 수 있었다. 더욱이 소프트웨어 개발에 관한 폭넓은 데이터를 사용할 수 있게 돼 소프트웨어 생산성의 정교한 분석도 가능해졌다.
시작이 된 세미나의 목표는 소프트웨어 개발에 있어서 생산성 이슈를 재고하고 토론해 소프트웨어 개발자의 생산성을 측정하는 방법과 생산성을 증진하기 위한 방법을 알아내는 것이었다. 세미나에서 이뤄진 토론은 다음 질문에 중점을 뒀다.
● 생산성이 개인과 팀, 조직에 어떤 의미일까?
● 생산성의 규모와 요소는 무엇인가?
● 생산성을 측정하는 목적과 의미는 무엇인가?
● 생산성을 연구하는 데 있어 가장 큰 도전 과제는 무엇인가?
이 책은 현대 소프트웨어 개발에서 생산성이 의미하는 바가 무엇인지 탐구할 것이다. 각 장은 다그스튤 세미나에 참여했던 사람과 그 외 수많은 전문가가 집필했다. 우리의 목적은 소프트웨어 생산성에 대한 전문가의 이해, 경험, 지혜를 요약하고 이를 알리는 것이다.