TL;DR
正論も大事だし、議論をして合意することも大事だけど、時間は限られている。
特にエンジニア同士のアーキテクチャの議論はトレードオフを意識しながら、時間を意識してどこまで議論すべきか考えたい。特に日本人が多い組織は合意形成を大事にする傾向があるけど、全員が合意していないけど、関係者が成果にはコミットするような場作りをしたい。
正論と向き合って、その先へ一緒に行きたい
まず、正論やべき論みたいなのは必要で歓迎すべきと考えてる。
が、それだけ言って、言った本人だけスッキリしても課題は解決しない。そこからどう行動するか、ふんばるかが大事。個人的にはここが信頼される人かどうかの境目になるように思う。
すなわち、正論を言った上で、関係者に寄り添って一緒に悩めるかどうか。意外にこれができる人は少ない。
仕事に絡むことでいうと、アーキテクチャの議論をしているとき、こういう場面はよくあると思う。
こういうアーキテクチャであるべきだ、
ここの責務はこうあるべきだ、
という議論。必要な話だとは思うけれど、やはりアーキテクチャの決定にはトレードオフの考慮が必要。
こうあるべきだ、
とべき論ばかり話していると前に進まない。俺が考えた最強のアーキテクチャを話してても前に進まない。楽しいのはよくわかる。でもそれではそこから前に進めない。
あと、無視できない要件を棚上げにして議論しているケースもある。まだマシなように見えるけど、その後の議論をうまく積み重ねないと時間が無駄になるからこれもまた難しい。
個人的な印象として、べき論をベースに話を進める人は全体が見えていない、または経験が足りていないケースが多いように感じている(自戒をこめて笑)。
他方、ぼくも尊敬するような人たちはべき論は述べつつ、同時にそのトレードオフの関係にある非機能要件を述べ、そして一緒にそのトレードオフの関係にどう答えを出すか悩んでくれる(答えが出せるかどうかは問題ではない)。
この違いは非常に大きい。
そして、このあたりをうまくやれるかどうかは、ソフトスキルに依存してくると思う。アーキテクチャの選択にトレードオフの関係があることを知ってるかどうかなのでは?、と思うかもしれない。でも、知っていても、
”こうあるべきなのになぜそうしないのか”
という考えから抜け出せない人は意外に多い。不思議ではある。けど、これも気持ちはよくわかる。意見を引っ込めるタイミングがわからなくなった、とかもあるのかもしれない。
アーキテクチャ選択におけるトレードオフ関係の話は最近いろいろな本で改めて書かれている。そして、アーキテクチャの議論に加わるような人たちは実績や知識そのものは十分だったりすると思う。べき論述べられるということは、それだけしっかりと知識も経験もある。
僕がEMとしてよく支援するのはこういう議論の場だったりする。
みんな誠実に考えてるし、真剣。でも議論が平行線で結論が出ず、なんか日に日に気まずくなってる。残されて時間もどんどんなくなっていく。
僕も状況を聞いて、なんとかしたいなと思い、状況の把握をしつつ、トレードオフの関係の詳細を言語化して、適切な人が判断をできるようドキュメントを用意する。そんなことをちょいちょいこの1、2年はしてた気がする。
このところ僕がよくしてるのは抽象化するとこういうことだと思う。僕個人のハードスキルもソフトスキルも限界のところまで求められるから(なんならハードスキルは足らなくて勉強しながらが多い)、疲れることもある。
合意することにどこまでリソースをかけるか
さて、ここからは最近個人的に考えていること。正論をぶつけ合いながら、合意形成するまでにどれくらい時間かけるか、のあたり。
先に今の考えを書くと、合意は関係者でしたいが、みんなが合意するまでずっと議論することはないようにしたい、と考えてる。ずっとてのは大袈裟かもだけど、意外にそういうとこあるんじゃないかな。だから、合意できない人がいる状態でも、状況考えてプロジェクトは前に進めるようにしたい。
すなわち、合意はしないけど、プロジェクトor成果にはコミットする、的な状態を最速で作りたい、と思ってる。
文化的な背景もあるように思うが、日本の組織は合意形成に時間かけすぎなのではないかなと思うようになった。日本以外の国を拠点とする組織ではどうかわからないが、異文化理解力にも日本が合意形成を重んじることは相対的にもそうである、述べられてたので、まあ感じてることは合ってるのかもなと思ってる。
ぶっちゃけ、さくっとトップダウンで決めてほしいことはある。もちろんボトムアップが大事なことは理解しつつ、トップダウンでうまく決まるならそれがいいケースもいっぱいある。
例えば、大規模なシステムリプレイスはまさにそうなんじゃないだろうか。ボトムアップでトレードオフを明らかにして、そして最後はさくっとトップダウンで決めてもらう。(いや、決めるの大変とは理解してるけど。) ZOZOTOWNのリプレイスの話を読んだけど、組織全体で合意するのに苦労しただろうなと思う。
周りをまきこめる強いCTOのロールの方がいれば話は早いのだろう。でもそんな組織ばかりではないし、なんならそんな組織はまれだと思う。ZOZOTOWNでも、ずっとそうだったわけではないと思う、たぶん。現場からも技術力で信頼されて、社内政治もできる、的なスーパーマンはなかなかいない。
現場で話してると、目の前の議論に集中しすぎて、なんの話をしているかわからなくなる。例えばアーキテクチャの話であれば、ミクロな話も大事だけど、最終的には議論を俯瞰して捉える必要がある。そして、トレードオフの関係を言語化し、適切な人に最終判断を仰ぎ、議論に終止符を打つ。
これを実践することは簡単ではない。こういうときその場を支援するのが僕のようなEMがなんとかすべきことのひとつのように思う。
けど、毎度話をまとめるにも相当なハードスキルが必要だし、相当なソフトスキル、というかファシリ力が求められる。
もっとうまくできないかしら、と最近よく思う。でも、僕個人のハードスキル、ソフトスキル、そして、組織の中での政治力が足りない。だから、ARMSの名セリフ、"力が欲しいか"、ていう声が聞こえてくる。力が欲しい。けど力がないからどうにもならん。
まとめと感想
正論はぶちまけたらいい。でも正論ぶちまける技量があるなら、せっかくだし一緒に悩もうぜ、と思ってる。
僕は、正直小さなソフトウェアをこちょこちょ楽しく少人数で作ってたいなと思うことがある。どこかでそういうキャリアに切り替えたいなと画策はしてる。でも、それはおじいちゃんになってからでいいなと最近思ってる。そういう楽しみがある、というのはそれはそれでいい。
だから、今、元気なうちはしんどいことはあるけど、大変なソフトウェア開発とも向き合おうと思っている。こういうのはこの歳になって思えるようになった。おっさん化によるものかな。
しんどい時には同僚とうまいご飯食べて、お酒飲んで、そして筋トレして、ランニングでもしてれば元気になってる。この1、2年は結構しんどかったんだけど、よく仕事終わりにランニングしてたもんな、そうじゃないとイライラして寝付けなかったし。だから筋肉大事なんだよなほんと。
正論と向き合いつつ、筋肉育ててれば、たぶん課題は解決していけるんだと思う。最後は筋肉だ。おわり。