레이몬드 첸의 ‘윈도우 개발 282 스토리’ 를 읽고

윈도우 개발 282 스토리
윈도우 개발 282 스토리

TL;DR

이 책은 Microsoft의 개발자인 레이몬드 첸이 그의 블로그인 “old and new thing” 에 올린 글중 windows 95 개발에 얽힌 뒷이야기를 다룬 책으로 우연히 온라인 중고서점에서 발견해서 구입했습니다.

windows 95 는 출시된지 25년이 지났고 이 책도 오래되서 다루는 기술적인 내용은 흥미외에는 쓸모가 없을지도 모르지만 제품과 서비스의 본질에 대한 그의 태도와 설계 기법등 배울 점이 많아서 기록 차원에서 남겨봅니다.

들어가며

이제는 stack over flow 와 trello 의 창업자로 잘 나가고 있는 조엘 형님은 소시적에 “조엘 온 더 소프트웨어” 라는 책을 썼습니다.

Software 를 잘 만들기 위한 본 철학을 유쾌하게 써 내려간 책으로 꽤 재미있었는데 그중에서도 가장 인상적인 에피소드는 다음과 같은 마이크로소프트의 콜 센터 얘기였습니다.

콜센터에 키보드가 동작하지 않는다는 문의가 자주 왔습니다.

보통 키보드를 엉뚱한 곳에 꽂았거나(당시는 USB 방식이 아니라 실수하기가 쉬웠습니다.)아니면 아예 안 꽂은 상태에서 전화를 한 것인데 이런 경우 콜 센터 직원이 “키보드를 잘 꽂았는지 확인해 봐라” 라고 하면 누구를 바보로 아냐며 화를 내기 마련입니다.

레이몬드 첸은 이럴 경우 “먼지가 껴서 그럴 수 있으니 빼서 먼지를 불고 다시 끼우라” 고 조언하고 고객은 컴퓨터 후면을 살펴보고 키보드가 안 꽂혀 있거나 잘못 꽂힌 것을 발견하고 아무도 모욕받지 않고 조용하게 문제를 해결합니다.

직접 전화를 받는 업무는 아니지만 고객이 어떤 문제가 있다고 할때 어떻게 응대해야 하는지를 마음에 새기게 된 인상적인 에피소드였습니다.

그리고 저런 인상적인 조언을 한 레이먼드 첸은 경력있는 고객 지원 담당자라고 생각했습니다.

그런데 웬걸, 레이몬드 첸은 개발자, 그것도 Windows 95 개발에 깊이 관여한 개발자였고 실력과 함께 제품의 본질에 대한 확고한 철학을 갖춰서 Windows 95 의 대성공에 가장 큰 역할을 하였다고 봅니다.

운영체제라는 제품에 대한 그의 확고한 철학은 “application 을 실행하기 위해 사용하는 것”이고 이를 위해 windows 95에서 기존 DOS 나 Windows 3.1 app 가 문제없이 돌아가도록 호환성을 확보하는데 모든 노력을 기울였습니다.

예로 windows 95 의 정식 버전은 4.0 이지만 API 로 Version 을 얻어내면 3.95 가 전달되는데 그 이유는 다음과 같이 날코딩한 windows 3.1 프로그램때문이었습니다.

만약 버전을 4.0 으로 리턴하면 MinorVersion 이 10 이하가 되기때문에 95에서 실행이 안 되므로 3.95 를 리턴했다고 합니다.

이렇게 하위 호환성을 위해 API 의 세부 동작까지 다 수정했고 그래도 windows 95 에서 돌아가지 않는 app 가 있다면 그는 개인적인 실패로 받아들여서 이를 해결하기 위해 노력했습니다.

심지어 DOS 용 심시티가 windows 95 에서 테스트해보니 자주 죽었고 기계어 수준으로 디버깅을 해보니 심시티가 해제한 메모리를 다시 참조해서 죽는 것을 알아냈습니다.

그 후 심시티가 windows 95 에서 잘 동작하도록 해제된 메모리를 참조하는 프로그램이 심시티면 프로그램을 종료하지 않도록 운영체제의 핵심인 kernel 의 memory manager 를 수정했다고 합니다.

이렇게 하위 호환성을 처절할 정도로 지키기 위해 운영체제의 핵심부분까지 수정한 노력덕에 대부분의 DOS 와 Windows 3.1 app 들은 문제없이 95 에서 실행되었고 형편없는 안정성이라는 사이드 이펙트가 있었지만 “app 를 구동하기 위한 SW” 라는 OS 제품의 본질에 충실한 95에 고객은 PC 운영체제 석권이라는 보답을 돌려주었습니다.

(태생적으로 불안정할수밖에 없었던 windows 95 기반 kernel은 Windows ME 에서 마지막으로 사용되었고 Windows XP 부터는 NT 기반 kernel 로 교체되었다고 합니다.)

저의 경우에는 제품 이름을 외우기도 벅찰 정도로 요새는 너무 많은 기술과 프레임워크가 쏟아져 나오고 있습니다.

하지만 특정 언어나 프레임워크를 사용했다고 그게 바로 고객의 편익 증대와 연결되는 것은 아닙니다.

기술의 홍수속에서 정작 우리가 만들려는 제품이나 서비스의 본질이 무엇이고 고객의 어떤 불편함을 해결해 줄 수 있는지를 잊고 있는 것 같아서 오래된 책이지만 지금 시대에도 의미가 있다고 생각해서 기록해 봅니다.

P.S:

이외에도 windows 95 에 세계 지도와 time zone 기능을 넣었다가 출시 얼마전에 급하게 뺀 사연도 재미있습니다.

95년에 페루와 에콰도르간 전쟁이 벌어져서 양국 정부에서 windows 95에 표시한 국경이 잘못되었다고 거센 항의를 했고 인도 정부에서는 파키스탄과 분쟁중인 지역이 파키스탄 영토로 표시되었다며 모든 MS 제품을 시장에서 퇴출하겠다고 위협해서 기능 자체를 뺐다고 합니다.

글로벌 제품에 지도 기능을 넣는 것을 고려할 경우 유용하게 새겨둘만한 내용입니다.

Written by

20년 경력의 야크 털 깍기 전문가

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store