ソフトウェアエンジニアがプロダクトにオーナーシップを持てないアンチパターン、構造

世間ではよく、「プロダクトにオーナーシップを持て」というようなことを言われる。かんたんにいうと「このプロダクトは自分のものだ」と思って仕事しろ、という話だ。よく言われるということは、逆にいうと「そうなっていないことが多い」ということだとも思う。つまり、「ほんとうはオーナーシップを持っていてほしいんだけど、そうじゃないから、"持て"と言われる」ということだ。あいさつがあたりまえになされている場所では「あいさつをしましょう」と言われない、というような話。

では、なぜオーナーシップを持つことが難しいのだろう? ぼくは、いままでいろんな現場を見てきて、いくつかのアンチパターンがあるな、と思っている。

アンチパターンの解説から入るまえにまず、前提の話から。そもそも、ソフトウェアエンジニア自体が「オーナーシップなんか持ちたくないよ」と思っている場合、それはどうやってもオーナーシップを持たせることは不可能だ。まああたりまえの話ではある。一方、ソフトウェアエンジニアは「オーナーシップを持ちたい」あるいは「もっとプロダクトに関わりたい」「言われたものをただハイハイ言って作っているだけでは嫌だ、こんなのただの社内受発注じゃないか」と思っていて、一方企画者(あるいはソフトウェアエンジニアに作業を頼む人)も「もっとソフトウェアエンジニアにオーナーシップを持って欲しい」と思っている にも関わらず なぜかソフトウェアエンジニアがオーナーシップを獲得することが非常に難しい状態になっている、という場合もある。場合もある、というか、そっちのほうが多いんじゃないかな? もの作りの好きな人間ならば、多くの場合作ったものを自分のものだと考えられるように動きたいものだし、作ってもらう側としても、作る側が「おれのもんじゃないから知らないよ」ってスタンスでいられるのは困ることが多いはずだ。

なぜ、「こうなっていたらいい」と全員が思っているはずなのにそうならないのか。アンチパターンのひとつに、「越境が難しすぎる構造」というものがあると思っている。よくある話として、「こういうビジネス上の問題があるから、こういうソフトウェアを作って解決してほしい」という要求に対して、経験を積んだエンジニアは「うーん、その解法はちょっと筋が悪いな」と思うことがままある。そのとき、素直に「それあんまよくないっすよ。だったら、こういうふうにしたほうが初期コストも抑えられるし、今後の拡張性に対しても開いているし、解決したい問題は解決できますよ」と言えない状態だと、当然ながらオーナーシップは生まれてこない。そもそも「それあんまりよくないよ、もっとこうしたほうがいいと思うよ」という言葉自体がオーナーシップの発露なのに、それができない、となればオーナーシップを発現させる機会がないのだから当然だ。

なぜそのような発言ができないのか。いろんな原因があるけれど、ベンダーにお仕事をお願いしている場合は産業構造の問題があるときもある。

つまり、ベンダーのお客さんは発注者であり、エンドユーザーではない。ベンダーは「たくさん作業が発生してたくさん"人月"がかけられればその分だけ見積もりに乗っかってくる」わけで、発注者が「こうしたい」と言ったときに「もっと安く簡単にできる」とわざわざ言うインセンティブは直接にはない。もちろんこれは単純化した図式だけれど、少なくともソフトウェアエンジニアがオーナーシップを発揮したところでよくなるのは「評判」だけであって売り上げではない、という産業構造になっていることはいまだにぜんぜんある。

内製であろうと、似たようなことになることもある。わたしはどこかで一度だけ「ビジネスサイドがやりたいと言っていることをそのまま実現するのがわれわれソフトウェアエンジニアの仕事であり、それを否定するのはソフトウェアエンジニアの仕事ではない」という言葉を(ソフトウェアエンジニアのボスが言っているのを!)きいたことがある。このような考え方でやっている限り、そのプロダクトにソフトウェアエンジニアがオーナーシップを持つことはかなりむずかしいだろう。

たいへんにややこしいのが、とくに内製の場合などで「よかれと思って」越境がむずかしくなっている場合があることだ。企画者は「しっかり仕様が固まった状態でエンジニアに渡さないと、エンジニアさんに余計な仕事させちゃうな」と思って、ガチガチにHowまで固めた状態で持ってきてくれる。これは見ようによっては善意だ。一方エンジニアはエンジニアで「これだけ考えてくれたのをひっくり返すのは悪いな」と思って越境しない。これも見ようによっては善意だ。そういう場合もある。ただ、こういう状態にあるときは思い出して欲しい、企画者のお客さんはエンジニアではなくエンドユーザーだ。エンジニアのお客さんも、企画者ではなくてエンドユーザーだ。そこを思い出したとき、これは「善意」ではなくて「余計な遠慮」であると思えるはずだ。そうなったら越境は簡単だ。そういう視点から見ると、善意に見えていたものはもしかしたら「信頼関係のなさ」に見えてくるかもしれない。「とりあえず相談できる」という信頼関係がないものを、「善意」で包んでいないだろうか?

