yu-tarrrrの日記

完全に個人の趣味でその時々書きたいことを書く

アート・オブ・アジャイル・デベロップメントを読む

はじめに

そもそも

  • なんで読んだのか?
  • チームでXPを実践していて、個人的にインプットが欲しかった
  • CTOがチームの新卒に勧めていた
  • コロナウイルスの影響で、XPというかペアプロにやりにくさを感じていて、なんかしらの解決策を模索していた

感想

  • インプットとしてかなり良い本だった。
  • XPとかアジャイルについて何か学びたい人は必読。
  • 以後、印象に残った箇所を列挙していく

アジャイルを導入すべきかどうかについて

  • これは冒頭の部分において書かれているのだが、「アジャイル開発が が僕たちが成功するのにもっと役立つのか」ということに照らし合わせて考えて、もしそうなら導入すべきだし、そうじゃないなら導入すべきじゃないという話をしている。
  • ここでいう「成功」というのは、納期通りに当初の仕様を満たしたソフトウェアを納品するということではなく、「組織的な成功」と「技術的な成功」と「個人的な成功」それぞれを満たすような状態のことを意味する。
  • 「組織的な成功」はそのプロジェクトが投資に見合う成果を出し続けること、「技術的な成功」とは保守性の高いコードを書き続けていること、「個人的な成功」は個人がやりがいを感じながらやれていることである

XPはオフライン前提

  • XPでは、「ペアプログラミング」であったり、「関係者が全員同じ場所にいる」ことであり、ベストプラクティスとされるものたちが、基本的にオフラインを前提とされている。
  • そのため、当初私はリモートでXPをやるためにはどうしたらいいのだろうという解を求めて、この本を読み始めたが、それはXPのあるべき姿からは離れていくことなのかなというのを感じた。

XPのプラクティスは依存関係にある

  • ペアプロ」と「TDD」であったり、「コードの共同所有」と「ペアプロ」であったり、「インクリメンタルな仕様」と「全員同席」であったり、「完全DONE」と「継続的インテグレーション」であったり、なにか1つのプラクティスを実践しようとすると、それを実践する目的が裏側にはあって、それを実現させるためには関係する他のプラクティスもあって、みたいな感じで、諸々が依存関係にあるということを感じた。
  • 逆にいうと、何か1つだけ導入するとなると中途半端なことになるので、アジャイル開発の恩恵は受けにくく、成功から返って遠ざかってしまうと思った。

ペアプロとTDDの関係性

  • ペアプロとTDDは非常に相性がいい。ペアで実装しているときに、どちらか一方がテストを書き、もう一方はそれを通すための実装を考えたり、その次のテストケースを考えたりと、アジャイルの「成功(特に技術的な成功)」を達成するのに役立つと思った。
  • また、ペアプロをすることでコードの共同所有という状態になり、障害が発生したり、バグ修正が起こった場合などに特定の人のみが直すことが可能という状況を極力減らすことに繋がる。

インクリメンタルな仕様と全員同席

  • アジャイル開発では、仕様や要件を最初から詰めきることはせず、インクリメンタルに必要になったフェーズでその要件を詰める。ここは、「組織的な成功」というところに関係する。
  • ここは、ウォーターフォールの成功とアジャイルの成功が異なるため。
  • なので、アジャイルでは都度必要な機能がでてくれば、その機能について話し合い、関係者で要件を決めるような流れになっているので、全員同席して、いつでもそのような変更に対応できるようにしておく必要がある。

完全DONEと継続的インテグレーション

  • XPでは完全DONEになって初めてそのストーリが終了したとして、ベロシティに計上ができる。そのため、CI/CDであったり10分ビルドという環境が整っていて、いつでもリリースできるようにしておく必要がある。そうでないと、そのストーリはリリースのタイミングを待つことになり、完全DONEとして報告するタイミングがおくれてしまい、ベロシティとして計上するタイミングも遅れてしまう。
  • また、ベロシティだけでなく、POへのデモなどにも影響がでてしまい、「君たちは何をやっていたんだ?」という印象を与えかねないのかなという印象を受けた。

見積もりの話

  • 見積もりは1ストーリ1分以内
  • 弊社のCTOによく言われてきたのですが、要するに1分以内に見積もれないようなものはその場にいる見積もりを出す人たち(主に開発者)で見積もりに必要な情報がそろってないということの証拠らしい。
  • 5分経っても見積もれないようなら、ちゃんと時間をとって目線合わせ、すなわち見積もる上で何が足りないのかということを明確にした方が良いということ。
  • このようなことを避けるためにも、普段から全員同席してコミュニケーションを丁寧にとっておく必要があるし、全員同席をしておけば、関係者がいないから確認できずに今は見積もれないというような状況には陥らずにすむということ

まとめ

  • 簡単ではあるが、読んだ感想と印象に残ったことを自分なりにまとめてみた。
  • 改めてインプットをしてみたことで、なんでこのプラクティスをやっているのだろうということを自分なりに考えを持つことができたし、人にもなんとなく説明できる気がする。
  • まだこの本を読んだことがない人はぜひ読んでみて欲しい。