월요일, 7월 13, 2009

[B급 프로그래머] (재난) 마이크로소프트 워드 포 윈도우 프로젝트



약속했듯이 오늘은 재앙에 가까웠던, 아니 재앙 그 자체였던 마이크로소프트 워드 포 윈도우 프로젝트를 살펴봄으로써 과거가 우리에게 주는 몇 가지 교훈을 생각해보자.



빌게이츠 중심의 문화



마이크로소프트 사는 영웅 숭배 시스템을 창조해서 심지어 빌이 만나보지 조차 않은 직원에게까지 빌 게이츠의 의지가 영향을 미치도록 만들었다. 북한의 김일성과 마찬가지로, 시애틀 근교에 있는 회사에도 이런 방식이 통했다.


'김일성'이라는 단어를 보자마자 히스테리를 일으켜서 바로 댓글을 달려는 분들도 있겠지만, 잠깐만 참자. 위 인용구(!)는 Accidental empires를 지은 Robert X Cringely가 한 말이다. 낄낄... 요즘이야 상당히 안정적으로 돌아가는 마이크로소프트 사지만 초기에는 구둣발 문화가 어떠했는지 안봐도 DVD가 아닌가?



이런 시스템의 중심에는 '메타 프로그래밍' 이론을 만들어낸 찰스 시모니가 버티고 있었다. 시모니는 한 명이 대규모 소프트웨어 개발 팀을 제어하도록 만드는 계층적인 구조를 마음 속에 그리고 있었다. 빌은 이런 구조를 "소프트웨어 공장"이라고 마음에 들어했다.


유감스럽게도 이런 방식은 성공하지 못했다. 그래도 '하드 코드'에 나오는 아키텍트와 프로젝트 관리자라는 제도가 자리잡히도록 만들었으니 절반의 성공이긴 하다. 나머지 절반의 실패란? 초기에 이런 절대 군주 구조에 따른 피해는 심각했다. 마이크로소프트 워드 포 윈도우 1.0이 대표적인 예다.



워드 포 윈도우 프로젝트는 원래 리차드 브로디가 이끌었다. 제록스 팔로 알토 연구소의 인턴이었던 브로디는 찰스 시모니의 지도 하(?)에 신형 워드 프로세스 개발에 나섰지만, 엄청난 타격을 입고 작가(마인드 바이러스를 집필했다)이자 프로 포커 선수로 전향한다. 브로디 말을 직접 들어볼까?



1983년 10월에 워드가 출시되었을 때, 지금은 응용 부문이라고 불리는 조직에 프로그래머 30명에 마케팅 1명이었다. 문제는, 멀티플랜(찰스 시모니가 만든 스프레드 시트)이 이미 나와 있었으며, 사용자 인터페이스가 완성되어 있었다. 나는 워드를 멀티플랜과 호환되도록 만들어야만 했다. 내 임무는 다음과 같았다. "스프레드시트 사용자 인터페이스를 탑재한 세상에서 첫번째 워드 프로세스를 만든다."

피해를 복구하기까지 5년이 걸렸다.


이런 생기 발랄한 아이디어를 내고 이를 승인한 사람이 누군지는 독자 여러분들도 알고 계시리라...



잃어버린 5년



스티브 맥코넬이 쓴 Rapid Development 책 9장 '일정'을 보면 지나치게 낙관적인 일정의 대표적인 예로 마이크로소프트 워드 포 윈도우 1.0가 나온다. 잠시 살펴볼까?



윈도우즈용 워드, 줄여서 '윈워드'는 개발 기간 5년과 개발 인력 600월-인원을 들여서 만든 코드 249,000줄짜리 시스템이다. 최종 일정 5년은 원래 계획한 일정보다 대략 5배가 길었다. 1984년 9월에 시작해서 1989년 11월에 끝났다.


앞서 브로디가 말한 잃어버린 5년이 의미하는 바가 슬슬 이해되기 시작할 것이다. 빌게이츠가 비전 문을 어떻게 꾸몄을까?



'역사상 가장 우수한 문서 작성기'를 '가능한 빨리, 가급적이면 12개월 안에' 만들자.


