두 가지 가치에 대한 이야기
행위
소프트웨어의 첫 번째 가치는 바로 행위다.
- 프로그래머를 고용하는 이유는 이해관계자를 위해 기계가 수익을 창출하거나 비용을 절약하도록 만들기 위해서다.
아키텍처
소프트웨어의 두 번째 가치는 ‘소프트웨어’라는 단어와 관련이 있다. ‘소프트웨어’라는 단어는 ‘부드러운soft’과 ‘제품ware’이라는 단어의 합성어다.
소프트웨어는 ‘부드러움을 지니도록’만들어졌다. 소프트웨어를 만든 이유는 기계의 행위를 쉽게 변경할 수 있도록 하기 위해서다. 만약 기계의 행위를 바꾸는 일은 어렵게 만들고자 했다면, 우리는 소프트웨어가 아니라 하드웨어라고 불렀을 것이다.
소프트웨어가 가진 본연의 목적을 추구하려면 소프트웨어는 반드시 ‘부드러워’야 한다.
다시 말해 변경하기 쉬어야 한다. 이해관계자가 기능에 대한 생각을 바꾸면, 이러한 변경사항을 간단하고 쉽게 적용할 수 있어야 한다.
소프트웨어 개발 비용의 증가를 결정짓는 주단 요인은 바로 이 변경사항의 범위와 형태의 차이에 있다.
바로 이 때문에 개발 비용은 요청된 변경사항의 크기에 비례한다. 또한 개발 첫 해가 다음 해보다 비용이 덜 들고, 다음 해에는 그 다음 해보다 비용이 적게 드는 이유도 이 때문이다.
더 높은 가치
기능인가 아니면 아키텍처인가? 둘 중 어느것의 가치가 더 높은가? 소프트웨어 시스템이 동작하도록 만드는 것이 더 중요한가? 아니면 소프트웨어 시스템을 더 쉽게 변경할 수 있도록 하는 것이 더 중요한가?
업무 관리자의 변경 요청에 “변경 비용이 너무 커서 현실적으로 적용할 수 없다”라고 대답하면, “실질적으로 변경이 불가능한 상태에 처할 때까지 시스템을 방치했다”며 당신에게 화낼 가능성이 있다.
아이젠하워 매트릭스
소프트웨어의 첫 번째 가치인 행위는 긴급하지만 매번 높은 중요도를 가지는 것이 아니다.
소프트웨어의 두 번째 가치인 아키텍처는 중요하지만 즉각적인 긴급성을 필요로 하는 경우는 절대 없다.
일의 우선순위를 매길 수 있는 방법은 아래와 같다.
-
긴급하고 중요한
-
긴급하지는 않지만 중요한
-
긴급하지만 중요하지 않은
-
긴급하지도 중요하지도 않은
아키텍처, 즉 중요한 일은 이 항목의 가장 높은 두 순위를 차지하는 반면, 행위는 첫 번째와 세 번째에 위치한다는 점을 주목하자.
아키텍처를 위해 투쟁하라
이러한 책임을 다하려면 싸움판에 뛰어들어야 하며, 더 정확히는 ‘투쟁’해야한다.
맡은 업무 자체를 봐도 소프트웨어 아키텍트는 시스템이 제공하는 특성이나 기능보다는 시스템의 구조에 더 중점을 둔다. 아키텍트는 이러한 특성과 기능을 개발하기 쉽고, 간편하게 수정할 수 있으며, 확장하기 쉬운 아키텍처를 만들어야 한다.
하나만 기억하자. 아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.