검색엔진

토요일, 9월 29, 2012

[독서광] 익스트림 프로그래밍

오늘은 애자일 서평 두번째로 '익스트림 프로그래밍'을 소개하겠다. XP(eXtreme Programming)이 일반에 잘 알려져 있긴 하지만 의외로 시중에 익스트림 프로그래밍 관련 서적은 별로 없는 듯이 보인다. 다행스럽게도 켄트 백이 쓴 'Extreme Programming Explained: Embrace Change(2nd Ed.)'가 한국어판으로 나와 있어 XP에 관심이 많은 분들께 도움이 된다는 생각이다.

XP는 애자일 소프트웨어 개발 방법 중 가장 널리 알려져 있는 소프트웨어 개발 기법으로 짧은 개발 주기 동안 잦은 소프트웨어 배포가 가능하므로 고객 요구 사항이 불확실한 상황에서도 소프트웨어 품질을 높이며 반응 속력을 빠르게 만들어준다. '익스트림 프로그래밍' 책은 단순히 XP의 실천 방법을 소개하는 내용을 넘어서 가치, 원칙, 실천 방법을 유기적으로 연결해 설명하고 있으며, XP 이면에 숨겨진 철학을 밝혀주기에 인터넷에 올라온 단편적인 XP 실천 방법을 넘어서 제대로 된 소프트웨어 개발이 무엇인지에 대한 근본적인 질문을 우리에게 던져준다.

많은 기업들이 '애자일' 개발을 표방하고 있지만(최근 어떤 모임(미국이 아니라 한국이다)에서 참여한 기업 열 곳 중 80% 이상이 애자일 방법으로 소프트웨어를 개발하고 있다는 이야기를 듣고 깜짝 놀란 적이 있다), 실제로는 미친듯이 만들고 미친듯이 수정하는 과거의 짜보고 고치기(code and fix)와 다름 아닌 상황은 아닌지 걱정스럽기도 하다. 겉보기에는 자유 분방한 듯이 느껴지는 애자일이 실제로는 무척 엄격한 원칙과 규칙에 따라 움직이므로 이면에 숨은 철학을 충분히 흡수해 올바른 길을 걷지 않는다면 오히려 제품 개발과 프로젝트가 통제 불능에 빠져 경영진과 개발팀 모두에게 크나큰 상처를 입힐 가능성을 늘 경계해야 한다.

다행스럽게도 '익스트림 프로그래밍'은 XP는 물론이고 다른 애자일 소프트웨어 개발 방법론(스크럼, 린 소프트웨어, TDD)에서도 동일하게 적용할 수 있도록, '사회적인 변화'를 수반한 훌륭한 코드 작성에 필요한 마음가짐과 자세를 꼼꼼하게 짚어주고 있다. 참고 문헌과 색인까지 합쳐도 250페이지에 불과한 작다면 무척 작은 책이지만 각 장마다 생각할 거리를 충분히(아니 어떤 경우에는 흘러 넘치도록) 제공하기 때문에 빠르게 읽기는 상당히 곤란한 나름 두꺼운(?) 책이다. '컴퓨터 vs 책' 애독자로서 [독서광] 컬럼에 소개한 여러 가지 다앙한 분야의 책(예: 엘리 골드랫의 ToC 관련 서적, 토요타 방식(JIT), 피플웨어와 슬랙 등 드마르코 책, 창발성에 관련된 각종 서적(부의 기원, 혼돈의 가장자리) 등등)을 접하신 분들이라면 서로 연관시켜가며 정말 흥미롭게 읽을 수 있을 것이다. 너무 극단적이지도 않고 너무 현학적이지도 않은 어조로 소프트웨어 개발 작업에서 인간성과 생산성을 조화롭게 만들어 사업에서 성공을 거두는 방법을 다루고 있기에 애자일에 관심을 보이는 모든 분들께 강력하게 추천하고 싶다(결론: 추석 특집 뽐뿌질).

토요일, 9월 22, 2012

[독서광] Make: 04

기대하고 고대하던(어린 시절 월간지 기다리는 느낌) Make: 04가 나왔기에 출퇴근 시간을 이용해 잽싸게 읽었다. 이번 달에 소개하는 내용은 책상 위 공작소라는 제목으로 (기계 분야 친구들이 좋아할만한) 3D 프린터와 CNC 등을 특집으로 다루고, 아두이노를 기반으로 하는 수공예 플랫폼(응?)인 릴리패드 아두이노를 특집으로 다루고 있다. 기계와 뜨개질이라... 두 단어가 잘 어울리지는 않지만 손으로 뭔가를 만들고자 하는 사람들에 있어서 수단과 방법이 문제랴?