무리한 일정 때문에 계획을 정확하게 세울 수 없었으며, 예측을 10번이나 변경했다. 프로젝트 중도 이직율도 장난이 아니라서, 5년 동안 브로디를 비롯해 개발 수석이 4번이나 바뀌었다. 2명은 일정 압력 때문에, 1명은 건강 문제로 그만두었다고 하니 그 당시 프로젝트 심각성을 미뤄 짐작이 가능하다. 게다가 일정 압력 때문에 개발자들은 기능을 대충 구현했다. 품질이 낮고 미완성이라는 사실을 알면서도 '완료'로 보고했다. 결국 3개월 정도 걸린다고 예상했던 안정화에만 12개월이 걸렸다.



다들 인정하겠지만, 막연한 기대가 주의깊은 계획수립을 대신할 수는 없다. 문제는 요즘도 윈워드 같은 일정 수립이 유행(?)이라는 사실이다.



공포의 버그 양산 프로젝트



워드 포 윈도우즈 프로젝트에서 나온 신조어 중에 "무한 결함"이 있다. 무한 결함? 개발자가 버그를 수정하는 속력보다 테스터가 버그를 찾아내는 속력이 더 빠르며, 버그를 하나 수정할 때마다 다른 버그가 어김없이 튀어나오는 현상이다. 이런 조건 하에서는 일정과 출시 일정 예측이 모두 무의미하다. 셀 수도 없는 버그를 수정하기 위해 코드 상당수를 다시 작성했지만, 복구하는 만큼 오류가 생겼다. 마이크로소프트 사의 테스트 감독인 로저 셔만이 이런 어두운 시기를 어떻게 회상했을까?



사람들은 '망했다'라는 메시지를 받았다... 이는 경주용 자동차 운전과 유사하다. 벽에 충돌하고 나면 벽이 어디에 있는지를 알게 된다.... 사람들은 얼마나 상상력이 풍부한지 얼마나 창의적인지에 무관하게 코드를 통채로 버리지 못하리라는 사실을 알게 되었다. 워드와 쌍 벽을 이루는 엑세스 프로젝트도 교훈이 될만하다. 엑세스 버그 데이터베이스는 덩치가 너무 커서 단일 서버로 처리하지 못했다. 너무나도 많은 활성 버그가 있어서 테스트 팀은 사실상 손을 놓고 있었다. "뭐가 문제야? 개발자들은 이미 우리(테스터)를 따라오려면 2년 어치 백로그부터 처리해야 할테니..." 그래서 테스터들은 모든 시간을 투입해서 자동화와 자동화 도구 개발에 힘썼다.


워드 개발자들이 테스터들을 시험한답시고 폰트 크기를 돌려주는 함수에 항상 12pt 값을 반환하게 만들었다는 이야기가 진실인지 아닌지는 모르겠지만, 위 회고문을 읽어보면 진실일지도 모르겠다는 공포가 엄습한다.



어찌되었거나 마이크로소프트 워드 프로젝트는 행복한 결말로 끝났다. '초난감 기업의 조건'에 아주 잘 나오지만, 경쟁사들이 정신줄을 놓고 있는 사이에 마이크로소프트 사는 완성도가 아주 높은 오피스 슈트를 준비했으며 일단 제국의 역습이 시작된 이래 한 번도 오피스 시장에서 선두를 빼았긴 적은 없다.



EOB

레이블: , , ,

토요일, 7월 11, 2009

[일상다반사] 리눅스 시스템 프로그래밍 이벤트 당첨자 발표

리눅스 시스템 프로그래밍 이벤트 당첨자를 발표하겠다. 응모하신 모든(?) 분들께 책을 보내드릴테니 B급 프로그래머에게 책 받으실 우편 주소를 알려주면 감사하겠다. 당첨자 두 분께서는 아무쪼록 열심히 읽으시고 즐거운 방학 생활 되시기 바란다.





