-
The Tar Pit개발 일지 2025. 11. 22. 16:28

선사시대를 상상해 보자. 타르핏에 빠진 맹수들이 벗어나려고 맹렬하게 몸부림치고 있다. 송곳니를 가진 사자든 몸집이 큰 매머드이든 빠져나오려고 노력할수록 더 깊게 빠져들어 결국 생명을 잃고 만다. 대규모 시스템프로그래밍은 타르핏과 같다. 많은 맹렬하고 천재적인 프로그래머들이 도전했지만 하면 할수록 프로젝트는 길어지고 들어가는 리소스는 많아지고 결국 프로젝트가 실패한다. 어떻게 해야 대규모 시스템 프로그래밍을 잘할 수 있을까.
시스템 프로덕트 프로그래밍이 무엇인지 정의할 필요가 있다. 안드로이드를 개발한 개발자들은 총 8명이라는 것을 알것이다. 우리는 이런 작은 팀이 대규모 팀이 만든 시스템을 이기는 것을 종종 목격해 왔다. 하지만 이런 것이 가능한 것은 프로그램이 단순한 프로그램 레벨일 때뿐이다. 이때는 프로그램은 그것을 개발한 사람 컴퓨터에서만 돌아가면 된다. 이 단순한 프로그램이 발전할 방향이 두 가지 있다. 첫 번째는 프로덕트를 프로그래밍하는 것이다. 이 프로그램은 어떤 환경에서든 돌아가야 하고 디버깅 테스팅이 전부 완료되어야 한다. 두 번째는 시스템을 프로그래밍하는 것이다. 여러 컴포넌트로 이루어진 시스템을 만들 때 지켜야 할 규칙과 인터페이스를 정해야 하고, 또한 주어진 예산 즉 메모리와 컴퓨팅 안에서 구현되어야 한다. 이것이 합쳐지면 시스템 프로덕트 프로그래밍이 된다.
우리는 왜 이런 행위를 할까. 왜 프로그래밍을 할까. sheer joy of making things. 단순히 즐거워서 한다. 그리고 남에게 유용한 것을 만들 수 있다는 재미이다. 그리고 만들어지는 과정을 관찰할 수 있는 것 또한 즐겁다. 하지만 비애는 무엇이있을까. 당연히 노가다일이 들어가고 항상 완벽주의가 실현되어야 한다. 한글자라도 틀리면 프로그램은 돌아가지 않는다. 또한 지금 보다 좋은 것을 다 만들 때쯤이면 그때 더 좋은 것들이 나오기 때문에 최고로 완벽한 것을 만들 수 없다.
그렇지만 이러한 비애보다 즐거움이 더 크다.
'개발 일지' 카테고리의 다른 글
The Second-System Effect (0) 2025.12.08 Aristocracy, Democracy, and System Design (0) 2025.12.01 The Surgical Team (0) 2025.11.27 The Mythical Man-Month (0) 2025.11.25 리팩토링은 코드를 이해하는 좋은 과정 (0) 2025.11.22