The Design of design 읽던 중에

부끄러워져서 다짐하는 의미로 글 한 토막.

Mythical Man Month 의 Freidric Brooks 의 신작(작년에 나왔지만) The Design of design 을 요즘 읽고 있다. 반 쯤 읽은 상탠데, 반복해서 강조하는 내용 중 하나가,

디자이너는 자기 분야의 “모범적인 예제(exemplar)”들을 탐구하고, 연구하고, 그 안에 담긴 원리(rationale)를 이해하고 상황에 맞게 해석해야 한다.

의 내용이다.

좀 더 자세히 쓰자면, 해당 분야의 이론이 되는 근거들(컴퓨터 공학이라면 수학/논리학/전기 공학 …)를 충분히 배우는 것도 중요하고 실무의 내용도 알아야 하며, 이를 이해하기 위해 역사적인 모범 예제들을 탐구하라는 것. 그리고 이런 게 정규 교육 과정의 일부가 되어야 한다라는 건데.

학부시절을 생각해보면 이런 걸 제대로 접해본 적이 있나 싶어서 좀 부끄러워 졌음. 작게는 컴퓨터 프로그래밍으로, 조금 넓게는 어떤 서버의 구조를 생각하고 이걸 구현하는 일을 직업으로 삼고 있는데, 나는 얼마나 이 분야의 역사적인 사례(exemplar)에 대해 탐구해왔나 생각해보니 Orz.

학부 내내 코드를 자세히 읽어본 건 거의 최초 버전의 UNIX 운영체제1, linux kernelp2 정도 뿐이다. 회사 와서는 이전에 작성된 서버코드를 여러 개(대략 4개?) 쯤 읽긴 했지만, 이건 빨리빨리 보느라 대충 봤으니…

뻔한 소리지만, 컴퓨터 공학 / 전산학 (Computer Engineering, Computer Science) 는 그렇게 역사가 오래된 분야가 아니다. 그런데도 나는 이 분야의 일부에 국한한 부분을 전문(?)으로 하면서도, 역사, 그리고 그 역사에 담긴 모범 예제들, 그리고 그 안에 담긴 생각들에 대해 너무나도 무지하다. 아직 젊다고 자위할 게 아니라, 좀 더 정진해서 배워야 할 필요가 매우 많다.


  1. 수업기간의 1/3 기간 정도를 Lion’s code 라는 책을 가지고 소스 코드를 읽으면서 진행한 수업이 있다; 덤으로 동아리 스터디 + 자체 공부로 약간의 UNIX 내부(system V r4) 약간 공부한 수준이니. ↩︎

  2. 2.4.x; 이것도 절반은 자의로 스터디하고, 나머지는 소스 코드 분석해서 문서화하는 알바 하면서 얻은 것. ↩︎