ビジネス、開発、四方山

naoya
·

今度のカンファレンスで以下のようなことを聞かれそうなので、最近の出来事とともに、記憶に刻むためにも書いてみる。あんまり推敲はしてない、だらだらと。

ソフトウェア開発において、ビジネスの人と開発の人とでなんか意識が合わないみたいなことの根源はどこにあるのか? みたいなのが最近少しわかったことがある。(ビジネス / 開発と区分けすること自体がそもそもなんだけど、それ言い出すと考察が進まないので、あえて分ける)

ビジネスの人は、そもそもがそのビジネスの実現だったり顧客の問題解決だったりが最初から目的なので、簡単にいえば「早く顧客の問題を解決してビジネスを実現したい」と自然に思っている。これは当たり前。

たとえば自分が自宅にお客さんを招くときには「そのお客さんに快適に過ごして帰ってほしい」と思って、家を掃除したり振る舞う食事の献立を考えたり、食後にするゲームは何にするか、などを考えたりする。動機はすべて「そのお客さんに快適に過ごしてほしい」に立脚している。自然なこと。

一方、ソフトウェア開発者というのはそもそもソフトウェア開発者を目指すきっかけも含めてその目的は「ソフトウェアを作ること」になると思う。

さっきの家の話でいえば「料理をすること (美味しい料理を作ること)」「掃除をすること (綺麗な家にすること)」を専門にしている。

その二人が共同で自宅に人を招きたいとする。役割分端をしたとする。来賓を迎えるトータルプロデュースをする側と、料理や掃除をする側である。(プロデューサーのほうもお酒や食材を買って来たり飾りつけをしたり、来賓に連絡して調整したり、予算を計算したり、色々作業としてやることはある)

ここでプロデューサーが、もう一方に質問をする。「何時までに掃除終わりそう? 料理は何時くらいに仕上がりそう?」

返答はどうなるだろうか。

「リビングに邪魔なものを片付けて、掃除機をかけて水拭き/から拭きをして、それから料理を4品作って...掃除がだいたい 15:00 で料理が 19:00 かなあ」

ごく自然な返答だと思う。「そうか 19:00 までかかるのか」

これはごく自然な返答なんだけれども、返答する側はすこし自分のスタンスを変えて以下のように返答する、ということもできる。

「そうだねえ、スタートはできれば早めのほうがいいだろうから 17:00 ぐらいには全部終わらせたいね。それぐらい目標でやってみるよ」

料理、掃除担当のスタンスとしては前者は仕事を依頼された人、後者はもう一方と目的を共有した上で、自分の領域を預かってる人、とでも形容するといいだろうか。

ソフトウェア開発のよくある話で、エンジニアもビジネスも分かるといいとか、エンジニアもビジネスを考えるべきみたいな話があるが、それをストレートにそのまま受け取ると「なんでビジネスとエンジニアリングで役割分端してるのに、エンジニアリングの側はビジネスについても同等のレベルを要求されるんだ?」という疑問をもつことになる。けど、たぶんこれはそういうニュアンスではなくて、先の例にように「お互いに役割分端をした上で、自分の領域について "どうしたいか" "どう価値提供するといいか" に対するスタンスは対等でいようよ」ということなんだと思う。

ビジネス、エンジニアリングで役割分端をしたときに「ビジネスが考えて依頼する人、開発はその依頼をうけて作る人」というスタンスをとってしまうと、

「スケジュールは?」「これとこれとこれをやるとこれぐらいの時期になると思います」「もうすこし早くリリースできると嬉しいんだけど」「いや、見積もりを考えるとこれぐらいかかるのは妥当で...」「そっかあ」

みたいなありがちな会話になってしまう。

開発も別に意地悪でそういうことを言ってるわけではなくて、ボトムアップで自分のやることを分解して見積もったらそうなったわけで、当然の返答ではある。

一方で「そうですね、お客さんのことを考えるとこのぐらいの時期にリリースしたいですね。開発工期的にはもう少し時間が欲しい所ですが、自分たちとしても早く届けたいので、まずはそれぐらい目標に考えてみますよ」というスタンスを取ることもできる。

自分はできれば後者でありたいと思う。

ビジネスとプロダクトで対等でいたい。こんなもの作ったところでお客さんは喜ばないよ、と思いながらもいわれるがまま、我慢して作る、みたいな仕事はしたくない。

ビジネスと対等なスタンスをとるためには、自分の領域をどうしたいかについて責任も持たなければいけない。それには自分が担当する領域において自分はどのように価値提供をするか、「したいか」をはっきり表明することが必要だ。

この自分の領域に責任を持つ、というところがおそらく大変なんだと思う。この責任を放棄することで自分たちの立場を対等から一段下げて、依頼される側に回るのはそのほうが楽なのかもしれない。でもそうすると、対等ではなくなったことによって、我慢を強いられるような状況を自分たちで作ってしまうことになる。

これを精神論で片付けてしまいたくはない。無理にそうするのではなく、ごく自然にそういう対等なスタンスをとれるような、そういう台詞が出てくる開発チームを目指したい。

自然にこのスタンスをとることができるようにするには、日頃からどう開発プロセスを回し、どう顧客と接点をもち、どうビジネスと会話していれば良いか、というところをより考えて、精神論ではなく、習慣に落とし込みたいと思う。