どうすればソフトウェアを「正しく作る」ことができるのか
岩切 ► 市谷さんの「自分たちだけで作るのではなく、必要なときは外部の長所を結集していいものを作る」ことと、大石さんの「作る作らないをはっきりさせ、コモディティ部分は外部サービス利用する」という話とは、ある意味すごく近いと思いました。
作らないと決めたらどうするか、作ると決めたら何をするか。正しくない作り方が世の中にたくさんあるのは分かりますが、正しく作る作り方は、挫折している道のりでもあると思っていて(笑)。市谷さんは、正しく作るってどういうことだと思いますか。
市谷 ► 正しく作るっていう話の前に、正しいものとは何か見立てるんですね。間違っているものをちゃんと作ったところで、それは目的に合わないじゃないですか。作ろうとしているものが目的に合っているのか合っていないのか、目的に合うものが探せているのか探せてないのか、というところから入ることで、正しく作るっていう全体像を提供しようとしています。
なので、何のためにこのソフトウェアを作ろうとしているんでしたっけ、このサービス作ろうとしているんでしたっけ、もっと深堀りすると、このソフトウェアのユーザーがどんな課題やニーズを持っていると想定してこれを作ろうとしているんでしたっけ、というところを、本当にクライアントと一緒に探しにいくような感じで会話し、時に仮説を立てる作業になります。
岩切 ► それは、結構手間ばっかり取られちゃって儲かるのかなって思ったりするんだけど、そういうことって、今のSIerの人たちだってやりたくてやりたくてしょうがないはずなのに、できてないところもあるんだと思うんですよ。どうしてやれていると思いますか?
市谷 ► なぜこれをやれてこれなかったかというのは私が今回仲間と会社を作った理由にもなっています。SIや受託開発は、基本的にはプロジェクト単位で仕事をしていますね。つまりお金をいただければプロジェクトを始めて頑張ります、プロジェクトが終われば基本的には終わりです、というやり方をしているんですけど、でも実際は、サービスやシステムってもっと寿命が長いですよね。プロジェクトが終わってからがむしろ始まりで、プロジェクトをいくつも繰り返す中でプロダクトを変えていく。プロジェクトだけだとクライアントに寄り添えてないんですね。でもお金が発生するのはプロジェクトのところだけだから、従来の開発だとそれ以外を考えないようにしてきた。
岩切 ► 排除してきた。
市谷 ► そういう考えの立場にいるとその限界を感じるわけなんですね。けれども、そのサービス、プロダクト作りを考えると、もっと長いスパンで、クライアントと一緒に考えていかなきゃいけない。
じゃあどうするかと考えたときに、自分で責任とリスクを背負うしかないなと思いました。プロジェクトを超えてクライアントと付き合うっていうのは、今までのモデルからするとプラスのことばかりじゃない。以前、正しいものが見つかってない中で作り始めようとしたプロジェクトがあって、このまま続けてもたぶん値打ちが出ないとわかった時、クライアントさんに「やめた方がいい」という話をしたんです。それは、従来の開発モデルではもうそこでお金がもらえなくなっちゃうので、ありえないんですが、クライアントのビジネスとプロダクトの観点に立った時に、それはやっぱ止めるべきだと思うんです。でも、サラリーマンエンジニアでは、それをジャッジする……。
岩切 ► 権限がない。
市谷 ► そのジャッジが、リスクも背負ってできる立場に立とうと思ったら、自分が仲間とともに会社を作るしかないなと思って、ギルドワークスを作りました。
Whyが見つかるまで作りません
大石 ► 市谷さんのお話を伺って、ずっと戦争のことを考えていました。
岩切 ► 戦争!(笑)
大石 ► 太平洋戦争のことを考えていたんです。今までの正しくない作り方は、戦争をやることが決まり、もう特攻しようが何しようがとにかくやれ、みたいなやり方でしょう。戦時中は、アメリカやイギリス、世界を敵にまわしてまで戦争する必要が本当にあるのかという議論は、多分あまりなされなかった。でも、市谷さんが仰ったことは、戦争をやることよりも、本当にやっていいか、戦争を回避するためにどんなことが必要なのか、という議論の方がすごく大事で、そこにもっとフォーカスを当てようという話に聞こえたんです。万が一始めちゃったとしても、ダメだと思ったらすぐ撤収(笑)。
市谷 ► そうなんですよ。実は作らないということが、前段階、あるいは周辺にあるんですね。ギルドワークスを立ち上げる時に「Whyが見つかるまで作りません」というキャッチコピーを考えていました。目的が見つかるまで、練れてくるまで作りません。否定語から始まるのはどうかな、ちょっと強すぎるかな、という理由でボツになったんですが。でも、正しく作るということは、何もかも全部作るいう話ではなく、そもそも本当に作る必要があるのかというところに立ち返って、作る判断をすること。なので、作らないという考えも持っていますね。
大石 ► 面白いですね。正しく作ろうと思うと、かなりリソースを集中しなければならない。何でもかんでも作っていられないですね。
市谷 ► その通りだと思います。ソフトウェアをたくさん作る「アウトプット」が目的かというとそうではなく、ソフトウェアが出来上がって、それによってもたらされる便益や利益、ユーザーに与える影響である「アウトカム」が大事だと。そうすると、いかにアウトプットを最小限にして、アウトカムを最大限にしていくか、という考えの方が、ソフトウェアを作る意義があると思うんですね。我々もそうありたいと思っていて、正しいものを正しく作るというのは、ただ単にどんどん作ろうという話ではなく、アウトカムが上がるようにものを作る/作らないを判断していこうと考えています。