이벤트 참여자가 예상대로 상당히 적은데... 그렇다고 해서 요즘 대학생들은 공부를 안 한다는 둥 책을 안 읽는다는 둥 IT 업계 미래가 어둡다는 둥 .... 이런 상투적인 이야기는 꺼내고 싶지도 않다(B급 프로그래머는 그렇게 밴댕이 소갈머리가 아니다. 낄낄...). 대학생 여러분들은 방학 맞이해서 평소에 하고 싶었던 활동을 하시라. 경험에 따르면 리눅스 시스템 호출을 몰라도 살아가는 데 큰 지장이 없다. (물론 당신이 리눅스 프로그래머를 지향할 경우라면, 시스템 호출에 대한 지식 부족은 재앙이 시작될 징조다.)



또 다른 각도로 바라보니 리눅스도 이제 안정적인 주류 기술로 편입되었다는 생각이다. 마이크로소프트 서적의 가장 큰 적이 codeguru와 MSDN이듯이 리눅스 서적의 가장 큰 적은 source forge와 LDP/man 페이지가 되버린 느낌.



한 숨 돌리셨나? 하지만 요즘 한창 뜨는 쟁점(?)에 맞춰 적시에 등장한 또 다른 블록버스터급 책이 여러분을 주머니를 남김없이 털어 버리려고 접근 중이므로 바짝 긴장하시기 바란다. 원서 '크리' 맞지 않도록 미리 알려드렸으니, 조금만 참으시며 7월 말을 기대하시라!



공지 사항: 소프트웨어 크리에이티비티 세미나에 참석하셨던 heegoo님께서는 저에게 전자편지로 우편물 받으실 주소를 알려주세요. 두 차례 편지를 보내드렸는데, 답장이 없으시네요. T_T



EOB

레이블: , ,

수요일, 7월 08, 2009

[B급 프로그래머] 티맥스 윈도우 개발 총괄 담당자에게 묻고 싶은 질문 네 가지

어제 거의 희비극에 가까웠던 티맥스 윈도우 발표를 원거리에서나마 모니티링하면서 웃지도 못하고 울지도 못하는 아주 희한한 경험을 했다. 황XX 줄기세포 건이나 심XX D 워 때야 생명공학과 영화를 모르기에 B급 프로그래머는 구석에 찌그러져 얌전히 구경만 했지만, 이번 경우에는 다르다. B급 프로그래머도 나름 '프로그래머'이기 때문에 민감한 부분을 건드리더라도 할 말은 하고 넘어가야겠다.



RTM까지는 바라지 않지만 아직 RC, 아니 베타, 아니 알파 수준도 안 되는 제품을 들고 나와서 태극기 휘날리는 가운데 애국심과 개발자들의 열과 성과 투입한 자금과 놀라운 기술력(!)을 집중 강조해서 혹시나 하고 지켜본 B급 프로그래머를 정신적으로 아주 피곤하게 만든 점 용서해준다. 기존 legacy IE조차도 화면 렌더링에 문제를 노출한 점 용서해준다. 스타크래프트도 힘들게 동작하는 호환성을 보여준 점 용서해준다. 프린터를 연결해서 인쇄 한 장 안 한 점 용서해준다. 자사 운영체제가 아닌 남의 운영체제에서 오피스랑 웹 브라우저 시연한 점 용서해준다. 제품 구경하러 온 고객을 일괄적으로 학생 취급해 지루하고 따분하고 졸리는 강의로 때운 점 용서해준다. 월화수목금금금에 이혼당하고 아파서 쓰러지고 쇠진(burn-out)해버린 기술자들의 영웅(?)담을 들러주는 만행도 용서해준다(도대체 이런 영웅은 누가 만들었는지 짚고 넘어가야 한다). 다 용서해준다. 하지만 반드시 다음 질문에 대한 대답은 듣고 넘어가야겠다.




  1. 지금 티맥스 윈도우 개발자들이 티맥스 윈도우로 티맥스 윈도우와 티맥스 오피스 슈트와 티맥스 웹 브라우저를 빌드한 다음에 테스트하고 있는가? 즉, 티맥스 관계자들이 그렇게 싫어하는 마이크로소프트 사의 전매특허인 개밥 먹기를 하고 있는지 궁금하다. 전매특허라서 피하고 싶을지 모르겠지만, 어제 상황을 보아하니 개밥 먹기 수준에 이르기에는 앞으로 갈 길이 너무나 멀다.


  2. 버그 데이터베이스에 들어있는 자료를 토대로 7월 7일을 기준으로 직전 3개월 동안 버그 추이가 어떤가? 구체적인 숫자는 필요없고 가로 축 시간 세로 축 버그 숫자로 그래프만 그려서 보여주시라.
  3. 사용자로부터 문제점을 수집할 프로세스와 기술은 확보된 상황인가? 왓슨 버킷과 같은 사용자가 겪는 문제점을 담은 대규모 데이터베이스를 운영할 준비가 되어있는가?
  4. 운영체제, 오피스, 웹 브라우저를 통틀어 무엇을 진짜로 티맥스 자체에서 개발했고, 무엇을 외부 컴포넌트로 사용했고, 무엇을 오픈 소스에서 가져왔는지 밝혀달라. 나중에 정직할(?) 생각하지 말고 지금 투명할(!) 생각을 해라.


