노트를 얼마나 다듬었는지 나타냅니다.
- 새싹생각을 처음 정리한 노트
- 묘목다시 읽고 설명과 근거를 다듬은 노트
- 나무핵심 생각과 설명이 비교적 안정된 노트
어느 단계든 새로운 생각이나 근거에 따라 내용이 달라질 수 있습니다.
본질적 복잡성과 부수적 복잡성을 구분해야 한다
목차
소프트웨어의 복잡성은 문제와 도메인 자체에서 오는 본질적 복잡성과, 도구·구현 방식·반복 작업에서 생기는 부수적 복잡성으로 나눠볼 수 있다. 부수적 복잡성은 우발적 복잡성(accidental complexity)이라고도 부른다.
부수적 복잡성을 본질적인 것처럼 방치하면 개선 기회를 놓친다. 반대로 본질적 복잡성을 부수적인 것처럼 없애려 하면, 복잡성을 해결하는 대신 판단과 위험을 보이지 않게 만들 수 있다.
AI 시대의 적용
AI는 반복 구현과 도구 사용처럼 부수적인 복잡성을 크게 줄여준다. 하지만 도메인 판단과 트레이드오프까지 대신 처리하면서 본질적 복잡성이 해결된 것처럼 보이게 할 수도 있다.
따라서 AI를 사용할 때는 다음을 구분해야 한다.
- 실제로 제거된 복잡성
- 검증·운영·복구 단계로 이동한 복잡성
- 결과물 뒤에 가려진 판단과 트레이드오프
출처
- No Silver Bullet: Essence and Accidents of Software Engineering - 프레더릭 브룩스가 1986년에 제시한 본질적 복잡성과 부수적 복잡성의 구분