ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Aristocracy, Democracy, and System Design
    개발 일지 2025. 12. 1. 17:02

    유럽의 많은 성당 중에 Reims 성당이 아름다운 이유는 특정 부분이 훌륭해서가 아니라 전체적으로 일관된 디자인 때문이다. 이를 이룰 수 있었던 것은 8세대에 걸친 건축가들의 자신의 취향에 대한 희생 덕분이다. 시스템 프로그래밍도 이와 비슷하다. conceptual integrity를 지키기 위해서는 각각의 취향이 희생되어야 한다.

    시스템 프로그래밍의 목적은 컴퓨터를 쉽게 사용할 수 있게 하기 위함이다. 쉽게 사용할 수 있다는 것은 사용법을 익히는데 드는 시간보다 사용법을 익힘으로써 얻을 수 있는 시간의 크기가 클 때이다. 이를 위해서는 simplicity와 straightforward가 동시에 성취되어한다.

    conceptual integrity가 지켜지기 위해서는 한명의 똑똑한 사람에 의해서만 디자인이 결정되어야 한다. 좋은 아이디어가 있더라도 그것이 전체의 conceptual integrity를 해친다면 구현하지 않는 것이 좋다. 하지만 보통의 경우 스케줄의 압박 때문에 한 명이 디자인을 할 수 없다. 이럴 경우 두 가지 해결법이 있다. 첫 번째로 architecture와 implementation을 철저하게 구분하는 것이고 두 번째로는 구분된 각 팀에서 앞서 언급한 surgical team의 형태로 구성하는 것이다. architecture만 창의적인 일을 하는 것이라는 반발이 있을 수 있다. 당연히 architecture 팀에서 나온 아이디어가 베스트는 아닐 수 있지만 언급했듯이 conceptual integrity를 해친다면 구현하지 않는 편이 낫다. 그리고 implementation 쪽도 충분히 창의적이다.

    그렇다면 architecture팀에서 specification을 작성하는 동안 implementaion쪽에서는 무엇을 해야 할까. 가장 좋은 방법은 specification이 완성되면 implementaiton 팀을 채용하는 것이다. 하지만 바쁜 일정상 이는 불가능하다. 채용에도 시간이 오래 걸리기 때문이다. 따라서 architecture 쪽에서 specification을 완성하는 동안에 할 수 있는 일을 하면 된다. 하지만 철저히 간섭할 수 없고 완전한 조건으로 인식한 후에 할 수 있는 일을 찾아서 동시에 진행한다. vertical devision of labor, 즉 architecture와 implementation을 분리함으로써 더 시간을 아낄 수 있다.

    '개발 일지' 카테고리의 다른 글

    The Second-System Effect  (0) 2025.12.08
    The Surgical Team  (0) 2025.11.27
    The Mythical Man-Month  (0) 2025.11.25
    리팩토링은 코드를 이해하는 좋은 과정  (0) 2025.11.22
    The Tar Pit  (0) 2025.11.22

    댓글

Designed by Tistory.