2005 년 제 15회 JOLT 상 수상작.
컴퓨터 관련 서적으로 꽤 높은 순위로 꾸준하게 팔리고 있음.


사용자 삽입 이미지


많은 사람들이 읽고, 추천한 책이다. 꽤나 여러날을 걸려서 읽었는데, 읽은 소감은 한마디로 "과연 많은 사람들이 공통적으로 추천할만한 이유가 있다" 였다.

사용자 삽입 이미지
이 책은 조엘 스폴스키(Joel Spolsky) 라는 이스라엘 출신의 사업가겸 소프트웨어 엔지니어가 자신의 IT 분야의 경험과 기술적인 지식을 바탕으로 컴퓨터와 IT 업계전반에 걸친 여러가지 주제에 대해서 가볍고 재미있게 다루고 있다. 원래 이글 자체가 조엘의 블로그 (
http://joelonsoftware.com) 에 연재되었던 이야기들을 묶은 것이라서 수필집을 읽는 기분으로 가볍게 에피소드 별로 볼 수 있어서 좋았다.

IT 업계에 몸을 담고 있는 종사자라면 여러가지로 공감이 갈수 밖에 없는 이야기들이 너무나 많아서, 사실 이 책을 나름 음미하면서 꾸준히 읽다보니 이렇게 다 읽는데 시간이 오래 걸린 것 같다.

기억나는 몇가지 이야기를 적어보자면, 우선 이 책에서는 소프트웨어 개발에 있어서 설계와 명세의 중요성을 강조하고 있다. 이 부분은 정말 프로젝트를 수행하면서 실제로 뼈져리게 느끼게 되는 사항이다!

개발에 착수하기 전에 설계와 명세가 부정확하거나 모호한 부분들이 남아있게 되면 나중에 코딩작업에 들어가서 필연적으로 이런 사항들이 엉터리로 구현되거나 개발자의 임의로 구현하기 십상이다. 그리고 이러한 모듈들은 결국 버그로 이어진다. 프로그래머들은 소위 말하는 "코딩중독" 증에 빠지기 쉬운 경향이 있어, 코딩 시작전 차분하게 개발하려는 명세와 스펙을 종이에 적어보고 구현방법을 설계를 잡아놓은 후에 개발하면 꼼꼼하고 깔끔한 구조의 코드가 나올 수 있는 것을, 일단 구현부터 시작해놓고 보면 땜질식 코드가 양산되고 버그와 코딩시간도 기하급수적으로 늘어나는 경험을 많은 이들이 해 보았을 것이다. 중간중간 변경되는 요구사항과 불명확한 스펙때문에 소스코드를 여기저기 고치다보면 나중에는 완전히 누더기가 되어버려서 소스코드가 누구도 쉽사리 손대기 어려운 상태가 되어버리는 경험을 해본 사람들이 많을 것이다.

소스버전 컨트롤과 일일 빌드의 중요성을 언급한 것도 매우 와 닿는다. 이름만 들으면 알만한 업계에서 잘나간다는 소프트웨어 회사들조차 개발자가 코딩작업을 마친 코드를 별도의 소스 컨트롤을 거치지 않고 개발자의 하드디스크에서 바로 릴리즈용 CD 로 구워버리는 만행(!) 을 저지르는 경우가 흔하다. (보통 이런 코드들은 어이없는 실수를 갖고 있을 가능성이 농후하다 )

또한 테스트와 QA (Quality Assuarance ) 의 중요성을 강조한 것이 흥미롭다. 사실 국내 소프트웨어 업계의 여건상 전문적인 독립 QA 조직을 갖춘 회사는 많지 않다.  소규모 소프트웨어 회사의 경우 Tester 는 보통 신참개발자가 겸임을 하는 경우가 많으며 Test 만 전담하는 인력도 대개는 계약직이나 아르바이트 형태로 고용되어 Test 작업에 필요한 노하우들은 무시되는 상황이다. 심지어는 개발자레벨의 테스트만 통과하면 소프트웨어가 릴리즈 되는 경우도 있는데, 이런 소프트웨어가 시장에 릴리즈 된 후에 야기하는 무지막지한 버그에 대해서 재미있게 설명하고 있다.

한때 잘나가는 브라우저인 넷스케이프 조차 무수한 버그를 갖고 있는 상태에서 시장에 릴리즈 한 후에 사용자들의 피드백을 받아 버그를 수정한 후속 버전을 내놓는 방식으로 서비스를 해 왔다는 어이없는 에피소드를 소개하기도 한다.
( 국내 온라인 게임들도 대개 끊임없이 버그를 잡으면서 무리하게 상용서비스를 진행하는 경우가 많으니... )

조엘 자신이 개발자들을 채용하기 위해서 사용하는 면접방법에 대한 소개도 매우 흥미롭다. 사실 국내 소프트웨어 회사들이 의외로 프로그래머들을 채용하면서 프로그래밍 시험을 면접 시험으로 보는 경우가 드물다는 것은 놀라운 사실이다. ( 이건 축구단이 축구선수들의 입단테스트를 하면서 공차는 테스트를 하지 않는다는 것과 같은 이야기다. ) 한때 인터넷을 떠돌았던 넥슨의 입사시험 문제 나 테터앤컴패니에서 면접시험때 코딩시험을 보았는데 의외로 많은 사람들이 코딩이 제대로 안되더라... 는 이야기들은 그래서 많은 화제가 되고 있는 것 같다. ( 한가지를 더 소개하자면 어렵기로 유명한 구글의 면접을 들 수 있는데... 구글은 까다로운 면접으로 워낙 유명하니 여기서는 일단 스킵~ 그런데 구글 뿐만 아니라 MS 나 IBM, Yahoo 와 같은 어지간한 외국 IT 회사들은 모두 기술면접이 어렵기로 유명하다 )

이런 연유로 예전에 소개했듯이 TopCoder 같은 회사가 프로그래머의 객관적인 실력을 측정하여 IT회사에 좋은 개발자들을 소개하는 Job Opportunity 서비스 모델이 성공을 거두는 듯 하다.
( 조엘의 블로그에 가 보면 개발자가 자신의 개발능력을 어필하기 위한 가장 좋은 방법 중 하나로 ACM-ICPC 나 TopCoder 와 같은 프로그래밍 대회에서 좋은 성적을 거두는 것을 권장하고 있다. )

사실 이 책에서 다루고 있는 이야기는 참으로 방대하고, IT 업계의 역사에서 시작해서 현재의 트렌드, MS 나 넷스케이프와 같이 한 시대를 풍미한 업계들의 비하인드 스토리부터 시작해서 소프트웨어 프로젝트 관리 방법에 이르기까지 많은 재미있는 소재들을 다루고 있어서 이 블로그에서 모두 다루기는 힘들기 떄문에 기억에 남는 내용들을 시간이 날때마다 내 의견과 함께 다시 적어보고 싶다. 

어쨋든 매우 재미있고, 쉽게 읽을 수 있는 흥미로운 책이다. 생각보다 우리나라와 별반 다를게 없는 외국 IT 업계의 불합리함에 대해서도 느낄수 있고, 그런 상황을 어떻게 개선할 수 있는지에 대한 친절한 조언도 있으니 국내 IT 업계에서 소위 말하는 개발자의 고통을 느끼는 분들에게는 좋은 참고가 될 것 같다. ( 나 역시 마찬가지로 이 책에서 꽤 많은 도움을 얻었다. 물론 실천이 더욱 중요하겠지만... ^^ )

   전자공학을 전공한 내 친구는 이 책이 너무 어렵다는 의견을 주기도 했지만... IT 업계 종사자들, 특히 소프트웨어 개발자라고 스스로 생각하는 사람들은 반드시 읽어야 하는 필독서라 하겠다.

PS) 이 글은 Yes24 독자서평에 올린 글입니다. ^^

댓글을 달아주세요!
이름 암호 홈페이지