私たちソニックガーデンの「納品のない受託開発」に取り組むソフトウェア開発のスタイルは、一般的に「アジャイル開発」と呼ばれるものに近いです。
しかし実際のところ、私たちは「アジャイル開発」をしようなんてかけ声をかけたこともないですし、普段から社内で「アジャイル開発」が話題になることもありません。「アジャイル開発」をしようと思ってしている訳ではないにも関わらず、「アジャイル開発」をやっているように見えるというのです。
この記事では、「アジャイル開発」について私たちが考えていること、そして、なぜ多くのアジャイル開発は失敗してしまうのか、うまくいくためにどうすればいいのか考えてみました。
目次
結果としてのアジャイル開発〜究極のアジャイル
「あなたにとってのアジャイルとは何ですか?」
先日、ある勉強会で質問されました。ちょっと想定外の質問だったので、しばし考えたあと私から自然と出てきた答えは「結果」というものでした。私にとってのアジャイルというのは結果であり、目指すものではない。これが私の考えるアジャイルです。
私たちソニックガーデンでは、在宅勤務もいれば、出社時刻も決まっておらず、各自がセルフマネジメントで自律的に働き、有機的にチームとして助け合うことを目指して実践しています。なので、アジャイル開発でいう「朝会」や「スタンダップミーティング」は行っていません。
テストコードも書くようにしていますが、絶対的に必ずテストコードがあるかというとそうではありません。あくまでテストしやすさを考えて設計をすることでシンプルに保つということを意識しています。「ふりかえり」も実践していますが、決まった時間がある訳ではなく、実施は個々人の判断に任せています。「ペアプログラミング」も必要な時しかしません。
「アジャイル開発」の教科書からはおおよそ外れたことをしていますが、とりたてて問題になったことはありません。私たちは、私たちの考えるビジネスの本質のために出来ることを研ぎ澄ませてきただけです。
私たちが行う「納品のない受託開発」というビジネスの本質は、お客さまとの関係が長く続くことです。
長く続くということは、それだけお客さまが価値を感じているということでもあり、私たちにとっても余計なコストがかからずに経営的に良い状態になります。そのためにすべきことだけに集中して、それ以外のことはしない、というただそれだけのことなのです。
ソニックガーデンのエンジニアであれば、中途採用なら入るまでに、もしくは弟子である間にそのビジネスモデルの本質を理解してもらいます。本質を理解して、そのために出来ることは何かを各自が考える。そうすることで、ルールやプロセスで縛らなくても、ビジネスに貢献できる仕事をすることが出来るようになります。
また、ルールやプロセスで縛らないからこそ、常により良くしようという動きが生まれます。ルールやプロセスさえ守っていれば良い訳ではないからです。そうして、徐々に「アジャイル開発」の教科書に書かれているようなことからは外れてきました。
私たちは結果として「アジャイル開発」を実践しているように見える、つまりアジャイルな状態になっているのだと思います。自分たちのビジネスの本質を理解し、それを追求することで自然とアジャイルな状態になっていることこそが私にとって本当に大事なことで、それこそ「究極のアジャイル」なのではないかと考えています。
失敗しやすいアジャイル開発〜至高のアジャイル
「状況をつくるのが戦略で、状況を利用するのが戦術だよ」*
とはいえ、多くの現場でそのように自然とアジャイルになるような状況を創りだすのは難しいことかもしれません。状況を作り出すためには、現場での働きかけだけでは難しいことだからです。企業であれば経営戦略に繋がる話です。
それでもアジャイル開発に理想を見いだし、そのために自らの周りを説得し、理想のアジャイルを目指す人たちも多くいます。
それは決して簡単なことではありません。難しいことだからこそ、成功したときに事例として取り上げられるだけの価値があるのでしょう。そのように、本気で一生懸命に、かけ声をかけてアジャイル開発を目指す姿は「至高のアジャイル」と呼ぶに値します。自分たちの理想を求めるその活動は本当に立派なことだと思います。
しかし、そうした現場からのアジャイルがなかなかうまくいかないのも事実です。それは何故でしょうか。それは関わっているその現場のゴールと、アジャイル開発の成果が直結しないことが原因ではないか、と考えています。ビジネスのゴールではなく、アジャイル開発をゴールにしてしまうと、きっとうまくいきません。
私のところには、アジャイル開発に関する相談がたくさんきます。話を聞いていると、その前提ではきっとうまくいかないな、と感じるようなケースがわかってきました。たとえば「(アジャイル開発をするのに)どうすれば良いですか?」だったり「○○の場合、アジャイル開発だと、どうしますか?」というような相談です。
それらに共通するのは、あたかも「正しいアジャイル」のようなものがあって、それを求めにきているようなケースです。そこで感じるのは、求められているのは手法としてのアジャイル開発だなということです。しかし、正しくアジャイル開発をすればうまくいく、と盲目的に信じているとうまくいかないのです。
アジャイルを目指すのは、実は失敗する第1歩なのです。そうではなく、自分たちの現場、その前提となるビジネスで目指すべきことは何かを考えるべきです。なんのためにアジャイルをするのか、そこがしっかりとビジネスのゴールと繋がっている必要があります。話を聞いても、なんのためか?がないケースが多いのが現状です。
現場でアジャイル開発に取り組むとき、そのビジネスのゴールに直結しない場合、きっと誰かが抵抗するでしょう。その誰かを説得するとき、アジャイル開発のメリットをどれだけ話しても通じないはずです。しかし、もしビジネスのゴールに直結するなら、アジャイルのメリットなど言わなくても取り組んでくれるはずです。
「アジャイルの良さ」なんてものを持ち出さないといけない時点で、無理があるのです。そのまま理想をかざしても、誰かを犠牲にすることになるかもしれません。それで良いのでしょうか。
「至高のアジャイル」を目指すことは構いません。しかし、それが自己満足にならないように注意が必要です。「滝に打たれて、心はアジャイル」なんて精神論に過ぎません。やっているのはビジネスだということを忘れていはいけません。ビジネスに成功と失敗はあっても、アジャイルそのものに成功も失敗もないことを理解すべきです。
ビジネスに直結しないアジャイル開発に価値はありません。
アジャイルであるためにアジャイルを目指さない
「Don’t just do agile. Be agile.」
アジャイルであるためには、いったいどうすればいいのでしょうか。状況そのものを変えることのできる立場にいるならば、自然とアジャイルになれるような戦略を採ればいいでしょう。企業であれば、エンジニアの採用方針から評価基準、部署ごとの配置やゴール設定、社内のカルチャー醸成など、外堀から変えていく様々な取り組みが考えられます。
たとえば、そのためにビジネスモデルまで変えて考えだしたのが「納品のない受託開発」です。「納品」という商習慣を見直して、見積りも納期もなくし、月額定額でずっと顧問のような形で支えていくビジネスモデルです。このビジネスモデルのポイントは、お客さまと私たちで同じゴールに向かえるというのを、気持ちやかけ声だけでなく、名実ともに実現したということです。
結果として、チームは自然とアジャイルな状態になっています。
そして、自然にアジャイルになるための戦略としての「納品のない受託開発」を、ソニックガーデンに転職したりせずに自分たちの会社の事業として出来るようにしたのがソニックガーデンギルドです。ギルドに参加することで、状況そのものを自社のビジネスに取り込んでしまうという選択肢になれば、と思っています。
(2018年に追記:今は「論理社員」という制度に変化しています)
さて、本当にアジャイルであるためには、逆説的ではありますが、アジャイルにこだわらないことが肝要となります。アジャイル開発は、所詮、ビジネスを実現するための一部でしかありません。つくり方なので、一部ですらないかもしれない。
例えばラーメン屋であれば、どれだけつくり方にこだわっていたとしても、まずいラーメンしか出せない店はダメなことは明白なのです。
どこの企業にいったとしても、アジャイルを語るよりも、その会社のビジネスを語れることの方が重宝されるのは間違いありません。ビジネスが先にあることを忘れてはなりません。社内でアジャイル開発を広めようと努力する前に、それはその企業において経営的にみても意味があることなのか考えてみるべきでしょう。
アジャイルを目指すのではなく、自分たちのビジネスに沿った理想のスタイルを目指すべきで、アジャイルの先にあるのが理想です。まず大事なことは、自分たちの理想を持つことです。理想とはビジョンと言い換えても良いかもしれません。どういうビジネスをして、どういうチームにしていくか、そのビジョンです。
自分にとってのビジョンをチームで共有し、そのビジョンに向かってどうすれば実現するか、チームの全員で考えていくのです。
そもそも「アジャイル」という言葉は、2001年に各々が独自の方法論やプロセスを語っていた人たちが集まって、近しい自分たちのスタイルに総称としての名前を付けよう、ということで決まったもので、名前が先にあった訳ではありません。だから、その名前に憧れて目指して、振り回されるなんてのは、もっとも愚かなことなのです。
名前から始めるのではなく、自分たちのビジネスを追求し、それがアジャイルになったかどうか、考えればいいのです。
余談ですが、「アジャイル」という名前になる前の候補には、”Business Aligned”というものがあったそうです。ビジネスに寄り添う、ビジネスと一体化する、そんな開発だということ。「ビジネスアラインド」こちらの方が直感的だった気がします。アジャイルの前にビジネス。そんな当たり前のことがわかれば、自分の考えるビジョンがその会社のビジネスに繋がっているかどうか、そこから考え直すべきかもしれません。