설계에 대한 집착이 타당할까요? 객체의 역할을 고민하고 분리해서 추상화를 통해 인지 부하를 줄이는 것, 세부를 감추어 더 복잡한 것을 설계할 수 있는 환경을 마련하는 건 중요합니다.
실행을 그르치게 만드는 점에서, 설계에 대한 집착은 옳지 않습니다. 설계를 단단히 하고 실행하는 건 애자일보다 폭포수 모델에 가깝습니다.
설계를 완벽히 하고 실행하기에는 제품의 복잡도가 너무 늘었고, 더 늘어날 예정입니다. 고민의 비용은 그대로지만 실행의 비용은 저렴해졌고, 더 저렴해질 예정입니다.
실행과 피드백의 효용은 시뮬레이션보다 큽니다. 스페이스X, 테슬라의 제품이 부족한 상태로 시장에 나와 누군가의 웃음거리가 되었겠지만, 발전 속도와 지금의 상태는 놀랍습니다.
실행과 피드백은 제품의 성숙도를 키우는 것뿐만 아니라, 제품의 복잡도도 낮춥니다. 설계에서 “이렇게 하면 되겠지” 하고 추측한 부분은 실행하기 전까지 완전한 상태가 아닙니다. 변경 가능성을 염두에 두고 설계를 이어나가기 때문에, 해당 부분의 복잡도를 머릿속으로 안고 가는 것입니다. 실행을 해서 결과를 확인한 순간부터, 그 문제는 머릿속에서 지우고 이어나갈 수 있습니다.
그래서 분할 및 정복 알고리즘을 소프트웨어 개발에 적용해야 합니다. 분할 단위는 뇌가 받아들일 수 있는 범위이고, 이는 각자 숙련도에 따라 다를 것 입니다.
