프레임워크를 작성하는 데 있어 가장 필요한 능력은 무엇일까 ? 프레임워크의 사용자는 다른 프로그래머이기 때문에 프레임워크를 작성하는 사람은 아무래도 old한 경력이 좀 된 프로그래머여야 할테니 기본적으로 언어나 툴의 능숙한 사용같은건 제약요소가 되지 않는다.

개인적으로 가장 중요한 능력은 "눈" 이라고 생각한다. 물론 물리적인 눈을 말하는게 아니라 "관점"의 의미를 가지는 눈이다. 대부분의 프로그램은 스파게티 코드로 얽혀있고 꼬아져 있다. 와인버그는 일찌기 "건물을 짓는 사람들이 프로그래머가 소프트웨어를 제작하는 방식으로 건물을 짓는다면, 창공에서 날아온 첫번째 딱따구리는 전 인류의 문명을 파괴할 것이다"라고 말한바가 있다. (http://cjhgogox.egloos.com/1757251 프로그래머가 비행기를 만든다면..:) 불안정한 소프트웨어에서 거미줄처럼 얽혀 있는 이런 막연한 공간에서 존재하지 않았던 공통점을 발견하는 것은 프레임워크 개발에 가장 필요한 능력임과 동시에 가장 어려운 능력이기도 하다.

예컨데 여기의 Validation Framework는 예전에 루비의 선언적 프레임워크란 글을 읽고 반나절만에 작성하였다. 이전의 명령형이나 로직으로 처리하던 이전의 관점에 머물러 있을때는 보이지 않았었지만 새로운 관점을 익히니 문제가 떠올랐고 해결책은 더할나위없이 쉬웠다.

Code Analyzer같은 매트릭스 프로그램을 몇개 돌려보면 코드 중복을 찾는건 그다지 어려운 일이 아니다. 그러나 수십만줄의 코드 사이에서 구조적인 중복을 발견하는 것은 쉬운일이 아니다. 그나마 이 블로그의 소위 인프라 시스템 프레임워크라고 할 수 있는 DB, Configration, Message 등이 그나마 나은건 문제에 대한 인식이 쉽기 때문이기도 하다. 그 외의 프레임워크는 해결책을 찾기 전에 문제를 찾아야 하고 그 문제의 해결책은 그 문제를 바꾸지 않아야 한다. 그래서 더 어렵다.

다만 도움이 될 수 있는 한가지 말을 하자면 한사람이 2가지 관점을 가지는 것보다 다른 관점을 가진 두사람이 만나 협력하는 것이 좀더 쉽다.


'Framework > 아키텍쳐 일반' 카테고리의 다른 글

Self-Signed Java Applets  (0) 2009.06.01
여섯번째 계 - Encapsulation  (0) 2009.04.14
Here is Dragon  (0) 2009.03.12
프로그래밍 패러다임  (0) 2009.03.12
아키텍쳐 패턴 - Broker 패턴  (0) 2009.03.12
Posted by bleujin