アジャイルサムライを読んで実践していること

アジャイルサムライを読んで実践していること

こんにちは。
数年前アジャイル開発に興味を持ち、勉強しようと思った時に、
アジャイルサムライ−達人開発者への道−を読みました。
当時、ウォーターフォール型の開発プロセスしか経験したことの無かった僕にとって、
新鮮な内容ばかりで、夢中になって読みました。

その中でも、「顧客にとって価値のある成果を毎週届ける」という考え方は、
かなり印象に残りました。
今でも、ある程度の期間関わることになるプロジェクトでは、
価値のあるものを、毎週とまではいかずとも、
定期的にアウトプットすることを心がけています。

今回は、アジャイルサムライの中で紹介されていた、
顧客にとって価値のある成果を毎週届けるために出来ることを
僕なりの考えも交えながら紹介します。

顧客にとって価値のある成果とは何か

まずこれを考えることから始まります。
アジャイルサムライの中では、「動くソフトウェア」が一番価値のある成果としています。
膨大な量のプロジェクト計画書でもなければ、設計書でもなく、
動くソフトウェアを届けることが一番大事だということです。

数ヶ月かけてヒアリングや設計をして、しっかり計画を立てて初めて開発に着手するという
プロセスが当たり前だと思っていた僕にとっては、この言葉だけでもかなり印象に残りました。
ヒアリングや設計に数ヶ月かけるということは、顧客にとってはまだ何も成果を挙げられていない状態が数ヶ月続くということです。
たしかに、ヒアリングや設計などは大事な要素だし、
実際にそれをやっている最中は一生懸命取り組んでいるのですが、
それでは良くないです。

自分がお金を出して発注した立場で考えると、
数ヶ月間自分の抱えている問題を説明し続けた末に、山のようなドキュメントを持って来て
「これを全て読んで認識に相違が無いか確認してください」「この設計に問題が無ければいよいよ開発を始めます。」というチームと、
例えば数百ある問題点のうち、毎週1つずつでも問題を解決することができるチームのどちらが良いかと考えると、
おそらくほとんどの人が後者に仕事を依頼したいと思うのではないでしょうか。

そういった意味からも、アジャイルサムライでは
動くソフトウェアこそが進捗を測る重要な尺度であると考えていて、
それを定期的に届けることが大事だと説明しています。

定期的に成果を届けるために意識していること

アジャイルサムライの中で説明されているものを参考に、
実際に自分が定期的に成果を届けるために意識していることがあります。

大きな問題は小さくする

例えば、ウェブサイトにクレジット決済機能を実装しようと思うと、
やるべきことは多く、大きな問題のように感じますが、
細かく分けていくとシンプルにできます。
「カートに入れるボタンを商品毎につける。」
「カートに入れるボタンを押すと、商品がカートに追加される」
「カートの中身を表示するページを作る」
のように、細かく分けていけば、それぞれだいたい1日,2日で終わらせられそうなので、
1週間で3つか4つのタスクを完了させて顧客に届けることができそうです。

このように、解決に長期間かかってしまいそうな問題でも、
細かく分割すれば、部分的にでも定期的に顧客の問題を解決することができます。

本当に大事なことに集中して、他のことは忘れる

短い期間で価値のある成果を届けようと思うと、無駄なことは省かなければなりません。
やっておくに越したことはない。
あったら良い気がする。
あとで必要になるかもしれない。
という程度のタスクは基本的にはしないようにし、
本当に間違いなく必要だとわかっているものだけに時間をかけるよう意識しています。

今後の課題

意識して行動している部分がある反面、
もちろんまだまだ出来ていないなと思う部分もあります。

間違いなく動くものを届ける

届けたものが動かないソフトウェアだと何の意味もありません。
なので、しっかりテストして間違いなく動く保証のあるものをリリースしたいと思うのですが、
テストに時間がかかったり、時間をかけて行ったテストも本当に大丈夫なのかと不安に思ったりすることがあります。
これに対しては、しっかりテストの手法を学んで、確実なテストの仕方を身に付けるのと、
自動化を勉強して効率的に行うことを意識しなければならないと思っています。

チーム全体でアジャイル開発をする

結局、アジャイルサムライを読んですぐに実践できそうな部分を
個人的にやっているに過ぎないので(それでもかなり効果はある気がしますが)、
これをチーム全体に展開する必要があるなと思っています。

そして、アジャイルサムライの中でも強調されている
顧客もチームの一員として巻き込むというのも今後の課題です。

まとめ

アジャイル開発は、プロジェクト全体で行う工程を
短い期間で繰り返し行うものという、ざっくりした認識がされていることが多い気がしますが、
アジャイルサムライにも再三繰り返されているように、
顧客に成果を届けることが一番の目的であって、
それ以外の無駄な部分をなるべく排除し、メンバー同士で積極的に協力しながら、
スピード感を持って継続的にプロジェクトを進めるという考えが根底にあることがわかると思います。

速く、確実に、継続して成果を挙げる。
当たり前なことのように思えますが、
その観点でプロジェクトを見つめ直してみると、色々と無駄なことが多い気がしてきます。

SIer時代にけっこうよくあったことなのですが、
顧客と議論になった時の武器にするための様々な同意書、エビデンスを作ることは
恐ろしく無駄なうえに、まったく目的を見失っているとすら言えそうですね。

では。