"완벽함"은 과잉 엔지니어링이 아니다

Perfection Is Not Over-Engineering

많은 팀이 '완벽함'을 과잉 엔지니어링과 혼동한다. 하지만 저자는 과잉 엔지니어링의 진짜 정의는 '잘못된 문제를 푸는 것'이라고 주장한다. 명확한 요구사항과 제약 조건이 있으면 완벽한 해결책은 단 하나뿐이며, 그것이 바로 완벽한 것이다. 시스템도 제품으로 봐야 하며, 요구사항 수집의 실패가 과잉 엔지니어링의 근본 원인이다. 세 명이 유지보수하는 다섯 개의 마이크로서비스 예를 통해, 불필요한 분산이 데이터 무결성을 해치고 운영 부담만 늘리는 경우를 설명한다. 결론적으로, 완벽함이 문제가 아니라 모호한 요구사항이 문제라는 것이다.

과잉 엔지니어링은 '잘못된 문제를 푸는 것'이다. 그게 전부다. '너무 신경 쓴다'거나 '너무 좋게 만든다'는 뜻이 아니다.