GN⁺: "이룰 수 있다 (2003)"
(multicians.org)멀틱스 운영 체제 개발 이야기
- 멀틱스(Multics) 운영 체제를 개발한 안드레 벤수산은 파일 시스템의 주요 변경 작업을 담당함.
- VTOC 관리자는 디스크와 메모리 간의 파일 정보 이동, 공유 메모리 버퍼 풀 관리, 디스크 상의 정보 공간 관리를 수행하는 하위 시스템임.
- 안드레는 VTOC 관리자의 설계, 구현, 테스트를 맡아 많은 다이어그램을 그리며 설계 작업을 진행함.
개발 과정과 성공
- 프로젝트 조정자인 톰 반 블렉은 일정에 대한 우려가 있었으나, 안드레가 코드 작성을 시작하자 안심함.
- 안드레는 컴퓨터 터미널 대신 연필로 코드를 작성하고, 타이핑 도움도 거절하며 직접 모든 작업을 수행함.
- 최종적으로 연필로 작성한 깔끔한 코드를 터미널에 입력하여 컴파일을 시도, 몇 가지 오타를 수정한 후 성공적으로 컴파일됨.
- 시스템에 통합하여 테스트했을 때 VTOC 관리자는 처음부터 완벽하게 작동함.
안드레의 성공 비결
- 안드레는 연필만을 도구로 사용하여 완벽한 프로그램을 작성함.
- VTOC 관리자에서 발견된 유일한 버그는 톰 반 블렉의 실수로, 오류 처리 절차의 호출 순서를 잘못 알려준 것이 원인임.
- 안드레의 작업 방식은 소프트웨어 엔지니어링에 대한 이야기로 IEEE Computer 1994년 4월호에 소개되었으며, 2003년 11월에 업데이트됨.
GN⁺의 의견
- 안드레 벤수산의 멀틱스 운영 체제 개발 이야기는 철저한 설계와 집중력이 어떻게 완벽한 결과물을 만들어낼 수 있는지 보여줌.
- 연필과 종이만을 사용한 전통적인 방식이 현대의 복잡한 소프트웨어 개발 도구들과 비교될 때, 기본에 충실한 접근 방식의 중요성을 강조함.
- 이 이야기는 소프트웨어 엔지니어링 분야에서 꼼꼼한 사전 작업과 테스트의 중요성을 상기시키는 좋은 사례로, 엔지니어링 교육에 있어서도 중요한 교훈을 제공함.
Hacker News 의견
-
첫 번째 댓글 요약:
- 명확한 요구사항: 소프트웨어가 버그가 적고 빠른 이유는 명확하게 정의된 요구사항이 있기 때문. 현재 소프트웨어는 무엇을 만들어야 하는지 모호하고, "애자일" 방식으로 인해 지속적으로 변경됨. 개발자에게 명확한 API와 잘 정의된 기준을 제공하면 대부분 효율적인 코드 작성 가능.
-
두 번째 댓글 요약:
- 소련 프로그래머의 능력: 소련 탈출자와 함께 일한 경험에서, 소련 프로그래머들이 뛰어난 이유는 컴퓨터 접근성이 매우 제한적이었기 때문. 종이와 연필로 프로그래밍을 해야 했으므로 처음부터 제대로 작동하게 만들려는 노력이 있었음.
-
세 번째 댓글 요약:
- 개인 작업 공간의 중요성: 이전 해커뉴스 스레드에서 jrd259 계정의 댓글을 인용, 큰 책상과 알림이 없는 개인 작업 공간의 중요성을 강조함.
-
네 번째 댓글 요약:
- 종이 위의 프로그래밍 경험: 어린 시절 할아버지 집에서 컴퓨터 없이 타자기로 터보 파스칼 프로그램을 작성하고, 나중에 PC에서 실행. 또한, 자신이 만든 이국적인 프로그래밍 언어 Ziim의 이진 덧셈 함수를 종이에 옮겨 버그를 찾아 수정한 경험 공유. "쉬운" 방법을 제한하면 더 잘 생각된 코드를 작성할 수 있음을 강조.
-
다섯 번째 댓글 요약:
- 과거의 프로그래밍: "큰 철"의 말기에 프로그래머는 데이터 입력 직원과 다름없었음. 프로그램은 종이에 작성되었고, 계산 시간은 비싸고 귀중했음. 버그가 발생하면 다음 CPU 실행을 예약할 때까지 수정할 수 없었음. 이는 신중한 접근을 장려했음. 현재는 IDE에서 디버깅하며 반복적으로 소프트웨어 개발을 진행함.
-
여섯 번째 댓글 요약:
- 앙드레 벤수산이 작성한 코드: 앙드레 벤수산이 작성한 코드에 대한 링크 제공.
-
일곱 번째 댓글 요약:
- 과거 소프트웨어의 크기: 당시 소프트웨어는 현재보다 훨씬 작았으며, 대부분의 프로젝트는 메가바이트 단위로, 단일 파일로 "기록"하기에는 너무 컸음.
-
여덟 번째 댓글 요약:
- 학교에서의 프로그래밍 과제: 친구의 경험에서, 학교에서 프로그래밍 과제를 종이에 제출하고 일주일 후 결과를 받았음. 일주일의 "컴파일 시간"은 작업을 두 번 확인하게 만드는 교육적 경험이었음.
-
아홉 번째 댓글 요약:
- 애자일/스크럼의 부재: 앙드레가 어떻게 그런 작업을 할 수 있었는지에 대한 답변으로, 애자일/스크럼 개발 방법론이 아직 생각되지 않았기 때문임.
-
열 번째 댓글 요약:
- 종이 위의 코딩 경험: 14살 때 고등학교 프로그래밍 수업에서 대부분의 코드를 종이에 작성. 가난한 나라의 가난한 아이로서 집에 PC가 없었고, 학교 컴퓨터실의 ZX Spectrum 클론은 사용하던 터보 파스칼을 실행할 수 없었음.