그런데 이번 호에서 가장 충격을 먹은 내용은 바로 '새뮤엘 (랭혼) 클레멘스'(라고 쓰고 '마크 트웨인'이라고 읽는다)의 벤처 정신을 다룬 '마크 트웨인: 테크놀로지스트'라는 내용이었다. 창조자들을 읽어보면 마크 트웨인을 엄청난 재담군에 뛰어난 피아니스트에 미국 문학을 일으켜 세운 주인공으로 그리고 있었는데, 페이지 식자기를 만든 제임스 페이지를 만나면서 벤처 투자가(?)로 전향한 사실은 전혀 모르고 있었다.

(페이지 사진 식자기)

페이지(Paige) 식자기는 기존 수동으로 하던 활자 조합을 빠르게 자동으로 도와주는 인쇄 기계로 10배 이상 생산성을 높였기에 식자 작업의 혁명을 가져다줄만한 물건이었다. 당연히 이 멋진 기계는 출판에 관심이 많았던 클레멘스의 시선을 붙잡았다. 위키피디아 마크 트웨인의 Financial troubles 섹션을 읽어보면 마크 트웨인이 이 기계를 위해 엄청난 돈(무려 30만불! 인플레를 감안한 오늘날 화폐 가치로 환산하면 8백만불 정도다. T_T)을 퍼부었지만 18,000개나 되는 부품에 원 제작자의 완벽주의가 합쳐져 실용화 직전에 주저 앉아버렸다. 그 결과 마크 트웨인은 재정적인 어려움에 시달려 맨션을 폐쇄히고 출판업도 포기하는 등 상당한 타격을 받았다. 만일 페이지 식자기가 성공했더라면 오늘날 마크 트웨인은 재담가나 작가가 아니라 벤처 캐피탈 대부로 추앙받고 있었을지도 모른다.

(라이노타이프)

이렇게 우아하고 멋진 기계가 마땅히 차지했어야 하는 자리는 투박하고 멍청한 라이노타이프가 대신하고 말았다. 페이지 식자기보다 60% 이상 느리지만 구조의 단순함에 힘입어 유지보수도 쉬웠고 변종도 다양하게 나왔기에 인쇄 현장에서 각광을 받았다. 라이노타이프는 식자공의 UX를 고려하지 않고 기계 제작의 편의성에 초점을 맞췄기에(이 쯤에서 우리는 QWERTY 키보드를 다시 한번 생각하게 된다. 낄낄), 공학적이고 기술적인 관점에서 페이지 식자기에 발려야 마땅하지만... 우리가 늘 알고 있든 세상만사가 그렇게 원리 원칙대로 돌아가지는 않는다.

EOB

토요일, 9월 15, 2012

[독서광] 테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구

지난 주에 약속한 대로 애자일 관련 서평에 돌입하겠다. 1번 타자는 '테스트 주도 개발: 고품질 쾌속개발을 위한 TDD 실천법과 도구'인데 무려 국내서(!)이다. 정말로 오래 전(2005년 1월이다)에 테스트 주도 개발 서평이라는 제목으로 켄트 벡의 '테스트 주도 개발' 독후감을 올렸는데, 거의 8년이 지난 이 시점에서 다시 한번 TDD와 관련된 서평을 쓰려니 감개가 다 무량할 지경이다. 거두절미하고 한 문장으로 느낌을 정리하자면... "기술도 발전했고 도구도 발전했고 무엇보다 개발자들도 발전했다"라고 보면 되겠다.

켄트 벡의 책이 나왔을 당시만 하더라도 TDD를 뒷받침해주는 도구, 책, 프레임워크 등이 부족해 뭔가를 제대로 해보려면 애로사항이 꽃을 피웠는데, 이번 'TDD 실천법과 도구'를 읽으면서 정말 세상 좋아졌다는 생각을 다시 한번 하게 되었다. 물론 여전히 TDD는 모든 분야에 적용 가능한 만능 도구가 아니라는 사실은 변치 않았지만 (마음만 굳게 먹는다면) 예전보다는 실제 개발에 도움을 주는 수준에 이르렀다고 봐도 틀림없겠다. 목(mock)을 만들기 어려운 상황이나 유지 보수의 일환으로 설계/개발 관점의 테스트가 아니라 테스트를 위한 테스트 자체에 집중하는 상황에서는 TDD를 도입하기는 어렵겠지만, 복잡하고 급변하는 비즈니스 논리가 주도하는 분야에서는 TDD가 짧은 호흡으로 모듈화 수준이 높은 고품질 제품 양산에 적합하리라고 본다(라고 쓰고 실제 적용은 끈기와 집념과 노력이 필요하다고 읽는다).

서론이 너무 길었나? 이 책은 초급 개발자의 학습을 고려하면서도 최근에 나온 여러 가지 TDD 관련 도구를 레퍼런스 형태로 정리해 중급 개발자에게도 도움을 줄 수 있도록 설계되어 있다는 점에서 높은 점수를 줄 수 있다. 단순히 예를 위한 예로 끝나지 않고 실제 개발 과정에서 고려해야 하는 각종 패턴을 소개하고 다양한 패턴에 맞춰 사용 가능한 라이브러리의 장단점과 한계를 비교 정리하고 있기에 자료를 찾고 검토하는 시간도 절약해주며 삼천포로 빠지는 시행 착오를 줄이는 효과도 기대할 수 있다.

