분류 전체보기
-
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만 할애한다. 다음 이유는 프로젝트 매니저가 일정을 설정할 때 사람 명수에 따라 프로젝트 진행속도가 올라간다는 잘못된 가정을 하기 때문이다. 사람이 추가되면 사람을 교육하는데 드는 시간이 선형적으로 증가한다. 거기에 커뮤니케이션 비용은 지수적으로 증가하여 결국 사람을 추가하다 보면 프로젝트가 더 늦어지게 된다. 프로젝트가 늦어진 걸 아는 타이밍은 항상 데드라인이 얼마 남지 않은 마지막 기간이다. 이때 어떻게 대쳐 해야 할까...
-
The Tar Pit개발 일지 2025. 11. 22. 16:28
선사시대를 상상해 보자. 타르핏에 빠진 맹수들이 벗어나려고 맹렬하게 몸부림치고 있다. 송곳니를 가진 사자든 몸집이 큰 매머드이든 빠져나오려고 노력할수록 더 깊게 빠져들어 결국 생명을 잃고 만다. 대규모 시스템프로그래밍은 타르핏과 같다. 많은 맹렬하고 천재적인 프로그래머들이 도전했지만 하면 할수록 프로젝트는 길어지고 들어가는 리소스는 많아지고 결국 프로젝트가 실패한다. 어떻게 해야 대규모 시스템 프로그래밍을 잘할 수 있을까.시스템 프로덕트 프로그래밍이 무엇인지 정의할 필요가 있다. 안드로이드를 개발한 개발자들은 총 8명이라는 것을 알것이다. 우리는 이런 작은 팀이 대규모 팀이 만든 시스템을 이기는 것을 종종 목격해 왔다. 하지만 이런 것이 가능한 것은 프로그램이 단순한 프로그램 레벨일 때뿐이다. 이때는 프..
-
마지막 연구일지연구 일지 2023. 8. 11. 20:13
연구를 그만두고 하고 싶었던 것을 시작해 보기로 했다. 연구를 하면서도 조금씩 시간을 내서 하고 있었지만 본격적으로 시작하면서 보이는 것들이 훨씬 많다. 흔히 파트타임으로 3개월간 배운 것들은 풀타임으로 1주일이면 배울 수 있다고 한다. 많은 것들을 배우며 신나기도 하지만 여전히 어두운 방에 자려고 누우면 불안감이 몰려올 때도 있다. 잘 되지 않을 경우 돌아오기로 기약을 했지만 그럴 일이 간절히 없었으면 한다. 그럼에도 연구하는 것이 즐거운 일이라는 것을 안다. 나중에 이제 시작하려는 일을 즐기고 있는 내가 돼있길 바란다.