마틴 파울러(Martin Fowler)는 내부 품질(internal quality)을 고려하지 않으면 감당할 수 있는 시간 안에 개선할 수 있는 능력을 매우 빠르게 잃어버린다고 이야기했습니다.
“내부 품질이 좋지 않으면 이런 일이 발생합니다. 처음에는 작업 진행이 빠르지만, 시간이 지남에 따라 새로운 기능을 추가하기가 점점 더 어려워집니다. 작은 것을 변경하려 해도 프로그래머는 이해하기 어려운 코드의 많은 영역을 이해해야 합니다. 어떤 것을 바꿨을 때 의도하지 않게 잘못된 부분이 생기면서 오랫동안 테스트해야 하고, 고쳐야 할 새로운 결함들이 발생합니다.”[32]
바로 이런 상황을 소프트웨어 공학이 해결해야 합니다. 소프트웨어 개발 프로세스를 더욱 규칙적으로 만들고 이 프로세스가 조직을 지탱해야 합니다. 몇 달, 몇 년, 혹은 수십 년간 말이죠.
소프트웨어 공학은 소프트웨어 개발 프로세스를 더욱 ‘규칙적’으로 만들고, 조직을 ‘유지’할 수 있어야 합니다.