一見、開発者はそれぞれのコンピュータと働くように見える。 しかし、見えないチームワークが組織の実行力だけでなく、コード品質と個人の成長までも決定する。様々なチームを経て様々な仲間にたくさん会うほどチームスポーツをしているような感じがする。同じフロントエンド開発者であっても、誰かは手が速く、誰かは設計を上手にし、誰かがUIを非常によく作って、誰かはメンタリングを上手にし、誰かがムードメーカーの役割を上手にするなど、いくつかのポジションを持っている。そして意思決定をする時も技術的にぴったり一致して全会一致になるのは幻想に近い。チームが直面している状況に応じて、経験や能力に応じて、または誰かの影響力に応じて流動的です。同じ問題でもチームごとに異なる解決策を導き出す。

だから重要なのがチームワークだと思う。問題状況が迫っても柔軟に対応し、速く回復させる原動力だ。そしてチームワークの基礎は安全感と信頼だと思う。

個人を責めない雰囲気

問題が発生した時、仕事を担当した担当者や問題コードを作成した開発者を責めるのは簡単だ。しかし、これは心理的安全感を損なう本当に悪い文化だ。さらに、個人の過ちやミスだとして済ませば、そのチームは同じタイプの問題を後でまた経験するだろう。問題そのものよりは「誰が」起こしたかだけが記憶に残るからだ。問題と人を分離せず、問題そのものを深堀りしてみたことはないだろう。するとチームメンバーは、今回は私でなければ良いと願ってドキドキする。

以前の上司は問題を収拾した後に必ずチームを集めておいてこうう言った。「問題を避けたいなら何もしなければ良い。レガシーもよく動作しているから、そのまま置いて新しい挑戦もしないで。しかし、私たちはそうしてはいけない。成長し続けなければならない。問題を経験したら、再発防止策を徹底的に立てて、また挑戦すれば良い」と励ました。

以前のマネージャーも問題が発生した時に、チーム全体が集まって解決策を議論する席はいつもこういう言葉で会議を開いた。「誰かを責めて追及しようと集まったのではない。ここにいる誰でもこのようなミスをする可能性があり、今後同じミスを私たちのチームで根本的に遮断できる解決策を設けるために集まった会議だ。

自分が問題を起こしたことが明らかになったら、人は本能的に自分を防御するようになる。他の人が言う言葉は、自分と自分の能力に対する批判に聞こえる。だからリーダーはより積極的にこのような雰囲気を作り、問題と人を分けるように誘導すれば、個人は安全感を感じ、これをもとにチームレベルで問題を解決して防止策を立てることができる。

頭でするレビュー

問題と人を分けてからする冷静なレビューは成長痛のようだ。当事者の立場からは照れくさくて困惑する時もあるが、自分の人格を批判しているのではないという安全感があるので、問題解決と再発防止のために何が起こったのかを透明に公開してチームが一緒に対処して回復する機会を得られる。

Grabではホットフィックスをすることになれば、数週間以内に公開的なレビューを行う。レビューに先立ち、事前に事後報告書を様式に合わせて記入しなければならない。問題を措置した時刻表、事故の影響、原因、防止対策など、できるだけ具体的かつ詳細に記す。そして1時間のレビュー会議の間、数十人の開発者が集まって鋭い質問を投げ、解決策を提案し、集団知性を発揮する。ごまかしながらパスする余地はない。

初めて出席した時は、第三者が聞いても殺伐さを感じるほどに直説的だった。しかし、ずっと聞いてみると、みんなが一心同体になって集まっていることが分かった。聴聞会ではなく作戦会議だ。できるだけ感情を抜いて冷静にレビューすると、一緒に成長することができる。

一緒に成長しようとする姿勢

かつてメンターは、プログラミングの実力に言及するたびに、個人ではなくチームを主語に置いて話す時が多かった。全体的なコードの品質やコードレビューの水準は、最も優秀な開発者ではなくチームの平均スキルに従うということだ。だから私たちが問題をよりよく解決するためには、誰か一人だけがうまくいってはならず、チームメンバー全体が一緒に成長しなければならない。持続的に勉強会を運用し、また熱心に参加して知識を分かち合う開発者たちはこれを知ることに違いない。

たまにこんな開発者がいる。新しいチームに来るやいなやレガシーの間違った部分を全て洗い出して指摘し、本人の基準に合わせてコードレビューをしながら既存のチームメンバーをけなす。レガシーとは、昨日までは最善の選択だったという言葉がある。自分が新たに寄与する点が見えたら、チームメンバーを説得し知識を伝播してチームの平均を引き上げるのが正しいと思う。自分とチームを分離して考えると、両方に有益なことはない。

人々は、一人で引き立てようとする人と、心からチームのために献身する人を区別することができる。善意と親切で互いを扱う人々の間には信頼が生じ、一方で一人でだけ上手にしようとする人はチームワークを損なう。だから、ある先輩開発者は、採用する際には人柄が一番重要だと言い、ある有名コーチは個人の能力ではなく、その人の態度を見て採用しなければならないと言っている。