기업 비밀이라서 상기 네 가지 질문을 답하기 곤란하다고 말한다면 개발 자체가 정말 곤란한 상황임을 입증하는 꼴이다. 이 블로그 독자 중에서 T사 소속이 있다는 사실을 확실하게 알고 있다. 익명으로라도 제보를 해주면 감사하겠다.



박 회장에게 한 가지 부탁이 있다. 마이크로소프트 욕하고 까대기 전에 마이크로소프트 내부 반성문인 하드 코드부터 읽어보시라. 어제 발표회장 분위기를 보아하니 반성은 없고 자랑만 난무하는데, 치열한 자기 성찰과 반성이 없는 조직은 반드시 망한다.



EOB

레이블: , ,

화요일, 7월 07, 2009

[일상다반사]『HARD CODE』+ 나비맛 CD 증정 이벤트 소개



에이콘 출판사에서 순조로운 Hard Code 하드 코드 판매에 고무되어 트랙백 이벤트를 벌인다고 한다.



상품은 여덟(8) 분께 역자 박재호님이 싸인하신 초난감 기업의 조건 1부, HARD CODE 2부, 이번에 굿 인터내셔널에서 출시한 새 음반 나비맛 싸인 CD 5개를 보내드립니다. 보컬 노은석(일명 노갈)님이 직접 싸인을 해서 보내주셨어요.


이 책을 미리 읽어보신 분이라면 서평만 써도 당첨 확률이 팍팍 올라가리라는 생각이다. 이번주 금요일(7월 10일)까지이므로 서두시기 바란다.



그리고 트랙백 이벤트 페이지에 가면 하드 코드 내에 실린 주옥같은 문장 몇 개를 정리해 놓았으므로, 책을 구입하시기 전에 미리 한번 읽어보시면 도움이 되리라는 생각이다. 한 가지만 뽑아서 보여드리겠다. ;)



이렇듯 성향이 확연히 다른 탓에 인문학도는 한 가지 중요한 차이점을 드러낸다. 바로, 권위자를 감싸고 보호하려는 태도다. 그들은 권한을 존중하고 감정과 체면을 중시하므로 누구든 자신을 거치지 않고 윗사람이나 주요 고객과 접촉하게 허락하지 않는다. 처음에는 문돌이 수문장을 피해가는 모험이 재미나고 효과적일지 모르지만, 일단 꼬리가 밟히면 그들은 이를 언짢게 여기며 두고 두고 가슴에 새긴다.


EOB

레이블: , ,

화요일, 6월 30, 2009

[독서광] 사진, 순간포착의 비밀



원래 B급 프로그래머는 사진이랑 아주 친하지 않다. 찍는 행위는 물론 찍히는 행위도 아주 싫어한다. 사진을 위해 어색한(?) 표정을 짓기도 어려워하고 사진을 찍기도 어려워한다. 수전증, 구도 무개념, 예술 감각 부족, ......, 여러 가지 복합적인 이유 때문이 아닐까 싶다.



뭐 그렇지만, 사진 구경을 싫어하지는 않는다. 잘 찍은 사진을 보면서, 도대체 이 사진을 찍은 사람은 괴물이야?라고 감탄만 해서 문제지. 이번에 유명한 사진작가인 조 맥널리가 지은 '사진 순간 포착의 비밀'(영어 제목: The Moment It Clicks)을 보면서도 역시 부러움 반 놀라움 반을 느꼈다. 책 내용이 촬영 기법이라서 B급 프로그래머에게 큰 도움이 되지 않으리라는 독자 여러분의 예상을 뒤 엎고 의외로 건질 내용이 많았다. ;)



