ソフトウェア開発はチームスポーツである。高いパフォーマンスを出したければ、開発者としてのスキルを伸ばす本が数多く存在する。優れたマネージャーになるための本もある。
Team Geek ―Googleのギークたちはいかにしてチームを作るのかはそこに新境地を切り開いている。Googleの中の人がソフトウェア・エンジニアリングチームの働き方に関するパターンとアンチパターンを集めてくれた。ソフトウェア開発者がチームメイトと一緒に働き、優れたチームメイトになるための大切な教訓を提示している。本書のような本がずっと必要とされていたが、ついにそれが登場した。
マネージャーは「サーヴァント」、すなわち執事のような存在だ。芸能人のマネージャーがタレントのあk集うをサポートするために黒子に徹するのと同じように、マネージャーはチームのエンジニアに最高のパフォーマンスを発揮させることが使命である。チームが自律的に機能するようになれば、不要にさえなるポジションである。
「日本語版まえがき」より
そもそもピラミッド型のマネージャーというのは、軍隊の階級制度を参考にして、産業革命の時に導入されたもの。100年以上昔のことである。当時は工場があちこちに登場したばかりで、組立ラインの稼働を未熟練の労働者に命令する必要があったため、労働者を監督するマネージャーという立場が生まれた。労働者は簡単に入れ替え可能だったので、従業員を手厚く扱ったり、労働条件を改善したりするというモチベーションはなかった。労働者が決まった作業を行う限り、こうした手法は当時は有効だった。
マネージャーが労働者を道具のように扱う習慣は、仕事が工場からオフィスに移行した後も続いた。こうなるとクソみたいなマネージャーが量産され、最悪なことにこのような時代遅れのマネージャーが現在もたくさんいる(少なくとも僕の上司はクソだ)。
今は、そんなクソなマネージャーじゃなくて、リーダーが必要だと思う。上に立つ者は、どうやって仕事を完了させるかではなく、何ができるかを考えるべきだと思う。どうやって仕事を完了させるかはチームに考えてもらう方が絶対に良い。
そして、下の者は、リーダーから何かを聞かれる前に、こちらから何をしているかを報告するのが良い。コミュニケーションを取りすぎている人なんていないので、何も躊躇することはない。そもそもマネージャーはエスパーではない。
あらゆる人間界の衝突は、謙虚・尊敬・信頼の欠如によるものだ。
「1.5 三本柱」より
世界の中心は君ではないし、全知全能でもないし、絶対に正しいわけでもない。謙虚に自分を改善する必要がある。また、一緒に働く人のことを心から思いやろう。相手を1人の人間として扱い、その能力や功績を高く評価する。さらに、自分以外の人は有能であり、正しいことをすると信じる。そうすれば、仕事を任せることができる。
他のことは忘れても「謙虚・尊敬・信頼」だけは覚えておく。この3つは、あらゆる社会的活動や人間関係の基礎となる。ほぼすべての社会的問題は、この3つのいずれかが欠けているために生じている。
仲間がクソみたいなパワポやコードを書いても、変に批判してはいけない。相手に対する疑問ではなく、自分お疑問として謙虚に聞く。相手が間違っているのではなく、自分が理解できないだけ。あくまでも可哀想な自分が理解できるようにするための提案であり、場合によってはプロジェクトの長期的で持続可能な目標のためにもなることを伝える。
ユーザにとって使いやすいソフトウェアは、プログラマにとって作るのが面倒なこともある。コードを書く側の都合ではなく、ユーザーに集中しよう。コードを書くのが大変になったとしても、愚痴を言わずにやるべきだ。
「6.2 君のソフトウェアはどれだけ使いやすいだろうか?」より
まさにその通りだと思う。僕のお客さん先のエンジニアたちは、使う手の都合は一切無視して、作り手の都合ばかりで物事が進む。恐ろしいことにPMOのリードも作り手の都合に合わせて物事を進めている。結果、クソみたいなシステムが出来上がり、運用側の稼働が増大する。システム導入したのに運用側の負担が増える、というとんでもないことになるのだ。システム開発に携わっている全ての人は、ユーザにとって使いやすいシステムの実現を目指さないといけないと思う。
*
知識や社会問題の対応方法について述べている。Team Geek ―Googleのギークたちはいかにしてチームを作るのかは、ソフトウェア開発者を対象に書かれているが、あらゆる社会的活動や人間関係の基礎となることを説明しているので、ほぼすべての社会人は読む価値があると思う。
Team Geek ―Googleのギークたちはいかにしてチームを作るのかの中の好きな逸話を選んで、ソフトウェア開発に関係した部分を削除し、その他の活動と置き換えてもかまわない。同じ様な社会的問題が存在し、同じ様な解決策が適用できるコミュニティであれば、近所の同好会・教会・建築チームの話にも適用できる。