추상과 구체
Categories:
최근 어떤 이미지 웹사이트의 크롤러 도구를 만들면서 깊은 감회를 느꼈습니다. 프로토타입을 빠르게 구현한 뒤, 더 광범위한 범용성, 즉 추상화를 갖추게 하려다 보니 계속해서 리팩토링을 하게 되었습니다. 계속 뜯어고치느라 많은 시간을 썼고, 소프트웨어는 발전하는 것 같아도 기능적으로는 추가된 것이 없어 약간 답답했습니다.
처음부터 최적의 작성법을 명확히 알았다면 굳이 돌아가는 길을 줄일 수 있었겠지만, 계속해서 추상화하다 보면 끝이 없어서 오버 디자인의 함정에 빠지기 쉽습니다. 즉, 보름 동안 작성했음에도 기본적인 기능이 있는 프로토타입조차 만들지 못하는 상황이 벌어지는 것입니다. 즉각적인 효과를 추구하는 오늘날에는 이는 정말 피해야 할 일입니다.
소프트웨어의 적응성과 기능성은 서로 점진적으로 진화해야 합니다. 로마는 하루에 만들어진 것이 아닙니다. 매일 작은 목표를 세워 천천히 나아가면 언젠가 튼튼한 큰 나무가 될 것입니다.