이 책을 읽으면서도 역시 '창의력'은 의도적인 목표를 잡고 연습에 연습을 거듭하다가 우연한 기회에 발생하는 뭔가(?)라는 생각이 들었다. 맥널리는 생각할 틈, 아니 숨쉴틈도 없이 바라던 상태에 놓인 피사체를 발견하자마자 본능적으로 셔터를 눌러서 멋진 작품을 얻은 공을 운으로 돌리긴 하지만 그 동안 투자한 시간, 노력, 정열을 생각해보면 단순히 운이 전부가 아니다. 프로그램을 작성할 때 본능적으로 손가락이 움직여서 코드가 완성되는 경험을 해본 사람이라면 누구나 동감하겠지만, 이런 순간은 그냥 오지 않는다.



창의력을 차치하고서라도 맥널리가 작업하는 모습을 보면 프로그램 작성과 상당히 유사한 측면을 발견할 수 있다. 스튜디오에서 여러 가지 설정값을 바꿔가며 시간을 투자해서 원하는 사진이 나올 때까지 지속적인 개선(stepwise refinement?)을 하는 경우도 있지만, 시간과 공간 제약에 쫓겨서 감으로 사진을 찍는 경우도 있다(timebox development?). 게다가 (대다수) 프로그램 작업과 마찬가지로 헛발질만 하다 초읽기에 몰리는 경우도 있다. 좋은 예로, 이 책에 나오는 노벨상 수상자인 라이너스 폴링 박사 사진은 철수 직전에 절묘한 타이밍으로 얻은 사진이다. 사흘동안 특별한 사진을 건지지 못하다가 포기하고 철수하려는 순간에 고양이가 라이너스 박사 어깨위로 올라오는 장면을 그대로 사진에 담는 이야기를 보며 '바로 이거야!'라는 생각이 들었다.



첫 부분은 주로 사진 이야기가 많이 나오지만, 뒤로 가면 자기 일에 대한 애착과 가족에 대한 애정 등이 사진과 오버랩 되어 잔잔히 흘러나오므로 B급 프로그래머처럼 사진에 익숙하지 않고 전문적인 사진 용어를 이해하지 못하더라도 충분히 공감이 가능하리라는 생각이다.



멋진 인용구 하나 소개하며 뽐뿌질을 마무리한다.



늘 기억해야 하는 것은, '지금 내가 좋아하는 일을 하고 있다'는 사실이다. 이것만이 사진가의 심장을 뛰게 하는 유일한 방법이다.


당신이 무엇을 하던 권태에 빠져있다면, 다시 한번 의욕을 되살리기 위해 이 책을 한번 읽어보기 바란다. 강력 추천한다!



EOB

레이블: ,

일요일, 6월 28, 2009

[일상다반사] Hard Code 이벤트 당첨자 발표



Hard Code: 나잘난 박사의 IT 정글 서바이벌 가이드 이벤트 행사 당첨자를 발표하겠다.




  • di**sun님
  • nij**prim님
  • o**let님
  • he**ian님
  • tw**tail님
  • iw**ther님


다섯 분 뽑으려고 했는데 여섯 분이 신청해주셨기에, 누구는 빼고 누구는 넣기가 알쏭달쏭했다. 출판사에게 이야기 잘해서(?) 여섯 분께 책을 보내드리기로 하겠다. B급 프로그래머에게 책 받을 주소, 성명, 전화번호를 전자편지로 보내주시기 바란다.



그리고 에이콘 출판사 블로그에도 [HARD CODE] 마이크로소프트엔 뭔가 특별한 것이 있다?라는 제목으로 흥미로운 소개 글이 올라왔다. 스포일러도 조금 들어있기에 관심있는 독자분이라면 읽어보시면 책 고를 때 도움이 되겠다. 그리고 띠지 문구 보고, 너무 유치하다고 웃지 마시라. B급 프로그래머가 직접 문구를 고른거니까. 낄낄.



