이번 주에 읽은 책 목록

Extreme Programming Installed

소프트웨어 엔지니어링에서 태스크는 어떻게 나뉘고, 주기(Iteration)는 어떻게 책정되고, 각 태스크 마다 작업 시간은 어떻게 추정할 수 있는지 이 책에선 친절하게 설명이 되어 있다.

프로그래머에게 기능의 구현보다 가장 중요한 작업은 각 작업을 어떻게 나눌 것인지 계획을 세워야 한다는 점인데 이 책에선 그 과정을 충실하게 담아낸다.

프로젝트의 아이템으로, 온라인 서점 이라는 도메인을 골랐고 이 도메인은 나에게 몹시 낯설었다. 아이디어와 설계 논의를 거치면서 쇼핑몰 중에서도 온라인 서점 서비스는 도메인 특성상 고려해야 할 부분이 많다는 걸 알게됐다. 계획을 자세히 뜯어보면 고민을 하지 않고 썼다는 점이 여실히 느껴졌다. "사용자의 입장에서 온라인 서점 기능을 하는 서비스를 설계하고 싶다면 이 책에서 내가 배워서 적용할 수 있는 부분은 무엇이 있을까?"를 먼저 고민해야 했고, 계획을 세우는데 도움을 얻을 수 있는 자료가 필요했다.

Chapter 1의 아래의 문장에서 힌트를 찾아갔다.

XP 프로젝트에서는 한 사람 혹은 여러 사람이 고객의 역할을 수행할 수 있다. (p.24)

XP 팀은 "스토리"라는 개념을 통해 소프트웨어를 계획하고 구축한다. 스토리란 시스템이 어떻게 작동해야 하는지에 대한 개별적인 기술이다. 각 스토리는 시스템이 해야하는 일 한 가지를 설명한다. 프로그래머는 스토리를 통해 난이도를 추정할 수 있을 만큼 각 스토리를 충분히 이해하여야 한다. 또한 각 스토리는 테스트가 가능해야 한다. (p.24)

익스트림 프로그래밍(이하 XP)에서는 프로젝트에서 발생하는 모든 작업은 스토리라는 개념을 통해 정의된다.

Chapter 14에는 XP의 실천 사항이 적혀있다.

먼저, 우리는 시스템의 기능을 검사할 테스트 코드가 있을 때만 새로운 코드를 작성한다는 것이다. 우리는 이것을 테스트를 먼저 하는 프로그래밍이라고 부른다. 두 번째는, 일을 어떻게 처리할 것인가 하는 것에 대해서는 그다지 많은 생각을 하지 않고, 대신 해야 할 것이 무엇인가에 대해 생각한다는 것이다. 우리는 이것을 의도에 의한 프로그래밍이라 한다. (p.150)

이 책을 읽으면서 내가 배우게 된 것들

  • 각각의 사용자 스토리를 주 단위의 작업량으로 추정할 것.
  • 프로그래머는 스토리를 작성하지 않는 편이 더 낫다고 책에서는 쓰여져 있지만, 고객이 없는 상황이면 내가 고객이 될 수 있기 때문에 페르소나 기법을 차용하기로 했다.
  • 스토리는 1주 단위로 작업을 분할 하는게 적합한 것 같다. (2주는 너무 길다.)
  • 인수 테스트에서 중요한 점은 어떤 경우든 테스트를 명세화 해야한다는 점.