심플 소프트웨어 - 6점
맥스 카넷-알렉산더 지음, 이미령 옮김/길벗

저자인 맥스 카넷 알렉산더가 여러 가지로 유명한(?) 이슈 트랙킹 솔루션인 '버그질라'를 고치고 관리하면서 적용한 노하우를 바탕으로 쓴 책 '코드 심플리시티'에 이어 이러한 철학을 정리하고 개념화한 책 '심플 소프트웨어'다.

원제는 'understanding software'이며 내용치고는 좀 거창한 제목이긴 한데, 저자의 성향도 약간 'geek'하고 '자뻑'한 면이 있는 것이 제목과 잘 맞아 떨어진다. 물론 저자가 구글의 code health 책임자인 것을 보면 뭐 타당한 자신감이라고도 볼 수 있겠지만.

이 책에서 저자는 자신이 '버그질라'의 수석 아키텍트로써 이를 고치며 적용한 코드의 간결성과 단순성이 설계의 복잡도를 줄여 장기적으로 관리 가능하고 그럼으로써 오래 지속되는 소프트웨어로써 가치를 이어갈 수 있다는 점을 보여줌과 동시에 이를 보편적으로 적용가능함을 독자들에게 강조한다.

이 책과 전작 '코드 심플리시티'는 일종의 연작으로 보아도 무방한데, 전작이 실무 위주의 실전예제를 기반으로 쓰여졌다면 이 책은 코드 한 줄 없이도 소프트웨어 설계와 구현은 이런 것이란 설명을 술술 해 나간다.

일종의 에세이 같은 느낌인데, 유명한 블로거이자 테크 ceo인 조엘의 책과 비교해 보면, 위트는 반의 반도 없지만 그만큼 실없는 얘기도 없고 논쟁적인 주장도 적은 편이다. 옳은 얘기를 좀 재미없이 간결하게 했달까?

한 꼭지에 한 페이지가 넘지 않는 짧은 글도 많아 쉬어갈 때 한 장씩 읽어도 좋을 책이다.

신입에게는 좋은 습관이 쌓이도록 하고, 중급으로 넘어가는 개발자에겐 잘못된 습관을 꼭 찝어 지적해주는 얄밉지만 또 고마운 선배 역할도 하는 좋은 책이다.

일독을 권함.

'서평' 카테고리의 다른 글

만약의 세계 - 요시타케 신스케  (0) 2020.12.30
밤의 양들  (0) 2020.12.30
고무줄은 내 꺼야  (0) 2020.12.30
마키아밸리 평전 - 여우가 되어라  (0) 2020.12.30
수도원 맥주 유럽 역사를 빚다  (0) 2020.12.30
NHN은 이렇게 한다! 소프트웨어 품질관리
국내도서>컴퓨터/인터넷
저자 : 유석문,이세현,이상범
출판 : 위키북스 2010.08.27
상세보기

이 책은 NHN의 여러 제품들에 대한 품질관리와 agile practice 도입을 소개한 책이다. NHN은 2009년부터 소프트웨어의 품질을 관리하기 위해 QP - Quality Practice (품질 활동) 운동을 전개하고 있으며, 이 활동 1년차를 정리한 것이 이 책이다.

뜬금없이 소개하지만, 나는 네트워크 분야에서 일한지 꽤 오래(?) 되었다. (몇년인지는 묻지 말아 달라. 부끄러운 실력에 경력만 오래되었다고 흉보는 이들이 눈에 선하니.. ㅠ.ㅠ) 네트워크 분야 중에서도 ADN - application delivery networking 분야 (예전에는 ITM - internet traffic management 라고도 했음) 라는 생소한 분야에서 일하고 있다. 이 영역은 - 다른 영역도 마찬가지라고 하면 별로 할 말이 없지만 - 무엇보다도 제품의 품질이 우선시되는 영역이다. 순간적인 부하에 다운되는 서버, 예기치 못한 보안 위협 등으로부터 서버 자원을 보호하고 사용자에게 무중단 서비스를 제공하기 위한 플랫폼이 ADN이기 때문이다. 하지만, 이 부분 역시 소프트웨어와 하드웨어 결함으로부터 100% 안전할 수는 없고, 맡은 업이 소프트웨어 개발이다 보니 자연 소프트웨어 품질에 대한 관심이 많아지게 된다.

소프트웨어, 특히 소프트웨어 공학에서 아쉬운 부분 중 하나는 소프트웨어 공학이 비교적 젊은 학문분야이다 보니, 그 기반을 제조/건설 등에서 차용하여 사용하고 있다는 것이다. 공정 부분에서 waterfall 방식이라던가, 품질 부분에서 6sigma 등을 도입하는 것이 그러하다. 하지만, 작업 전반에 걸쳐서 과정이 외형으로 들어나는 제조/건설 부문과 달리 소프트웨어는 일정 부분 완성이 되기 전까지는 진행 과정이 외형으로 드러나지 않는다는 특징 때문에 위와 같은 제조/건설 부분에서 사용되는 아이디어를 차용하기에 무리가 따른다. 그래서, 소프트웨어 부문만의 새로운 공정/품질 관리를 위한 기법들이 개발되고 있는 추세이다. agile practices로 통칭되는 기법들이 그것이다.

서론이 길고 별 내용이 없으면서 자리만 차지하는데, 이렇게 책을 소개하기 전에 서론을 길게 쓴 것은 이 책의 구성이 이와 같기 때문이다. ㅡ.ㅡ

