건축물을 설계하는 아키텍트는 나름의 추정 기법을 써서 예산에 맞추어 작업을 진행한다. 이 추정 금액은 향후 도급 입찰 시에 확정되거나, 수정되는데, 입찰가가 전부 예산을 초과하는 때
도 가끔 있다.
컴퓨터 시스템이나 프로그래밍 시스템의 아키텍트도 위와 비슷하나 다음의 특징이 있다:
만일 추정 비용이 너무 높게 나왔다면 아키텍트는 두 가지의 해법을 가진다:
후자는 구현자가 해야 할 일은 아키텍트가 함으로써 그의 방식에 도전
하는 감정이 개입되는 행동이다. 이 과정을 원활하게 하기 위해선 아키텍트는 다음을 명심해야 한다:
구현 담당은 대개 아키텍트를 변경하자고 응수할 것이다. 그 말이 맞는 때도 있는데, 사소한 기능이라도 실제로 구현해보면 의외로 비용이 많이 들 수 있기
때문이다.
아키텍트의 첫 작품은 단출하고 깔끔하다. 자신이 무엇을 하는지 스스로도 잘 모른다 는 것을 알고 있기에, 일을 함에 있어 조심스러우며 대단히 자제 하게 된다.
두 번째 것은 한 사람이 설계할 수 있는 것 중 가장 위험한 시스템
이다. 첫 번째를 만들면서 조심스레 한편으로 밀쳐 두었던 온갖 아이디어와 장식을 도입하여 설계가 과도 해진다.
두 번째 시스템 효과는 순수하게 기능적인 장식과는 조금 차이가 나는 또 다른 징후로 보여준다. 그것은 기본적인 시스템의 가정이 변해서 존재 가치가 없어진 기술을 계속 개선하려는 경향
이다.
아키텍트가 두 번째 시스템 효과를 어떻게 회피할 수 있을까? (두 번째 시스템을 건너뛸 도리는 없다)
x의 가치
는 한번 수행할 때 m 바이트의 메모리
와 n 마이크로초
이상은 아니다)을 부여한다. 이 값들은 초반의 의사결정에 안내 역할을 하며, 구현 중에도 모든 이들에게 지침과 경고가 된다.필자 역시 두 번째 시스템 효과를 많이 겪었는데, 당시에는 뭐가 문제인지 몰랐다. 이렇게 풀어서 쓰면 정말 당연한 소리라고 생각할 수 있는데, 실제 개발에 들어서면 이런 디테일이 안 보인다. 작가의 통찰력이 느껴지는 챕터였다.
[책] 맨먼스 미신: 소프트웨어 공학에 관한 에세이 (프레더릭 브룩스 지음, 강중빈 옮김)