프로그래머를 고용하는 이유는 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하도록 만들기 위해서다.
프로그래머는 이해관계자가 기능 명세서나 요구사항 문서를 구체화할 수 있도록 돕는다.
소프트웨어의 두번째 가치는 단어와 관련이 있다.
소프트웨어는 부드러움을 지니도록 만들어졌다. 소프트웨어를 만든 이유는 기계의 행위를 쉽게 변경할 수 있도록 하기 위해서다.
소프트웨어는 반드시 부드러워야 한다 - 즉, 변경하기 쉬워야 한다.
이해관계자는 범위가 비슷한 일련의 변경사항을 제시할 뿐이지만, 개발자 입장에서는 복잡도가 지속적으로 증가하는 퍼즐 판 위에서 이해관계자가 계속해서 퍼즐 조각을 맞추라는 지시를 하는 것처럼 느껴진다.
소프트웨어 시스템이 동작하도록 만드는 것이 더 중요한가? 아니면 소프트웨어 시스템을 더 쉽게 변경할 수 있도록 하는 것이 더 중요한가?
- 변경 가능한 시스템을 만드는 것이 베스트이지만, 변경에 드는 비용이 변경으로 창출되는 수익을 초과하는 경우 현실적으로 수정이 불가하기도 하다.
유명하다.
긴급한 문제가 아주 중요한 문제일 일은 드물고, 중요한 문제가 몹시 긴급한 경우도 거의 없다.
소프트웨어의 첫 번째 가치 - 행위
- 긴급하지만 매번 높은 중요도를 가지는 것은 아니다.
소프트웨어의 두 번째 가치 - 아키텍처
- 중요하지만 즉각적인 긴급성을 필요로 하는 경우는 절대 없다.
소프트웨어 개발자를 고용하는 이유는 이 딜레마를 해결하기 위해서이다.
기능의 긴급성이 아닌, 아키텍처의 중요성을 설득하는 일은 소프트웨어 개발팀이 마땅히 책임져야 한다.