ちょっと話を戻して、では、そのような「オーナーシップを獲得するのがむずかしい構造」がある場合、もはやどうしようもないのか?

ここで、ちょっと話を変えてオーナーシップのレベルについて考えてみたい。

ソフトウェアエンジニアがオーナーシップを持つ、といったとき、ぼくは3つのレベルの話があると思う。まず、ひとつめは「システムに対してオーナーシップを持つ」というレベル、次に「プロダクトに対してオーナーシップを持つ」というレベル、さいごに「ビジネスとしてオーナーシップを持つ」というレベルだ。

システムに対してオーナーシップを持つというのは、たとえば障害が起こった時、それが「自分の起こした障害」でなかったとしても原因調査に前のめりになって入っていくことだったりするだろう。要するに、「システムに期待通りに挙動をさせる責任の一端を自分は担っている」とソフトウェアエンジニアが感じ、そのように動いているときだ。プロダクトに対してオーナーシップを持つというのは、冒頭で言ったような例で、「やりたいこと、解決したいことはわかりますが、その仕様でやるとあとあとこういう問題が起こるし、こっちの仕様のほうがユーザーもわれわれも嬉しくないですか?」というような提案ができることだったりするだろう。つまり、「ユーザーの課題を解決するためのこのプロダクトの挙動を決める責任の一端は自分が担っている」とソフトウェアエンジニアが感じ、実際にそのように動いているときだ。ビジネスとしてオーナーシップを持つ、というのはかなり広い範囲が含まれるけれど、たとえば「ユーザー課題はわかりました。使えるコスト、参画してくれるメンバー、リリースしないといけない期日もわかりました。その上で、現在考えられているやりかたでは無理があるので、このようなやり方でやればどうでしょうか、一部の要求を諦めることになりますが、リリース日が固定ならば、これが現実解です」などの提案ができている場合などはビジネスに対するオーナーシップをもてていると言って良さそうだ。さらにその上にいくと複数のプロジェクトに対して軽重をつけたり「えいや」で諦めるものを決めたり、という話になってくるが、これはもはや「経営に対してオーナーシップを」という話になってくるので、いったんここでは扱わないこととする。

このようにオーナーシップをレベルわけして考えてみると、最初の「システムに対するオーナーシップを持つ」を邪魔する構造は少ないことがわかってくる。障害のときだけではない、だれかがどこかで詰まっているときに、声をかけにいく、など、「自分に明確に任されているわけではないぶぶん」について、まずはシステムに関することで「口出し」「手出し」することは、システムのオーナーシップを獲得することに通じていく。

そして、システムのオーナーシップ「すら」獲得していないエンジニアが、非エンジニアの信頼を獲得できるだろうか? 「あのひと、いつも困り事を"オーナーシップ持って"解決してるよね」というのは、非エンジニアにも見えるものだ。そうして信頼を獲得することではじめて前述の「善意に包んだ遠慮」を壊せるかもしれない。あるいは、システムに対するオーナーシップを獲得していくと、いつか必ず「そのやり方だとシステムのオーナーシップをまっとうできません」ということがやってくる。そのとき、仕様に口を出さざるを得なくなる。けど、信頼がすでにあるから口を出せる。そうやって、オーナーシップのレベルを少しずつあげていくことは可能な場合がある。まあ現実を見ると、まじで硬直している組織の場合できないこともある、それはそう。その場合諦めたほうがいいという現実的な視点ももっておいたほうが鬱病にならずに済む。しかし、そういう硬直した組織を変えていける人間というのは貴重なので、やってみる価値じたいはあると思っている。

まとめ。

本人たちも周りもオーナーシップを持ちたい、持って欲しいと思っているのに、ソフトウェアエンジニアがプロダクトにオーナーシップをもてない場合、越境や「口出し、手出し」を阻害する構造がある場合がある。この場合、まずは獲得しやすいレベルのオーナーシップから獲得し、行動するとよい。それが信頼につながり、つぎの「口出し、手出し」につながる。そうして、さらに上のオーナーシップを持つ、あるいはまかされることができることがある。できることがあるだけで、当然できないこともある。自分はこの構造にはもうとうてい立ち向かえません、となることだってある。そういうときには無理しないのも人間の知恵である。どっかべつのところでレベルを上げて再挑戦だ。