メソッド屋のブログ

米マイクロソフト Software Development Engineer 牛尾の日記です。ソフトウェア開発の上手なやり方を追求するのがライフワーク。本ブログは、個人の意見であり、所属会社とは関係がありません。

批判の文化が日本を技術後進国にしているかもしれないという話

先日、接触確認アプリがリリースされました。これは正直日本のソフトウェアの進歩に画期的なことだったと思います。私も衝撃を受けました。 f:id:simplearchitect:20200622075114p:plain

www.mhlw.go.jp

その後起こったことに関して正直は私の感想はこの通りです。

このような展開は、私が今住んでいるアメリカでは発生しない事案だと思います。じゃあ、日米でどういう違いがあって、日本人の自分が小さな一歩を踏み出して、日本がよりよい国になるようにできるとしたらどんなことだろうということを考えてみましたので、あまりソフトウェアの専門用語を使わない形で書いてみようと思います。

接触確認アプリが生まれた経緯

実は私はこの接触確認アプリが生まれたすぐぐらいの時に協力といえないぐらい微々たるものなので、言っていませんでしたが、ちょっとだけコントリビュートしています。だから誕生した経緯などは理解しています。世間ではいろいろは噂がありますが、実際の経緯はこの記事に書いてあることが最も真実に近いと思います。

www.businessinsider.jp

コロナの現状を見て、「自分が何か貢献できることは無いか?」と考えて、アプリ開発者である廣瀬さんが始めたことです。彼の会社の仕事とは一切関係ありません。そして、それに共感した仲間が集まって、多くの人のコントリビュートで出来上がったものです。ネット上にはいろいろな批判がありますが、政府の対応も少なくとも私は素晴らしいと思います。このような誰も体験したことの無い状況で、すべて政府主導など不可能です。そういう状況化で、そういった人々が善意で作ったものが、政府の人の目にとまって採用されたという経緯です。政府にも中の人はいて、その人ががんばって、この未曽有の危機をなんとかしようと頑張ってこういうことに至っています。政府の人もきっと、「前例がない」とかいう人と戦って、やっとリリースできたのだと思います。

アプリをリリースした人に降りかかった地獄

このリリースの後、どうなったのかというと、廣瀬さんのポストをみて正直私は泣きました。日本で最もこの件に関して自分の時間を割いて、貢献したヒーローがみんなにボロカスに叩かれて心が折れてしまったんです。

f:id:simplearchitect:20200622072617p:plain

よくよく考えてください。コロナ発生など誰も予想できなかった事で、こういったプロジェクトが始まった後で GoogleApple から共通の仕様が発表されて、いろんな事情から早いタイミングでリリースしたのは驚異的なことです。わたしはソフトウェアの専門家ですが、アプリケーションに不具合が必ず存在するのは理論的に証明されています。だから、ソフトウェアに不具合はつきものなのです。だから、不具合があるのは当然のことです。どんなソフトウェアにも存在するので、上げ足をとろうとしたらいくらでも取れてしまいます。今回のソフトウェアも最初のリリースと上記の制約があるなかであのレベルのものを出せたのは驚異的です。私は最初のバージョンとしては素晴らしいと思います。

「批判」の文化がすべてをぶち壊しにする

この一件で最も世間に貢献した人は誰でしょうか?アプリを作って実現することに貢献した人です。そして、お金をもらってようが、もらっていまいが、その人たちは自分の時間を使って人のために動いてくれたわけです。その人たちをSNSなどで批判する人が現れました。批判どころか、人格否定ぐらいのことを言っている著名人の人もいます。 f:id:simplearchitect:20200622073804p:plain

自分が時間を使って、自分が額に汗してみんなに貢献したら、こんなことを大量に言われたらどんな気分になるでしょう。自分だったら二度とやらないと思うでしょう。

責任の所在と、完璧を求める文化

日本では、このように「責任の所在」や「完璧」を求める文化があります。いいところでもありますが、すくなくともソフトウェアの開発に関してはあまり良いようには働きません。少なくとも私の観察している限りでは、私の住んでいるアメリカではこういう展開は無いと思います。残念ながら日本のソフトウェア業界は遅れてるといってしまっていい状況になっていますが、私の観察範囲ではエンジニアの人の資質の問題ではありません。私が見た最も優れたエンジニアは、私が日本にいるときにあった人々です。じゃあ何が問題なのでしょう? f:id:simplearchitect:20200622075251p:plain