목차를 보면, 1, 2, 3장까지는 예를 들어가며 TDD를 실습하는 내용이며, 4장은 TDD에 있어서 아주 중요한 Mock 객체와 프레임워크를 설명하면서 기본적인 TDD 설명을 마친다. 5장은 데이터베이스 테스트, 6장은 단위 테스트 지원을 위한 라이브러리를 소개한다. 그리고 7장은 개발 영역에 따른 TDD 작성 패턴을 다루며, 8장과 9장은 TDD에 대한 시각과 FAQ를 정리한다. 마지막으로 10장은 간단한 실습 예제를 제공하며, 11장과 부록 A는 테스트 자동화와 고급 기능 등을 정리해 나머지 공부가 가능하도록 배려하고 있다. 개인적으로는 7장이 가장 흥미로웠다. 일반적인 애플리케이션, 웹 애플리케이션, 데이터베이스라는 세 분야에 대해 TDD를 어떤 식으로 적용할지를 솔직 담백하게 풀어쓰고 있으므로 TDD를 적용할 곳과 적용하지 않을 곳을 판단하기 위한 좋은 기준을 제공한다. (비단 IT뿐만 아니라 다양한 분야에서) 인터넷에 올라온 글이나 책에서 특정 개념을 설명할 때 혼자 up 되어 장점만 마구 나열하는 경우를 종종 보게 되는데 이 책은 문제점이나 단점도 제대로 찍어주기 때문에 중립적인 시각으로 TDD를 바라볼 수 있게 해준다. TDD를 둘러싼 Context 0라는 한계를 얼른 파악하고 싶은 성질 급한 개발자라면 FAQ 부분을 먼저 읽어보면 좋을 것 같다.

이 책은 홈페이지도 구글 코드에 호스팅하고 있으므로 구입 전에 샘플 챕터를 읽어볼 수 있으며, 책을 읽는 도중에 오탈자, 예제, 보너스 내용, 링크 등을 온라인에서 확인할 수도 있다.

백문이 불여일견이라 애자일과 TDD에 관심이 많은 분들이라면 일단 지르고 보시라.

EOB

토요일, 9월 08, 2012

[독서광] 멋진 징조들

오늘은 재미있는 SF 소설 하나를 소개하려 한다. 호사가들이라면 혹시 들어봤을지도 모르는 '멋진 징조들'(영어 제목은 'Good Omens')가 바로 오늘의 주인공이다. 이 책은 주인공들 좌충우돌이랑 썰렁한 영국식 유머랑 독특한 세계관등이 마치 HHGG를 연상하게 만든다. 물론 드라마, 영화화로 인해 지명도가 하늘 꼭대기까지 올라가 열성적인 팬들을 몰고 다니는 HHGG랑 비교하기가 곤란한 점도 있지만 나름 틈새를 노리는 재미있는 소설이라는 생각이다.

이 책은 다양한 패러디(책, 영화, 음악 등 틈만나면 이리 뒤틀고 저리 뒤튼다), 썰렁한 농담, 영국 작가답게 미국을 은슨슬쩍 디스하는 풍자스러운 표현, 종교적인 표현 등등으로 인해 이해가 쉽지 않았다(여러 번 읽어도 마찬가지가 아닐까 싶기도 하다). 영미문화에 조예가 깊은 분이라면 포복절도하는 부분도 많으리라고 추측만 하는 부분이 많아(응?) 위키피디아의 Good Omens를 뒤져보기도 했지만 별다른 소득은 얻지 못했다. 오히려 영문 블로그에 이 책을 다루는 내용이 많긴 한데, 다들 오덕스러운 문장력을 자랑하기에 책만큼 어렵다는 문제가 있었다.

내용이 아주 궁금하신 분들을 위해 스포일러 없는 줄거리를 간략하게 정리하자면, 적 그리스도로 태어난 아이를 놓고 지구 생활에 동화되어버린 악마와 천사가 은근슬쩍 협력하며 중화(?)시켜 지구 멸망을 막으려는 좌충우돌 이야기다. 4부작 드라마로 만들어진다는 이야기도 있는데(이미 만들어졌나?), 나름 골수팬들 끌어모을 수 있는 화력을 발휘하리라는 생각이다. 요즘이야 워낙 기술이 발전해서 이 책에서 묘사하는 인물이나 장면 정도는 어렵지 않게 시각적으로 그릴 수 있을테니 너무 심각하게만 접근하지 않으면 나름 재미있을 것 같다.

예고) 벌써 9월도 중순으로 접어드는데, 가을을 맞이해 '테마 있는' 독서광이라는 캐치프레이즈를 내걸고 내주부터 애자일 특집 서평을 연속으로 3회에 걸쳐 올려드리겠다. 꾸벅.

EOB