"더 쉽고 재미있게 소프트웨어를 개발하는 방법"을 부제로 단 Head First Software Development를 monaca님의 애자일 3종 강탈 1탄 이벤트를 통해 읽게 되었습니다. 1장에서는 훌륭한 소프트웨어 개발에 앞서서 훌륭한 소프트웨어 개발의 정의를 짚고 갑니다. 요구사항을 주어진 시간과 비용으로 제공하는 것인데요. 그 비밀을 이터레이션이라고 소개하고 있습니다. 이터레이션을 통해 프로젝트의 방향이 고객이 원하는 목표와 맞는지 자주 점검하는 일이죠. 이터레이션의 규모를 추정하는 부분은 불확실성과 화해하는 프로젝트 추정과 계획과 유사했습니다. 딱딱해질 수도 있는 주제를 그림과 화살표로 시각적으로 표현해서 더 쉽게 다가왔습니다. 요구사항 수집 부분은 사용자 스토리를 연상하게 하는 인덱스카드와 시작했는데요. 책에서 개발자 역할을 맡은 희와 혁의 짤막한 대화가 등장합니다. 책 안에 개발자와 고객에 사진과 이름을 붙여서 중간에 제시하니깐, 내가 그 스토리에 참여하는 것처럼 몰입이 잘 되는 효과를 가져온다고 봅니다. 거만한 자세의 고객에 말풍선을 붙여 말을 넣어 두니깐, 독자의 처지에서 괜히 서늘하더라고요. 읽다가 180쪽에 "이번 장의 훼방꾼이 나타났어요" 부분 때문에 깜짝 놀랐습니다. 헤드퍼스트의 파격적인 구성 때문에 소프트웨어 개발 도서임에도, 이런 반전이 갑작스레 등장할 수 있다고 생각합니다.
객체 지향 방법론인 단일 책임 원칙(SRP)나 DRY 원칙을 통해 리팩터링도 다루고, 버전 관리를 돕는 도구인 서브버전의 필요한 사용법도 소개합니다. 빌드 자동화를 위한 빌드 도구인 Ant를 소개했는데, Ant로 빌드 스크립트를 잘 짜두면 컴파일 명령을 입력하면서 실수하는 일도 줄어들고, 빌드할 때마다 편하리라 느껴졌습니다. 블랙 박스 테스트나 화이트 박스 테스트의 이름은 얼핏 들어본 적은 있지만 무얼 뜻하는지 정확히 모르고 있었는데, 테스트를 바라보는 시선도 다르고 집중하는 분야도 다르다는 걸 알게 되었습니다. 테스트 주도 개발 규칙을 설명하고 테스트로 나온 버그는 "버그 트래커"로 관리하라고 이야기합니다. 재사용 소스 코드가 등장하면서 개발자 집단은 엉망인 상황에 부닥치지만, 차근차근 순서대로 문제를 풀어나가는 개발자 집단이 흥미로웠습니다.
테스트 주도 개발, 사용자 스토리, 빌드 자동화, 버전 관리, 디자인 패턴, 리팩터링, 추정과 계획 등 소프트웨어 개발 전반을 골고루 요약해서 다루고 있다는 점이 이 책의 강점이라고 봅니다. 각 주제를 깊이 익힐 시간은 부족하고 이런 개념들에 익숙해져야 할 때 도움이 되리라 생각합니다. 책의 이야기가 자바 언어로만 씌어 있어서 다른 언어의 관점도 소개하면 좋겠지만, 소프트웨어 개발과 관련된 책이라 다른 언어 사용자에도 적용하는 데 무리가 없으리라 예상합니다.
|