 |
| 개발자 책꽂이 |
마이크로소프트 내부 개발 이야기 2선 |
 |


정신 없이 소프트웨어를 개발하다가 문득 다른 회사에서 어떤 방식으로 소프트웨어를 개발하는지 궁금해질 때가 있다. 당연히 경쟁사 사정이 가장 궁금하겠지만, 조금만 눈을 높여보자. 아마도 머리 속에 떠오르는 회사가 몇 개 있을 것이다. 그렇다면 전통적인 운영체제와 오피스 소프트웨어 강자인 마이크로소프트는 과연 어떤 식으로 소프트웨어를 개발하고 있을까? 오늘은 외부인이 아니라 내부인 시각에서 바라보는 마이크로소프트 내부 개발 이야기를 다루는 책 두 권을 소개한다.
1번 타자
I.M. WRIGHT’S “HARD CODE”
Eric Brechner 지음, Microsoft Press 2008년 출간
“그래, 세상은 공평하지 않아!”가 18번인 에릭 브레히너가 마이크로소프트 사내 웹진인 <인터페이스>에 기고한 글과 나중에 “Hard Code”라는 동명의 블로그(http://blogs.msdn.com/eric_brechner/)에 올린 글 중에 재미있는 기사를 선별해 담고 있다. 에릭이 서문에서 밝히듯이 이 책은 뒤탈이 없도록 교과서적인 평범한 내용이 아니라 자신이 (독단적으로 생각하는) 최고 개발 기법을 설명한다. “적나라한 진실, 인정사정 없는 비평”이라는 표어를 걸고 마이크로소프트 관리자와 개발자를 대상으로 쓴 칼럼이므로 내부 고발 수위가 아주 높다. 각 칼럼은 불평으로 시작해 문제 원인을 분석하고, 해결책을 제안하며 끝을 맺으며, ‘거침없는 하이킥’으로 인정사정 봐주지 않고 내부 문제점을 까발린다.
이 책은 마이크로소프트 내부에서 일어나는 프로젝트 관리, 프로세스 개선, 명세, 부서간 공동 연구, 소프트웨어 품질, 소프트웨어 설계, 개발자로서 경력 관리, 개인과 회사 사이에 균형 잡기, 훌륭한 관리자 되기, (구글과 같은 위협을 포함해서) 마이크로소프트 발등에 떨어진 위험 요소에 대한 생생한 내부 이야기와 교훈을 전달한다. 구체적으로 특정 제품을 언급하지는 않지만 적나라한 사례 분석을 읽다 보면 내부에서 어떤 식으로 개발이 진행되는지 충분히 짐작이 가능할 것이다.
본문 중에는 대규모 조직을 움직이는 동역학, 조직/프로젝트 관리, 사람 관리 등에 대한 내용도 나오므로 프로젝트 관리자나 아키텍트가 아닌 순수 개발자 입장이라면 조금 이해하기 어려운 측면도 없지 않지만, 어차피 아리스토텔레스가 말했듯이 우리 모두는 ‘정치적인 동물’이므로 조직에서 멋지게 살아 남기 위해 보약 먹는 기분으로 읽어두는 편이 좋겠다는 생각이 든다. 현재 근무하는 회사에서 제대로 된 개발 과정이 없기에 불만스러운 개발자라면 특히 이 책에서 얻는 바가 많을 것이다.
2번 타자
Dynamics of Software Development 2006 EDITION
Jim McCarthy/Michele McCarthy 지음, Microsoft Press 2006년 출간
마이크로소프트 비주얼 C++ 1.0 개발팀을 이끈 풍부한 경력을 자랑하는 마이크로소프트 베테랑인 짐 매카시가 쓴 이 책은 위대한 소프트웨어를 정시에 제대로 출시하기 위한 아이디어, 기법, 전략을 담고 있다. 2판은 1판에서 소개했던 54가지 규칙에 두 가지를 더해 총 56가지 소프트웨어 개발 규칙을 설명한다. 소프트웨어 개발에 혼쭐난 경험이 있는 독자에게 규칙 하나하나가 가슴에 와 닿는 내용을 담고 있지만 인문학적인 표현과 그림, 중의적인 비유, 철학적인 설명 때문에 읽기가 쉽지 않다는 경고를 미리 해둔다.
앞서 소개한 “HARD CODE”와는 달리 이 책에는 (특히 비주얼 C++) 개발 관련 실제 예가 많이 나오므로 마이크로소프트에서 활용 중인 구체적인 개발 방법을 훔쳐보는 재미가 쏠쏠하다. 중간 중간에 구체적인 개발 사례가 박스 기사 형태로 등장하는데 솔직히 규칙도 재미있지만 개발 사례 연구는 더욱 재미있으므로 꼼꼼하게 읽어봐야 한다.
이 책은 첫수 두기, 중간 경기, 출시 모드, 진수라는 네 부분으로 나뉜다. 첫수 두기는 조직, 경쟁자, 고객, 설계, 개발과 관련한 규칙을 소개하며, 중간 경기는 진행 상황을 점검하는 과정에 필요한 여러 가지 개념을 소개한다. 출시 모드는 출시 착수, 출시 전이, 출시 최종 경기와 관련한 규칙을 소개한다. 마지막으로 진수는 제품 출시 이후 성공을 이끌어 주는 규칙을 소개한다. 부록으로 인재를 뽑고 유지하는 방법을 설명하는데, 역시 똑똑한 사람을 잘 뽑아서 잘 키운다가 정답인 듯이 보인다. 2006년에 나온 2판에는 새로운 규칙이 추가되었는데, 바로 상사에 대한 내용으로 프로젝트 성공이 상사에게 달려있다고 자각한 매카시가 특별히 넣은 내용으로 보인다. 코어 프로토콜이라고 해서 사람들 사이에 의사 소통 과정에서 사용하는 규칙도 추가되었는데, 워크샵에 참석해서 전문적인 교육을 받지 않는 이상 책 내용만으로 이해하기는 어려워 보인다.
이 책 전반에 걸쳐 매카시가 계속해서 강조하는 핵심은 바로 ‘팀 = 소프트웨어’다. 즉 소프트웨어는 소프트웨어를 만드는 팀을 표현하므로, 특정 회사에서 나오는 소프트웨어 수준을 파악하려면 해당 소프트웨어를 제작하는 팀 수준을 보면 된다. 물론 역도 성립하므로, 소프트웨어를 제작하는 팀 수준을 보면 소프트웨어 수준도 파악할 수 있다. 이제 위대한 소프트웨어를 제작하기 위해 팀 동역학이 얼마나 중요한지 이해했으므로, 이 책에 나온 규칙을 차분하게 읽고 적용하면서 강한 팀을 한번 구축해보자.
힌트 한 가지: 두 책은 상이한 각도에서 마이크로소프트 내부 개발 이야기를 전개하므로, 두 권을 동시에 읽으면 상승작용을 기대할 수 있다. 마이크로소프트 내부 개발 조직에 대한 배경 지식이 없다면 “HARD CODE”를 먼저 읽어 내부에서 어떻게 개발 조직을 운영하는지 먼저 감부터 잡고 다음으로 “Dynamics of Software Development”를 읽는 방법을 권장한다. 두 책 모두 고난도이므로, 전직 마이크로소프트 프로젝트 관리자로 뛰었던 스콧 버쿤이 (반드시 마이크로소프트에 국한하지는 않지만 마이크로소프트 내부 프로세스에서 상당히 많이 영향을 받은) 프로젝트 관리 기법에 대해 알기 쉽게 풀어 쓴 “The Art of Project Management: 마음을 움직이는 프로젝트 관리”(스콧 버쿤 지음, 박재호/이해영 옮김, 한빛미디어 2006년)를 먼저 읽어보는 방법도 있다.
이 문서 북마킹 하기
|