「アジャイルでの開発がうまくいかない」と思っている人に伝えたいたったひとつのこと

先日、とあるスタートアップ企業の役員の方々に来社いただき、プロジェクトの進め方に関する相談を受けたのですが、その際にきっと伝えたいことをうまく伝えられなかった気がするのでブログにまとめてみます。

すごく具体的な悩みを抱えてるように感じたのでとても抽象度の高い話で参考にならないかも知れないですが、大切なことだと思うのでできれば彼らに最後まで読んでもらえればと思って書きます。

僕がアジャイルに出会って約2年くらい経ちますが、それを整理する意味でもいい機会かと。

結論

先に結論を書きます。

アジャイルとは組織論だと思っています。

相談内容

ざっくり相談された内容を列挙してみます。

  • ベロシティがなかなか安定しない
    • スケジュールが遅れることがある
    • 専門性が分散(サーバサイド、フロントエンド、スマートフォンアプリ等)してしまっていて、タスクの融通ができていない
  • どのようなツールを使っているか
    • いろいろ試してみたがシンプルさと運用コストがトレードオフ
    • 今までに使ってみてよかったツールはあるか
  • 外部にパートナーがいるが、アジャイルのプロセスの中でうまくコミュニケーションをとる方法はあるか
  • 要件定義のやり方
  • その他いろいろ

非常にざっくばらんに悩みをぶつけたり、普段感じてる疑問について議論したりする場でした。たぶんこれ以外にもいろいろ話したと思いますが、別にひとつひとつの悩みに対する回答を伝えたいわけではないのでそのへんは省略します。

相談を受けて感じたこと

なんだかすごく「正しい答え」を求めているなという印象を受けました。

具体的なツールの話であったり、タスク管理の話であったり、そういった話が多かったからだと思いますが、「アジャイル開発の正しいやり方は何ですか?」という質問をされているような気がして、あまりうまく答えられなかったというか、答えられるわけがないという感じでした。

よく使われる言葉を借りると、まさに銀の弾丸を求めているんだなという印象です。 (銀の弾丸については銀の弾などない - Wikipediaを参照してください。もっとちゃんと学びたければどうにかして「人月の神話」を手に入れて読みましょう。*1

本当にもう何度も何年も言われてることなので当たり前のことを言うことになりますが、ソフトウェア開発に銀の弾丸などないのです。「正しい答え」を求められたとしてもそれは僕らも持ち合わせていません。

人月の神話

人月の神話

アジャイルは「組織論」だと思う

一連の話の中で僕が唯一知りたかったことは「みなさんは何でこのサービスやってるんですか?何がモチベーションなんですか?」ということでした。 やらなければいけないからやるという仕事のしかたはまったく楽しくないし、自分の仕事を愛せない人がユーザによいプロダクトやサービスやエクスペリエンスを提供できるわけがないと思っているからです。

僕がアジャイルの最も大きな魅力だと感じているのは、そういった個々人のモチベーションとユーザが享受する価値の橋渡しになることが多いことです。

僕もエンジニアの端くれとして、新しい技術や流行っている開発手法には興味がありますし、設計の美学や美しいコードの魅力もよく知っているつもりです。しかし、それらがユーザが求めている価値に寄与しないとなれば実際の現場で評価されることはないでしょう。アジャイルはそれをユーザの言葉*2で表現する機会を提供し、個々のメンバーやチーム全体が「こうありたい」と思う姿と、ユーザの「こうして欲しい」という思いを繋ぐことができるのだと思っています。

つまるところアジャイルとは、

  • 自分たちはどういう価値をユーザに提供したいのか
  • ユーザはそれを欲しいと思っているのか
  • 自分たちが利用したい技術/プロセス/ツールとユーザの価値観の間に乖離はないか
  • 乖離があるとしたらそれは何故か、どうすれば解消できるか
  • 今チームに足りないものは何か

という問いに向き合い続けるための方法論やツールや哲学の総称です。

その結果、ユーザに継続的に価値を届けながら、チームがストレスなく仕事を続けられるのだと考えていて、「よいプロダクトを提供する手法」であると同時に「よいプロダクトを提供し続けられるチームをつくる手法」だと捉えています。そして、最近では、後者の意味合いのほうが前者よりずっと重要だと感じています。

アジャイルな人は自分たちがアジャイルでやってるってあまり言わない

と、思ってます。*3

アジャイルを「組織論」だと捉えれば、必要以上にウォーターフォール型の開発を忌み嫌う必要もないし、むしろウォーターフォールのいい部分をうまく活用して開発を進めることもできるでしょう。

計画駆動型の開発とアジャイル型の開発はしばしば対比されますし、実際に異なる考え方に基づいた手法であるとは思いますが、アジャイルを組織論と捉えれば両者の考え方の違いが対立することは少なくなると思ってますし、それらを区別する必要すらなくなるものだと思っています。

アジャイル型開発だとかウォーターフォール型開発だとかにこだわるんじゃなくて、何が必要なのか、何故それが必要なのかと常に向き合いながら、プロジェクトを進めていければいいなと考えています。

そういった思考法は @papanda さんがよくオススメしている「WHYから始めよ」を読むと身に付きやすいのではと思います。

WHYから始めよ!―インスパイア型リーダーはここが違う

WHYから始めよ!―インスパイア型リーダーはここが違う

おまけ

アジャイルとは「組織論」だと述べましたが、僕の場合はそれを通り越して「生き方そのもの」だと思っていたりします。

アジャイル宣言では

プロセスやツールよりも個人と対話を、 包括的なドキュメントよりも動くソフトウェアを、 契約交渉よりも顧客との協調を、 計画に従うことよりも変化への対応を、 価値とする。

と述べられていますが、ソフトウェア開発以外でも応用できることだと思っていますし、日常生活の中でも意識していると役に立つことが多いと感じています。

具体的なプラクティスやパターンだけでなく、今一度アジャイル宣言に立ち返って、アジャイルというものを捉えなおしてみるのもいいのではないでしょうか。

*1:ピアソンさんが技術書から撤退したため絶版ですが、中古なら手に入ります。それか原著。

*2:しばしば「ユビキタス言語」と呼ばれたりします。

*3:本当にリア充な人は「リア充」という言葉を知らない、という皮肉に似ていますね笑