でも前回の話からさ察するにお客様とのコミュニケーションと共通理念みたいなところなのかなって思いましたね。
そうですね、まさにそういうゾーンの話なんですけど、アジャイル開発ってどんなのっていうとですね、結構皆さん知ってる方だと、
例えばデイリースタンドアップっていう毎日会社で立ち話ししてから始めるんだよねとか、そういうプラクティスの話に注目が集まったりする傾向があるんですけども、
どっちかというとそういうのは枝葉でしかなくて、アジャイル開発で一番大切なことは心構えであったりとか、人としてのプロジェクトへの関わり方、そういうところの態度であったりとか、そこなんじゃないかなというふうに思ってます。
実際そういうふうに言われてる部分があるんですけれども、今回のタイトルがちょうど面白いなと思うのは、結局アジャイル開発ってシステム開発会社だけが嬉しいんでしょっていうタイトルはすごく象徴的で、完全に逆なんですよね。
実はウォーターフォール型開発っていうのが昔から、世界でも今はそんなに使われていませんけど、日本だとまだまだたくさん使われている方法かなと思うんですけど、ウォーターフォール型開発っていうのはシステム開発会社しか嬉しくないと思うんですよね。
ウォーターフォール型の開発ってどういった開発になるんでしょうか。
ウォーターフォール型の開発はですね、何を作るのかっていうのを設計書とかであらかじめ細かく決めていって、それをお客さんの承諾を取って、その次の工程に進んでいく。
次の工程は、例えば最初はざっくり設計します。その次はしっかり設計します。その次はすごい細かく設計します。段階を分けて進めていくわけですよね。
もうしっかり設計が終わったら、細かい設計が終わったら、じゃあ実際にプログラミングしますねと。
プログラミングして、できたものをまとめて見ていただくっていう感じなんですけど、すごく途中途中お客さんの確認がたくさん入るんですよね。
これ何でやってるかっていうと、確認しましたよねと。確認してOKってなったからこの設計通りに作っていきますよみたいな形で、システム開発会社が作るものをですね、お客さんに何というか、これでいいですよねって念を何度もしながら作っていく方法なんですよね。
その設計書通りにプログラムができていたら、仮に現場の人たち、ユーザーがこれ使いづらいよと。こんなの誰が使うの?もっとこここういうふうにしたらいいじゃん。いろんな意見が出ると思うんですけど、それが出たとしてもシステム開発会社はその直す必要がないというか、直すんだったら追加料金ですよみたいな形になってしまって、システム開発会社の権利は守られてるんです。
でもお客さんの、まさにそのシステムを企画した方の立場からすると、全然嬉しくないと言いますか。なんでこれを直してくれないんだとか、逆に誰が僕の味方なんだろうって感じになっちゃうと僕は思っていて。
だからウォーターフォール型開発っていうのは非常にシステム開発会社が身を守るための方法。例えば見積もりをするときに、何を作るかが決まってないと見積もれませんよって多分言うと思うんです。ウォーターフォール型開発は。
だから要件定義と呼ばれるような言語化ですよね、これはね。何を作ったら私たちは納品したというふうに言い切っていいのかを書いてください、あるいは書きましょうというのがウォーターフォール型開発の考え方で。その要件定義終わったからいくらですって見積もれますと。
ここに書いてあることしかやりませんよみたいな感じになっちゃうんですよね。ここに書いてあることは抑えつつもっとすごいの作りましょうという契約では全くないのが従来型の開発上のウォーターフォール型開発になると私は思っています。
アジャイル開発はどう違うのかと言っていくと、結論から言っちゃうとアジャイル開発はシステム開発会社も嬉しいし、クライアントであるお客さんも嬉しいし、さらにはそれを使うユーザーも嬉しい。その3者が嬉しくなるのがアジャイル開発という方法だと思います。
これは僕は断言してもいいんじゃないかなと思っていて、タイトルに沿って言うと、なんでアジャイル開発はシステム開発会社に有利なものというふうに思われてしまうかというとですね、アジャイル開発って本物と偽物がすごい入り乱れてるんですね、今特に日本の場合には。ほとんど偽物だと思っていいんじゃないかなと思います。
例えば、この部分はアジャイルにやりましょうみたいな。そんな考え方ないんですよね。アジャイルでやるんだったらアジャイルしかない。
さっき1回目のセクションでもお話しした通り、インセプションデッキというのを作ってお客さんのやりたいことを言語化するとか、もう本当に入り口からして違うんですよね、ウォーターフォール型開発とは。
なのに、この部分だけアジャイルにやりましょうっていうのは、作るものは決めないで、できたものをウォーターフォール型で出すので、ちょっとこれで違ったら言ってくださいみたいな。ある種、表面だけ模倣した形のアジャイル。これは確かに偽物というふうに僕は思いますけど、世の中多いんじゃないかなと思ってます。
確かにサイクルが分散されていくので、その分何でしょう。工数が結果として上積みされるんじゃないかっていう懸念を考えられている発言なのかなと。
確かにね。そうですよね。だから、アジャイル開発って面白いなと思うのは、リリース方法にめちゃめちゃ効果があるんですけどね。
いわゆるデプロイって技術的にはよく言われているような気がするんですけれども、手元で開発してテストが終わったコードを本番環境にお届けする作業、デリバリーする作業っていうんですかね。
そこの自動化とか、テストの自動化であったりとか、非常にその辺にアジャイル開発に携わっている人たちは力を注いでるなというのがあって。
リリースの回数が多くなっても、そこのコストが累積されないように工夫しているというところは確かにありますね。
テストコードを書いたりだとか、コードパイプライン。
そうですそうですそうです。
すごいですね。ちゃんとできるのはすごいと思います。
これちょっと技術的な話になるかもしれないですけど。
僕の方からちょっと質問としては何でしょう。
結構似ているところは国内ラボ型開発、プラムザ全体でもやっているところでは多少あって、国内ラボ型開発を提案するときにもよく、
それこそ開発会社寄りにメリットがあるような話に聞こえられてしまう要因として、
例えばさっきおっしゃっていた要望がある機能が1から10だったとして、合計で1000万の予算がありますみたいなお客さんから話が来たときに、
結果的にそれをアジャイル開発でやった場合、ちゃんと予算内にクリアできるのかという問題。
国内ラボ型開発でやったときも同様ですけど、
準委任のスタイルでやった場合に予算がどんどんやりたいことが含めていってオーバーしてしまうんじゃないかという懸念が多分クライアント側であったりすると思うんですけど、その点ってどうですかね。
そうですね。それはやっぱり特にお客さんで責任者の方だったりすると一番気になるところだと思うんで、必ず聞かれますけど、
だいたい答えは何パターンかで、例えば予算も潤沢にあってスケジュールも十分にあった場合は、それはご心配なさなくても大丈夫だと思いますよと。
あとはどこまで品質を高められているかという部分だけだと思いますって答えられます。
でもそういうお客さんはむしろ少なくて、やっぱり予算も決めてるし、期間も限られてる中でやれって言われてるんですっていう中で言うと、
たぶん分からないが十分チャレンジできるみたいな言い方をします。
つまり絶対できますっていうのは、なかなか予算とか時間とか用意してくれない限りはこちらも言えないし、特にプロジェクトの内容によってチャレンジングなものってあったりするじゃないですか。
本当にまだ僕らも作ったことないような機能だったりとか、使ったことない技術を使う必要があるなとかだったり、そういうのが含まれているプロジェクトの場合には、僕らが保証することはできないですよね。
それはもう正直にお伝えします。なので、僕もでも分かるんです。
準委任型のサービスをお客さん向けに営業していくとき、今からもう7,8年前かな。
このPRIME ORDERって形を取る前に、それこそ国内ラボ型とか準委任の営業していくときに難しいなと思ったのがそこだったので、約束できないのに発注できないよとなりますよねと。
その担当者の方がいいなと思ってくれても、上長がやっぱり一括受けよって形じゃないとダメだよと、失注してしまうっていうのがあってですね。
でも、アジャイル開発に振り切ったら、その辺の解決策も既に用意されていて、システム開発が成功することを保証する人は1人じゃない。
それは開発に携わる開発チームのリーダーやメンバー、でも彼らだけでもない。
そこにお願いをしている発注者であるお客さん、その情シスであったりとか組織、その全員で責任を持つんだよっていう考え方がアジャイル開発にはあります。
だから僕に聞かれても困ります。僕らは絶対成功させますから、お客さん、あなたも成功させるようにお願いしますよ。
予算をしっかり確保して、スケジュールをいただき、実現すべきストーリーは何なのかっていうのを一緒にじっくり時間をかけて考えていきましょう。
そして僕らと十分なコミュニケーションをとってくださいっていう形になるので。
アジャイル開発にはトレードオフスライダーっていう非常に神がかってる考え方があって、営業するときにはこれを僕は必ず話すようにしてます。
システム開発を左右する4つの要素。まずお金。お金がいっぱいあればいろんなことできる。お金が少なかったらできることは限られる。
当たり前でお客さんも分かっていただけると思うんですよね。次は時間。時間も同じですよね。時間いっぱいあればいろいろできる。なきゃできることは限られる。
それから品質ですよね。品質を高くしようと思ったら時間はかかる。品質いじめていいんだったら短時間でできる。
最後にスコープ。スコープって言うと範囲、つまり実現する機能の数って考えていただいていいと思います。
実現する機能の数が多ければ多いほど時間かかるしお金もかかる。だから削っていただけるんだったら時間も短くなるしお金も安くなります。
この4つって全部関係しあっているので、だからどうします?どれが一番大事ですかってお客さんに聞くようにしています。
僕も若い頃、もっと大きな会社でお客さんと話している営業を見てて思ったんですけど、営業の方って費用はお客さんが希望している通りにちょっと安くしてあげますよと予算で収まるようにします。
スケジュールもご希望通りに収めますと。品質はもう任せてください、最高品質で。もちろん機能は言われた通りの要件的に全部入ってますよと。
じゃあぜひぜひ発注お願いしますっていうような感じで営業してくるんですよね。
確かに。
全部最高で固定しちゃうというか、そうしたら仕事取れるっていうところですよね。
それ持ち帰ったら開発チームと大喧嘩になりますよね。そんなできるわけないとか。