전체 글
-
The Second-System Effect개발 일지 2025. 12. 8. 17:31
우리는 디자인하는 것과 실제로 구현하는 것을 아키텍트와 빌더 각각의 관심사로 분리시켰다. 그러면 아키텍트는 더 이상 더 싸고 빠르게 구현하는 것에 대한 책임이 없는데 그들의 invetive enthusiasm은 어디서 올 수 있는가? 그럼에도 아키텍트에게 주어진 제한은 명확하고 이는 지켜야 할 규율로 상호 간의 지켜야 할 것과 스스로 지켜야 할 것으로 존재한다. 첫 번째는 빌더들과 커뮤니케이션할 때 지켜야 할 규율이다. 아키텍트들에게 주어진 제한은 예산이다. 예산에 맞게 디자인이 나와야 하고 여기에는 예측이 들어간다. 이 예측은 실제 빌더들의 구현단계에서 확정되거나 조정된다. 만약 디자인이 예산을 못 맞추게 되면 두 가지 선택지가 있다. i) 디자인을 수정하거나 ii) 더 싼 구현을 요구하는 것이고 이..
-
Aristocracy, Democracy, and System Design개발 일지 2025. 12. 1. 17:02
유럽의 많은 성당 중에 Reims 성당이 아름다운 이유는 특정 부분이 훌륭해서가 아니라 전체적으로 일관된 디자인 때문이다. 이를 이룰 수 있었던 것은 8세대에 걸친 건축가들의 자신의 취향에 대한 희생 덕분이다. 시스템 프로그래밍도 이와 비슷하다. conceptual integrity를 지키기 위해서는 각각의 취향이 희생되어야 한다.시스템 프로그래밍의 목적은 컴퓨터를 쉽게 사용할 수 있게 하기 위함이다. 쉽게 사용할 수 있다는 것은 사용법을 익히는데 드는 시간보다 사용법을 익힘으로써 얻을 수 있는 시간의 크기가 클 때이다. 이를 위해서는 simplicity와 straightforward가 동시에 성취되어한다.conceptual integrity가 지켜지기 위해서는 한명의 똑똑한 사람에 의해서만 디자인이 결..
-
The Surgical Team개발 일지 2025. 11. 27. 13:08
많은 사람들이 똑똑한 사람들로 이루어진 작고 빠른 팀이 더 좋다고 한다. 너무 당연한 이야기이고 요즘 들어 특히 AI의 발전으로 인해 스타트업 업계에서도 많이 돌고 있는 말이다. 하지만 이 나이브한 간과한 문제가 있다. 그렇다면 어떻게 큰 시스템을 정해진 일정 안에 만들 수 있을까? 이것은 작은 팀만으로는 불가능하다. The Problem프로그래머의 생산성은 차이가 심하다. 연봉이 2배차이 나더라도 생산성은 10배까지 차이 날 수 있다. 200명으로 이루어진 팀이 있다고 가정해 보자. 여기에 25명의 매니저 역할을 하는 고급 프로그래머가 있다고 했을 때 우리가 해야 할 일은 175명을 자르고 25명의 매니저를 프로그래머로 바꾸는 것이다. 여전히 25명의 팀은 크다. OS/360을 완성하는데 3년동안 50..
-
The Mythical Man-Month개발 일지 2025. 11. 25. 17:03
소프트웨어 프로젝트들은 항상 늦어진다. 첫 번째 이유는 사람은 낙관적이기 때문이다. 그래서 일정을 설정하는데 오류를 범한다. 이러한 낙관론은 테스팅 단계에서 가장 크게 실패한다. 따라서 소프트웨어 일정을 잡을 때는1/3: 디자인1/6:코딩1/2:테스팅이런 식으로 코딩하는 시간은 1/6만 할애한다. 다음 이유는 프로젝트 매니저가 일정을 설정할 때 사람 명수에 따라 프로젝트 진행속도가 올라간다는 잘못된 가정을 하기 때문이다. 사람이 추가되면 사람을 교육하는데 드는 시간이 선형적으로 증가한다. 거기에 커뮤니케이션 비용은 지수적으로 증가하여 결국 사람을 추가하다 보면 프로젝트가 더 늦어지게 된다. 프로젝트가 늦어진 걸 아는 타이밍은 항상 데드라인이 얼마 남지 않은 마지막 기간이다. 이때 어떻게 대쳐 해야 할까...