소프트웨어 엔지니어링의 추상과 반복
소프트웨어 엔지니어링 측면에서 추상과 반복(iteration)은 종종 충돌하는 가치인 것 처럼 보인다. 이 부분을 추상화하는 게 좋을지, 아니면 반복하는 게 좋을지 판단하기 어려울 때가 자주 있다. 특히 개발자의 노동의 관점에서 보면 더욱. 예컨대 나와 다른 동료 A가 같은 프로젝트를 진행하고 있을 때, 서로 동시에 의존적인 어떤 컴포넌트가 존재한다면, 그것을 한명이 먼저 작업하고 다른 사람이 그것을 가져다 쓸 지(추상), 아니면 서로 각자 의존성을 해결하고 나중에 한번 더 작업할 지(반복) 선택하는 과정이라던지. 물론 이 경우엔 단순히 추상과 반복만의 문제는 아니긴 하다만.
아무튼 내가 믿는 것은 이것이다:
- 잘못된 추상보다 차라리 반복하는 것이 낫다.
- 추상은 잘못되기 쉽다.
다만, 반복의 매 주기마다 얕은 추상(잘못되기 어려운)을 곁들이려고 한다. 매 반복마다 작업의 양이 조금이라도 줄어든다면, 즉 추상이 조금이라도 쌓인다면 결국 적절한 수준의 추상에 도달할 수 있을 테니까.