리뷰: The Design of Design

The Myhtical Man-Month 의 저자 Frederick Brooks 의 신작이다.

일단 이 책은 부제인 “Essay from a Computer Scientist”에 나와 있듯, 일종의 에세이다. 저자의 사고를 일정한 순서로 풀어놓고, 이를 묶어서 책으로 만든 느낌이다.

이 책에서는 “디자인”을 어떻게 하는가 – 그러니까 디자인(설계)을 어떻게 설계해야 하는가 – 를 다룬다. 좀 불명확하긴 하지만, 디자인이 뭔지, 그리고 여기에 들어가는 사람들이 어떻게 사고하며 (이를 위한 SW는 어떤지, 이걸 써본 결과는 어땠는지), 그리고 어떻게 상호작용하는 지도 다룬다. 더불어, 디자인에 영향을 주는 요소들 – 자원(예산), 제약 사항 등등 – 도 다룬다.

물론 이 디자인을 하기 위해 뭘 어떻게 배워야 하는지. 우리가 배울 수 있는 예제들은 어떤지, 그리고 그걸 배우곤 있는 지라거나 등등에 관해서도 열심히 얘기한다. 마지막으로 이 내용들을 몇 가지 사례(컴퓨터 관련, 건축 관련, 책 관련…)를 들어 설명한다.

저자인 브룩스가 IBM의 통합된 형식(프로그래밍 모델이라거나, OS라거나 …)의 컴퓨터 군으론 최초로, 거대한 성공을 이룬 IBM System 360 을 설계 책임자여서인지는 모르겠지만, 여기서 얻은 경험을 예제로 여러 번 들고 있으며, 컴퓨터 구조 및 OS 설계 과정을 케이스 스터디로 각각 다루고 있다.

개인적으로 가장 의미심장 했던 대목을 다루자면,

성공적인 디자인은 공통적으로 이런 패턴을 갖는다: 물리적으로 격리; 작은 팀; 극도의 집중; 한 명의 리더십. 특히 (특정 설계의) 후속 디자인에 비해 어떤 획기적인 디자인에서 이게 반복적으로 나타난다. 예로, Joe Mitchell의 스핏파이어 팀이나, U-2와 F-117을 만든 켈리 존슨의 스컹크 웍스(Skunk Works), 애플에 대항하기 위해 PC를 설계했던 IBM의 격리된 lab이 있다.

이거랑 직접적인 대응은 아니지만, 중간에 다룬 내용으로, system 360 의 아키텍처를 정하기 위해 13 개의 서브 팀으로 쪼갠 후 경쟁 시켰다는 대목이 나온다. 즉, 작은 팀(1~3명)으로 / 격리 시키고 / 단기에 집중 시켜서 얻어낸 결과로 결론을 내렸다는 것. 가장 좋았던 두 개의 후보의 차이는 나머지는 거의 차이가 없고, 6bit 바이트일지 8bit 바이트일지 였다고…

그리고 보론처럼 들어간 게,

저자가 본 모든 팀 프로젝트에서, 디자인의 각 부분은 매 순간 한 사람만 다룬다. 그 한 사람이 그 부분에 대한 제안서를 준비한다. 그리고 동료들과 어떤 부분이 영향을 받는지 아주 작은 세션(micro-session)의 디자인 리뷰를 한다. 그리고 협력해서 내린 각 결정과 방향에 따라 세부 사항을 작업한다.

몇몇 개발 방법론에서 얘기하는 것 처럼, 코드 소유자가 있고, 그 부분을 각자 진행하는 시간이 있다는 것. Coders at Work에 나왔던 Erlang 개발 얘기도 이거랑 비슷한 느낌이 좀 있다.1

덧. 책 내용 자체가 에세이라고 생각하면 상당히 가벼워지긴 하지만, 저자 자체가 갖는 이름값도 굉장하고 해서 좀 무겁게 읽었다. 왠지 이 책과 비교해서 번역서로 읽었던 Mythical Man-Month는 좀 거칠거칠했다는 느낌도 받게 되었음 – 그러니까 번역 후에 어조가 바뀐 느낌; 어쩌면 그 사이에 흘러버린 시간 때문일 수도 있지만.

덧2. 얼마 전에 이 책을 읽다 부끄러워졌다고 썼는데, 이 책에선 디자이너를 어떻게 하면 잘 키워낼까를 얘기하면서 많은 예제들을 보라고 한다. 그래서 나 지금은 좀 하고 있나?(..)


  1. 다만 이건 브룩스가 말하는 특별한 케이스 – 2 인 팀 – 이긴 하다. ↩︎