목표
좋은 소프트웨어 설계 목표는 필요한 시스템을 만들고 유지보수하는데 최소한의 비용과 인력이 투입되는 것이다. 만약 새로운 기능이 추가되는데 점점 더 많은 인력 또는 비용과 시간이 필요하다면 무언가 잘못되고 있는 것이다.
사례 연구
엉망진창이 되어 가는 신호
- 시스템을 급하게 만드는 것
- 코드와 설계의 구조를 깔끔하게 만들려는 생각을 전혀 하지 않을 경우
무엇이 잘못되었나?
현대의 개발자도 이와 비슷한 경주를 하며, 토끼와 유사한 과신을 드러낸다. 물론 개발자가 잠을 자는 것은 아니다. 오히려 정반대다. 현대의 대다수 개발자는 뼈 빠지게 일한다. 하지만 그들의 뇌는 잠에 취해 있다. 훌륭하고 깔끔하게 잘 설계된 코드가 중요하다는 사실을 알고 있는 바로 그 뇌가 잠자고 있다.
시장에 출시하는 것이 먼저니까 일단 돌아가게 개발하자는 착각이 가장 위험하다. 이후에 리팩터링하겠다는 약속은 절대 지켜지지 않는다. 이후에 새로운 기능 개발 건이 기다리고 있을 뿐이다.
결론
개발 조직이 할 수 있는 최고의 선택지는 조직에 스며든 과신을 인지하여 방지하고, 소프트웨어 아키텍처의 품질을 심각하게 고민하기 시작하는 것이다.
소프트웨어 아키텍처를 심각하게 고려하기 위해서는 비용 산정이 필수이다.