アジャイル開発における最も根本的な概念の1つとしてあげられるのは「反復」しながら仕事をすすめるということだろう。繰り返し暫定的なマイルストンを設定しながら、繰り返し改良されたバージョンの製品を納品することで、プロジェクトを運営していくのである。アジャイルな手法では、このやり方を何かに喩えた名前を付けている。有名なもので言えば、XPの「イテレーション」であり、スクラムの「スプリント」である。Kevin Schlabach氏(リンク)は、「スプリント」という言葉はあまり適切でないメタファではないだろうか(リンク)、ということについて語っている。
Kevin Schlabach氏は、「スプリント」という言葉はあまり適切でないメタファではないだろうか、ということについて語っている。
Kevin Schlabach氏が最近ポストした、スクラムで使う「スプリント」という言葉は誤ったメッセージを伝えてしまっていないか、という記事では以下の様に言っている。彼らはこう聞くのです。いったいどうしたら、燃え尽きることなく、ずっと全力で走り続けられますか?
スプリントというメタファは、単にゴールはすぐ見える近くにあるのだから、そこに到達するための力を振り絞りましょう、というようなことを伝えるためのもので、目的に対する意識を高め、直ちに目標へ向かい、それを捉えようとすることに集中しよう、ということを言いたいだけなのです。
可能な限り全速力で、といったことは意図していません...多くの人にとっては、全速力という定義になっているようですが。
Schlabach氏はかねてから、アジャイル開発を、よいマラソンランナーの対処の仕方に喩えていた。彼は、なぜマラソンランナーにとって自分のペースをチェックすることが必要不可欠なのか、ということを議論していて、これはどういうことかというと、マラソンランナーは「(端的に言えば) 20マイル以上のコースを1マイル平均5分で走りたいと思うなら、最初の1マイルは5分で走ること」という努力をする必要があるということだ。よいマラソンランナーは、レース全体を通じた自分の目標に対して、先行気味なのか、遅れ気味なのかを知ることにとても気を遣っている。そして、それ以上に、「スプリンター(短距離ランナー)」のやり方と比べ全く異なるのが、「持続可能なペース」を保てているかどうかを知ることに気を遣っている。
Schlabach氏は、この「ペース配分」という考え方をソフトウェア開発に持ち込み、彼が考える「スプリント」の本当の意義はそこにある、ということ示そうとしている。
スプリントの本当の意義は、ペース配分できるサイクルとなっているところです。進捗を細かくペース配分していないとしたら、予測が当たったかどうかさえ確認することができません。前もって決められたサイクルに則ってペース配分を宣言することで、トラブルの深い落とし穴にはまってもがく前に、そこに落ちないようにすることができます。Doug Shimp氏とDan Rawsthorne氏は、アジャイルジャーナルの「スクラムのメタファ」という記事で、同じような概念について言及している。
Doug Shimp氏(リンク)とDan Rawsthorne氏(リンク)は、アジャイルジャーナル(リンク)の「スクラムのメタファ(リンク)」という記事で、同じような概念について言及している。
スプリントと言えば「ゴールテープを切るために力をふり絞る」ということ。
スプリントとは何か、と言われれば通常は陸上競技のことです。つまり、スクラムのスプリントも、一般的には緊迫感を呼び起こすものであるという考えに辿り着きます。しかし、激しく走って息切れしているような状態で、一定の期間の間、問題なくやり遂げることは可能なのでしょうか?持続可能なペースは保てますか?このスプリントという言葉の語感から、状況がすでに息もつけぬような消耗戦になっていると考えてしまい、尻込みする人もいました。
速度で考えるよりも、道のりとしてスプリントを捉える方が好ましいでしょう。到達地点が見える位置にあり、一直線にそこに辿り着くことができます。距離は短く(30日以内)、プロダクトオーナーが定義する明確な着地点があるのです。
「持続可能なペース」で「イテレーション」に分けることは、アジャイル開発を成功に導く秘訣と言える。「スプリント」という単語を使ってしまうと、そこから遠ざかってしまわないだろうか?この問いかけについて、何か考えや逸話があれば教えて欲しい。