book

Head First Software Development

Head First Software Development
Head First Software Development

 

Head First Software Development – 더 쉽고 재미있게 소프트웨어를 개발하는 방법   

  • 댄 필로네, 러스 마일즈 지음
  • 이정룡, 조재혁, 황상철 옮김
  • 한빛미디어

 

이런 주제를 설명하기 위해 Head First(이하 H.F) 시리즈를 선택한 것은 꽤 괜찮은 판단이었던 듯 싶다.

시리즈의 모든 책 앞 부분에 보면 H.F 학습 원리라는 것이 설명되어 있는데 이걸 조금만 들쳐봐도 이 주제와 시리즈가 얼마나 잘 어울리는지 확인할 수 있는데 가령

‘비주얼하게 만들자’ : 이 바닥 표현으로 진행 과정의 ‘가시성 확보’를 위해 단계별 산출물을 지정한다거나 인포메이션 대쉬보드 설치하는 것 등을 꼽을 수 있을거다(물론 현업에서 이것은 ‘학습 원리’라는 측면보다는 ‘운영 원리’에 가깝기는 하지만 ) . 하지만 뭐니 뭐니해도 칸반(Kanban)만큼 확실한 예도 없을거다. 칸반은 ‘비주얼’ 방식의 효과를 직접적으로 소프트웨어 개발에 적용이라고 할 수 있을 것이다.

‘개인적인 대화 형태의 문체를 사용하자’ : 책에도 소개된 ‘계획 포커 게임’처럼 애자일 방법론에서는 소프트웨어 개발 프로세스의 각 단계에서 필요한 작업들을 게임화하여 보다 친숙하며 사적인 행위로 변화시키려는 노력을 하고 있다. ‘스탠드업 미팅’ 등의 회의 문화에도 역시 이런 고려가 들어 있음은 두말하면 잔소리. 또다른 예로는 ‘사용자 스토리’를 들 수 있겠다. ‘요구사항 정의서’ 등과 비교해보면 이 역시 따로 설명 필요없을 듯.

이 외에도 두어가지 원리들이 더 나열되어 있는데 그 역시도 어렵지 않게 애자일 방법론의 철학이나 실천 기법들과 연관지어 더 풍부하게 설명할 수 있다.

원리에서 직접 언급되지는 않지만 H.F 의 구성 특징 중 하나는 일정한 스토리 라인을 가진다는 점이다. 이 책 역시 몇 명의 개발자와 고객을 등장시켜 계속 스토리를 끌고 나가고 있다.

이렇게 일정한 스토리 구조를 취하는 목적이야 쉽게 몇가지 유추해볼 수 있다.

H.F 학습 원리 중 네번째에서 언급되었듯 이 방식은 ‘독자가 계속해서 주의를 기울일 수 있도록’ 하는데 매우 유용한 방식이다. 더불어 적절하기만 하다면 독자에게 ‘현실감’ 또는 ‘공감’을 이끌어 내기도 좋고.

하지만 이런 방식을 채택하면서 저자들은 의도적으로 몇가지를 포기한 듯 보인다. 가령 ‘다양성’과 뭣 좀 있어 보이듯 표현하자면 어떤 행위/기법 배경의 ‘철학’이나 ‘역사’ 등이 그것들이다.

이렇게 추정하는 몇가지 이유를 대보자면

테스팅을 설명하는 부분만 놓고 봐도 당장 수많은 단위 테스트/Mock 객체 테스트 프레임워크들이 있어서 현장에 적용하기 위해서는 선택을 위해 골머리를 한동안은 썩힐 수 밖에 없을거며 테스팅도 단위 테스트 뿐만 아니라 통합 테스트, 시스템 테스트, 인수 테스트 등 단계별로 다른 전략과 접근 방식, 시나리오가 필요할 수 밖에 없다. 그럼에도 이 책에서는 단위 테스트 위주로 TDD 정도만을 설명하고 있을 뿐이며 그도 jUnit 과 EasyMock 프레임워크 정도만을 언급하고 있을 뿐이다.