開発者の心を砕いてしまう問題

今回の件で気づいた、大きいことが「開発者の心を砕いてしまう」問題です。日本は完璧主義があって、何か失敗すると、批判されて、責任の所在を追求されて、罰を受けます。それがたとえ、日本の国のためにがんばってくれたヒーローであっても、いいところが9あって、問題が1であっても、1を批判されます。大抵の人は、何か自分がやった事に関して、お金も欲しいかもしれないけど、それよりも「人から感謝される」こととか、「人の役に立ってると実感」することが欲しいんじゃないでしょうか?一方、ソフトウェアの開発で世界一位のアメリカはどうでしょう? f:id:simplearchitect:20200622075726p:plain

アメリカの「コントリビュート」文化

アメリカには「コントリビュート」するという文化があるように感じます。「コントリビュート」は貢献という意味です。人に何かを期待するのではなく、「自分がどういう貢献ができるか?」ということをベースに考えます。だから、人がちょっとでも自分に何かしてくれたら「ありがとう」という気持ちが生まれます。私がエンジニアリングチームに入って、自分の作ったものをはじめてみんなにお披露目する会がありました。ところが、以前にテストした時は全く問題なかったのに当日はデモが全く動作せず、めちゃめちゃになりました。

 こういう時日本では上司から死ぬほど怒られる場面ですが、こちらでは上司に謝ったら「問題ないよ。だって我々は新しいことをやってるんだから、こういうことは起こるんだよ」といわれました。誰一人批判する人はなくて、こんなめちゃめちゃになって、みんなの時間を無駄につかったのに、「私たちのために時間をとってくれてありがとう」という人まで何人かいました。 f:id:simplearchitect:20200622080511p:plain

これは、明らかに自分の上司のメンツをつぶす場面です。実際につぶれていると思います。だって、新しく入ったメンバーが、自分の下でちゃんと役立っているというのを示したいはずです。実際そうしたかったのだと思います。だけど、失敗しても彼はそういわず、彼の上司も特に何もいわずで、今彼は私のパフォーマンスに喜んでありがとうとかよく言ってくれています。

コントリビュート文化とソフトウェア開発のマッチング

ソフトウェア開発の文化はアメリカから生まれているので、こういった文化の下地があるのかもしれません。ソフトウェアは最近できたばかりであるのと、毎週のようにバージョンアップされたり、変更されたりするものなので、計画や予見が非常に難しいものです。そして大変複雑なのものです。ですので一人の人がすべて把握できるような代物ではありません。専門家でも「一部」の知識しかもっていないものです。だから人が強力しあって開発を進めます。誰もが「完璧な人はいない」とか、「物理的に無理なものは無理」という前提で物事を考えます。 f:id:simplearchitect:20190327181937j:plain

そして、アプリがリリースして、それがよりよくなってほしかったら「自分がどう貢献できるか?」を考えて、それを実行します。具体的には、問題のある部分のソースコードを修正して、送ってあげたり、そこまでしなくても、「こういう場面でこういう問題が起こりました」というのを定型のフォームにしたがって報告してあげたりします。自分が動かないのであれば、「よりよくなってほしい」のがそうならなくてもしたかがないでしょう。あくまで「自分次第」です。日本にいた時を思い出すと、日本では、「人がこれぐらいやってくれて当然」という感覚があります。それはいいこともありますが、「自分次第」の感覚の方が、人間関係のストレスは圧倒的に少なく感じます。

f:id:simplearchitect:20200622081330p:plain

 一方、プロフェッショナリズムも正直米国の方が上です。日本では、現実的に出来るかどうか?よりも、できもしない完璧とか、メンツが重視されます。それを徹夜でこなすのは少なくともユーザにとってはプロフェッショナルではありません。不完全で、いろんなレベルの知識を持った人がいて、そういう人が集まっている状態で、無理なくよりよくどうやったら出来るか?を常に考えているので、「現実的」にソフトウェアのレベルが無理なく向上ていくのだと思います。そして、失敗から批判が生まれるのではなく、「フィードバック」が生まれます。「こうしたら上手くいかなかった」「ここに問題が発生した」こういうレポートがアプリケーションの特定のサイトに集められることで、開発者も優先順位をつけてその修正に取り組むことでアプリがよりよく改善されます。アプリは不具合があるのは当然という考えがシェアされているので、報告したほうも、された方も「ありがとう」という感覚を持っています。