뱀다리: 예약판매임에도 불구하고 yes24에서 Hard Code가 상당히 잘 팔리고 있다고 한다. 미리 구입하신 독자분들께서는 조만간 배송될 Hard Code와 함께 무더운 여름을 시원하게 날려버리시길...



EOB

레이블: , ,

금요일, 6월 26, 2009

[일상다반사] 리눅스 시스템 프로그래밍 예약 판매 시작



지난 달에 소개드린 로버트 러브가 쓴 리눅스 시스템 프로그래밍 한국어 판이 드디어 예약판매에 들어갔다. 온라인 서점에서는 예약 판매를 하지않으므로 마음이 급하신(?) 분들께서는 한빛미디어 홈페이지에서 구입하셔야 한다. 7월 1일 출간 예정이라고 하니 서점에서 실물을 구경하시려면 조금만 더 기다리시기 바란다.



이미 KLDP 공동구매로 원서를 보신 분들도 많으실테다. 뒤늦게 한국어판이 나와서 뒷북이라는 생각이 들지도 모르겠지만, 저자말처럼 책 내용이 커널이나 libgc에 크게 영향을 받지 않으므로 두고두고 참조가 가능하다는 장점이 있으므로 출간 시기는 크게 중요하지 않은 듯이 보인다. 리눅스 시스템 프로그래밍을 작성하면서 시스템 호출과 관련한 동작 원리가 궁금했던 분이 한번쯤 읽어보면 많은 도움이 되리라는 생각이다.



아마존 서평 등에서 이 책이 단순한 매뉴얼 페이지를 모아놓은 집합이라는 비판을 하시는 분들이 계시며, 국내에 나왔을 때도 똑같은 비판을 하시는 분들이 계실지 몰라서 미리 한마디 해두자면... 반드시 그렇지는 않다. 책 내용 상당수가 매뉴얼 페이지와 유사한 방식으로 설명이 전개되지만 매뉴얼 페이지와 비교해보면 확실히 읽기가 쉽다. 필요한 곳에는 커널 관점에서 보충 설명도 나오므로 평상시 궁금했던 점이 풀리기도 할테다. 로버트 러브가 쓴 리눅스 커널 심층 분석과 더불어 읽어보면 시스템 호출의 안팎을 시원하게 꿰뚫을 수 있지 않을까 하는 생각이 든다.



자, 이번에도 이벤트를 한번 기획해보았다. 방학이 시작되어 심심할지도 모른다는 생각이 들어서, 이번 이벤트는 대학생 분들을 대상으로 진행한다. 방식은? 어떻게 할까 고민하다가 트랙백 이벤트를 진행하기로 했다. 규칙은 다음과 같다.




  • 신청 대상: 대학생(아르바이트나 병역특례 등으로 직간접으로 회사에 적을 두고 있는 대학생은 제외한다. 돈 버는 학생 회사원(?)께서는 아르바이트 거리도 구하기 힘든 진짜 학생들에게 양보해주시라.)
  • 신청 방법: 리눅스 시스템 프로그래밍 목차를 읽은 다음에 리눅스 시스템 프로그래밍 과정에서 유용하게 도움을 받으리라고 생각하는 주제를 찾아내어 자신의 블로그에 정리한다. 그리고 블로그 주소를 B급 프로그래머에게 전자편지로 보내거나 이 블로그 포스트에 댓글로 올린다.
  • 신청 기한: 2009년 7월 8일(수) 밤 11시 55분까지
  • 선정 방법과 선물: 가장 멋지게 글을 올려주신(주최측인 B급 프로그래머를 믿어라. 낄낄) 다섯 분께 '리눅스 시스템 프로그래밍' 한 권씩 보내드리겠다. 소수 배려 정책에 따라 지방대학교와 여학생인 경우에 가산점을 부여한다(주의: 남자친구에게 블로그 글을 대신 써달라고 하면 아니 된다.). 따라서 지방대학교에 다니는 여학생이 신청하면... 당첨 확률이 팍 올라갈거다.


요 몇 개월 사이에 B급 프로그래머가 하도 책을 많이 내어 정신이 없는가? 이제 시작에 불과하므로 미리미리 총알을 잔뜩 모아놓으시기 바란다.



EOB

레이블: ,