이 책은 QP 활동의 시작과 의의를 설명하는 장에서 부터 시작하여, QP 활동의 상세 - 간단한 툴 설명과 자체 품질 기준, 개발자들의 도입 전후 장/단점 소개 정도, QP의 미래, 자동화 툴 설명, 부록으로 구성되어 있다. 아래에 각 QP 활동을 설명한 목차를 소개한다.

02장 효과적인 명세 작성
- 바벨탑과 언어의 분열
- 예제를 이용한 명세 작성 기법
- 명세 작성 워크숍
- 자동화 도구 적용

03장 단계적 빌드
- 도입하기까지
- 단계적 빌드 프로세스
- 단계적 빌드에 필요한 것
- CI 서버가 보여주는 프로젝트 운영 패턴

04장 코딩 컨벤션
- 코딩 스타일을 점검하는 도구
- 지속적인 코딩 스타일 검사
- 코딩 컨벤션을 적용하고 나서

05장 코드 리뷰
- 코드 리뷰 수행 방식
- 코드 리뷰를 적용하고 나서

06장 코드 커버리지
- 도입하기까지
- 코드 커버리지를 측정하는 도구
- 지속적인 코드 커버리지 측정
- 코드 커버리지를 적용하고 나서

07장 정적 분석
- 도입하기까지
- 정적 분석을 수행하는 도구
- 지속적인 정적 분석
- 정적 분석을 적용하고 나서

08장 사이클로매틱 복잡도
- 도입하기까지
- CC2 계산 방법과 예제
- 복잡도를 측정하는 도구
- 지속적인 복잡도 측정
- 사이클로매틱 복잡도를 적용하고 나서

09장 중복 코드 분석
- 중복 코드를 분석하는 도구
- 지속적인 중복 코드 분석

사실, 이 책의 리뷰를 신청했을 때 기대가 컸었다. 위에서 장황히 설명하기도 했지만,

1. 오랜동안 한 분야에서 개발을 진행하면서 부딛혔던 소프트웨어 품질에 대한 막연함 때문에, 이런 책이 나온다는 것이 기대되기도 했고,
2. 우리가 자체적으로 진행하고 있는 소프트웨어 품질 활동과 비교하여 어떤 부분을 개선하는 것이 좋을지에 대한 가이드를 제시받고자 했기 때문이다.

그런데, 이 책의 내용으로 보아 아직까지 어떤 가이드로 삼기에는 부족하다는 점이 먼저 느껴진다. 그 이유는 아래와 같다.

첫번째로, 2009년에 도입되어 1년 정도 지난 시점의 내용이기 때문에 축적된 데이터의 양이 너무 적다. 그래서인지 몰라도 실제 품질 향상이 얼마만큼 되었다던가 하는 중요한 데이터들이 없다.

두번째로, 코드 리뷰나 사이클로매틱 복잡도 개선 등 소프트웨어 품질에 직접적 연관이 있는 특정 항목들이 2010년도 품질 항목에서는 배제되었다는 점이다. 이 부분은 알고리즘/로직에 직접적 영향을 미치기 때문에 NHN의 수행 결과가 매우 궁금한 부분이었는데, 결과 공개는 차치하고 향후 품질 활동 부분에도 포함되지 않게 된 결정은 아쉽다.

세번째로, 출판사에 좀 미안한 얘기긴 한데, 제목에서도 적었듯 이런 주제는 연간 보고서/백서로 내 놓아야 하는 주제가 아닌가 생각된다.

네번째로 책의 가격인데, 책의 내용에 비해서 가격이 너무 비싸다. 어떻게 보면 책의 내용을 커버하기 위해 책의 재질을 너무 좋은 것으로 한 것이 아닌가 하는 생각도 든다. 이 내용에 이 겉 모양이니 이 가격이 나왔구나, 하는 생각이 든다. 여백과 스크린 샷이 너무 많고, 필요없는 요약으로 소주제마다 페이지를 늘이고 있으며, 부록 부분은 웹상에 올려두고 링크만 소개해도 될 내용이다. 공저라서 그런진 몰라도 주제의 제목 형식만 통일되어 있을 뿐, 문체라던가 내용의 질/양은 각 장마다 차이가 크다.

그래도, 국내 소프트웨어 기업 중 처음으로 이러한 활동을 문서로 펴 내었다는 것에 큰 점수를 주고 싶다.
또한, NTAF 같은 자동화 툴을 공개하여 다른 곳에서 사용할 수 있도록 한 점도 고무적이다. (다만, 이 부분은 책과 직접적 관련이 있는 내용이 아니므로 책의 평가에서는 유보한다.)

마지막으로 이 책을 낸 NHN에게 바라는 것으로 마무리하고자 한다. 초판은 이미 책으로 내었으니, 2010년 활동 부분부터라도 연간 보고서 형태로 공개하여 이 책이 계속 생명력을 갖도록 해 주었으면 한다. NHN이 주창하는 QP에서도 알 수 있듯이 QP - Quality Practice 는 실천/활동이고 실천은 매 순간마다 행동하여야 하기 때문이며, 잠시라도 멈추는 순간부터 practice는 습관화된 실천/활동이 아니라, 단발성 이벤트가 되기 때문이다.
(나도 이 부분을 제일 두려워 하고 있다. 나도 잘 안된다. 인정한다. ㅠ.ㅠ)

NHN의 시도(QP를 말함이지 책 출판이 아님)에 박수를 보낸다.

+ Recent posts