가능한 설명의 단순함을 추구한 경우도 다양성을 일정 포기한 예라고 할 수 있을텐데 그 경우가 지속적인 통합(CI) 챕터 아닌가 싶다. 이터레이션 크기/일정 추정하면서 추정치만 언급할 뿐 ‘스토리 점수’를 빼놓은 것도 설명의 단순화를 위한 건지 이 점은 좀 확신이 서지 않는다.

추정에 대해 얘기 나온 김에 더 이야기 해보자면 일정 추정을 위해서 이 책에서는 ‘스토리 카드’와 추정치, 속도 등을 이용하는 방법을 설명하고 있다. 하지만 당장 현업에서는 WBS 라는 방법을 사용하고 있는데 이에 대해서는 전혀 언급되고 있지 않다. 그 외에도 이 책에 설명된 다양한 실천 기법들은 나름 이전 개발 방법론의 문제를 극복하기 위해 개발 혹은 개선된 기법이지만 아직 그 이전 방식들이 끈끈하게 숨 이어가고 있는게 현실이고 그렇다면 책과 현실의 간극은 개발 방법론의 역사에 대한 이해가 필요할 수 밖에 없다. 하지만 이 책은 일절 이런 부분은 관심 두지 않고 있다. 또한 ‘철학’ 관련해서는 단적으로 대다수의 애자일 관련 책들에는 애자일 방법론의 철학이 농축되어 있는 애자인 연합의 선언문이 인용되어 있지만 이 책은 그런 부분 역시 생무시하고 있다.

이런 점에서 짝프로그래밍이나 코드 리뷰, 인스펙션 등에 대한 내용이 없는 이유를 ‘다양성’의 포기 측면에서 설명할 수도 있지만 ‘코드 공동 소유’라는 애자일 철학 측면과 연관해서 유추해볼 수도 있을 듯하다.

앞에서 ‘의도적’ 포기라고 한 것에서 어림 짐작할 수 있겠지만 나는 몇가지 주제의 생략을 저자들의 계획된 전략이라고 생각하며 그 연장선상에서 이런 점들이 개인적인 아쉬움을 넘어 이 책 내용의 ‘단점’으로 단정 지어져서는 안될거라고 생각한다.

어쩌다 책에서 주제를 다루는 방식과 다뤄지지 않은 주제들만 어줍짢게 언급했는데 그래도 이런 면만으로도 이 책을 어떻게 읽어야할지 누가 읽어야할지 어느 정도 가늠할 수 있지 않을까?

어쩌다 일정 늦었음에도 별 앙꼬없이 리뷰 길어졌는데 이쯤에서 간단히 책에 대한 느낌 두어줄 정도로 정리하면서 끝맺겠다.

많은 독자들이 이 책을 Head First Software Development 아닌 Head First Agile Development 라고 했어야 한다고 평들 하던데 충분히 동의하는바다. 그리고 덧붙이자면 애자일 방법론에 대해 충분히, 제대로 이해하는 것을 목적으로 하지않는 효과적으로 학습하려는 이 또는 팀에게 권할 수 있는 교재로는 꽤 괜찮은 선택일거라는 …

p.s : 시리즈 모든 책에서 계속 사용되는 ‘키치’ 광고에서 봄 직한 5,60년대 미 중산층 인물 사진의 의도는 무얼까? 이런 낯섬, 불편함, 지루함을 통해 발생하는 인지적 자극이 학습에 도움이 되기 때문일까? 어찌되었든 시리즈에 계속되는 이런 사진 패턴이 좀 지루해지기 시작했다.

Advertisements

2 thoughts on “Head First Software Development

  1. 벌써 발견하셨는지 모르겠습니다만 오역도 일부 있습니다. 블로그에 그동안 알게된 오역에 대한 교정페이지를 올려놨으니 참고하세요.

    1. 번역서가 필요한데 출판사에서는 절판되었다고 하는군요,ㅜㅜ 혹시 개인적으로 번역서를 구입할 수 있을까요?
      kss0222@gmail.com 답변주시면 고맙겠습니다…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s