GOTO Amsterdam 2013の2日目はMartin Fowler氏が基調講演で21世紀のソフトウエア開発について語った。氏は講演の後半でアジャイルのエッセンスと、チームがアジャイルを導入する方法について話した。
氏は、バグだらけのソフトウエアが不幸なユーザに遅れに遅れてリリースされ、開発者がモチベーションを失ってしまうという開発プロジェクトに対する回答としてアジャイルが生まれた90年代を振り返った。当時、計画駆動の方法がソフトウエア開発に使われており、氏は講演の中でこの方法とアジャイルを比較している。アジャイルは適応的な計画をするが、計画駆動の方法は予測的な計画をする。アジャイルは人に着目するが、計画駆動はプロセスに着目する。計画駆動の手法では作業を計画するために、分離されたステップが用いられ、成功は“計画に従って”定義される。計画は要求の安定性に依存するため、計画駆動の手法では安定した要求が必要だが、アジャイルでは変更を受け入れることで計画と要求の依存関係を壊そうとする。
氏が以前に述べたように、プロセスや人々をどう見るかという点ついてもアジャイルと計画駆動では異なる。氏は“プロセス第一”ではなく、“人々第一”という考えにどのように移行かについて説明した。計画駆動の手法でのソフトウエア開発プロセスはステップで構成され、ステップ同士が結びつき、人々がそのプロセスに従う、と考えられていた。しかし、アジャイルは違う。アジャイルはチームに優れた人々を集め、チームが最適なプロセスを決める。Martin氏は“アジャイルになるように命令するのは間違っている”と言う。チーム自身がアジャイルを実践するかしないかを選択するのだ。
しかし、チームはどのような場合にアジャイルするべきであり、どのような場合にしないべきなのか、どの程度流暢にアジャイルを実践したがるのか、という疑問が生まれる。Diana Larsen氏とJames Shore氏はアジャイルの流暢さについて書いている。また、Martin氏もyour path through agile fluencyという記事を書いている。Diana氏とJames氏は流暢さを次のように定義する。
流暢さとは、チームがプレッシャーの中でどの程度ソフトウエア開発ができるかを示します。与えられた時間の中で教室である一定の方法論に従って作業するのは誰だってできます。本当の流暢さとは他のことで注意散漫になっても乱れないような、巧みな日常作業です。
Martin氏はアジャイルチームはどのようにアジャイルの流暢さを鍛えることができるかを1つ星から4つ星で示している。1つ星レベルでは、チームは仕事を個別の塊に分割してビジネス価値を提供する。このレベルになるにはチーム開発とプロセスの設計に投資する必要がある。普通、このレベルになるまでに2から6ヶ月かかる。2つ星レベルのチームは“マーケットのリズムで製品を作る”。マーケットが扱える程度に頻繁に製品を出荷することで更なる価値を実現する。XPやTDD、ペアプログラミングなどの技術は方法論に投資することで、ソフトウエア職人気質を醸成し、瑕疵の少ないソフトウエアをリリースできる生産的なチームになる必要がある。これには3−24ヶ月かかるのが普通だ。
3つ星レベルのチームはビジネス価値をメトリクスを使って最適化する。4つ星のチームは企業全体の成功を支援する。Martin氏曰く3つ星や4つ星レベルのチームは多くはないそうだ。そして、どのレベルのチームになりたいかを考えてみることを推奨している。