コントリビュートと感謝のループ

私は世界規模のクラウドのシステムを作っていますが、リリースして、不具合があっても批判にさらされることはありません。上記のような文化があるからだと思います。うちのシステムでなくても、開発者の誰しもが日常的に使っていて業務が滞るシステムが落ちた時でさえ、開発者の人は「あー、今日は仕事にならねぇなぁ、どっか遊びに行くか」とかつぶやく感じです。誰も開発者を責めたりしません。給料をもらっている事なのに、ほぼほぼ「作ってくれてありがとう」とか「助かった!」とかそういうフィードバックばかりです。問題があったら、問題をGitHubというサイトにポストしてもらえて、批判や人格否定は一切なくて、そこで建設的にどう改善したらいいかというディスカッションが行われます。だから感謝しかされません。そうやって、作っている方もみんなに感謝されているから、もっと、よりよくしていこう!とやる気になりますので、結果としてユーザーさんの欲しいものがさらに作られていくという良いサイクルを感じます。 f:id:simplearchitect:20200622081632p:plain

完璧・批判・責任の所在のループ

一方日本では、ディスカッションを見ると、「誰に責任がある」とか「こうすべきだった」とか、「品質が悪い」とか文句のオンパレードです。それは困難な状況に立ち向かった人に対して、自分は椅子に座っているだけの人がやっていることです。良かれと思ってやってると思いますが、「責任の追及」や「批判」をして世の中の何が前進するのでしょうか?それが、いったい何の貢献になるのでしょう?それよりも、「今からどうやったらよくなるだろう?」「今自分が何をしたら貢献できるだろう?」と考えると人それぞれ、貢献できることが見えてくるのではないでしょうか? f:id:simplearchitect:20200622082019p:plain  「完璧主義」から生まれる「批判」「責任追及」によって、自分が時間をつかって貢献した技術者の人は心が折れて、恐らく「二度とこんなことはしない」と思うかもしれませんし、アメリカがそうじゃないとわかると、日本を捨ててアメリカに移住するかもしれません。そらそうです。同じことをして、もっと給料がもらえて、みんなに感謝される。このようにパッションも実力もある人から日本を去っていくのは当然のことじゃないでしょうか?

世界的クラウドの開発でちびりそうになったこと

世界規模のクラウドの開発に参加した時は正直ちびりそうでした。日本の感覚でいたので、失敗でもしようものなら、世界中から批判されて大変なことになる、、、絶対失敗できない、、、と。 f:id:simplearchitect:20200622082811p:plain しかし現実はそうではありませんでした。人間は失敗するもの、むしろ「やってくれてありがとう」と感謝される日々で、日本で1システムを作っていた時よりもよっぽど気が楽です。私が失敗したら、世界中のシステムが止まるかもしれないのにです。私と日本にいる開発者の方でレベルが違うとかありません。むしろ私より上の人は多いと思います。だから、この国では、ソフトウェア技術者になりたい人が多く生まれて、キャリアを続けていても楽しいからやっていけて、だからこそいろんなサービスが生まれる。そんなことがとても大きいのではないかと思いました。

いま私たちが出来ること

多くの人が努力した成果がリリースしていただいたので、我々にできる「小さな貢献」を考えてみませんか?例えば、問題を見つけたら下記のメールアドレスに問題を報告するということもそうです。忙しくて何もできない人もいるかもしれませんが、アプリを作ってくれた人に対する感謝を発信したりすると、批判を発信する人から受ける開発者や政府関係者の人の痛みを軽減して、より生産的になれるかもしれません。何よりもアプリをインストールすることも貢献だと思います。私は米国に住んでいて、彼らのために何が出来るだろうと考えました。私のブログは多くの人に読まれるケースが多いので、ブログを書くことにしました。人それぞれなので、強制とかはもちろんあほらしいと思います。そうではなくて、少なくとも、「実際に動いた人」に対して感謝の気持ちが最初に来る方が私は少なくとも気持ちがいいし、「動いてくれている」人にもきっといいし、日本の未来を考えても、そういう環境になるほうがきっとソフトウェアを作ってくれる人が増えて、世界を気持ちよくよりよくしてくれると思います。