チーム開発に必要な HRT
過去に、とある案件で、他の会社と合同でチーム開発を行うことがあった。
その際に、社内だけでチーム開発を行うのと比べると、うまく機能していないな、やりづらいな、と感じることがあった。
その時は、なぜこのような状況になってしまっているんだろうか、ということをうまく自分の中でまとめることが出来なかったのだが、最近『Team Geek』という書籍に読んで、その答えがうまく表現してあったので、今回はチーム開発に必要なことについて『Team Geek』から抜粋しながらまとめてみる。
チーム開発に必要な3つの要素
『Team Geek』では、優れたチームを作るためには、 ソーシャルスキルの「三本柱」 が必要であると述べられている。
あらゆる人間関係の衝突は、この三本柱の欠如によるもの、と書かれていた。
ソーシャルスキルの三本柱の「HRT」
「HRT」とは、謙虚、尊敬、信頼の頭文字を取ったものである。
それぞれどのように紹介されていたかを引用しつつ、それについて思うことを書いてみる。
謙虚(Humility)
謙虚(Humility)
世界の中心は君ではない。君は全知全能ではないし、絶対に正しいわけでもない。常に自分を改善していこう。
自分を改善しようとする意識は非常に大切だと思う。
自分が書いたコードに対して、指摘されることは気分が良いものではないと感じるかもしれない。
でも、常に謙虚で、他の人からの指摘や助言は素直に受け入れられるようにすることは大事だ。
コードレビューの際に、何かを指摘しても受け入れない。
自分の非を認めない。
自分の意見を援護するような主張を他のブログやサイトから引用して来るだけで、メリット・デメリットを含めて建設的な議論をしようともしない。
そんな人がいると、なかなか良いチーム開発はできないだろう。
尊敬(Respect)
尊敬(Respect)
一緒に働く人のことを心から思いやろう。相手を1人の人間として扱い、その能力や功績を高く評価しよう。
相手に対する尊敬も欠けてはいけないことだ。
仮に相手が開発歴が自分より浅くても、自分が気づかない実装やミスがあるかもしれない。
自分を改善し、成長できる機会を与えてくれる人として、相手を尊敬する気持ちを忘れないこと。
それが重要だ。
相手の経験が自分よりも少なくても、「レベルが低い」などと見下すべきではない。
そういった態度が少しでも見えると、途端に開発に携わるメンバーのモチベーションも下がるし、開発に対する積極性も失われるだろう。
メンバーが萎縮してしまっては、建設的な議論などできるはずもない。
信頼(Trust)
信頼(Trust)
自分以外の人は有能であり、正しいことをすると信じよう。そうすれば、仕事を任せることができる。
相手を信頼して、その人に任せることができるか否か。
信頼されて、仕事を任されたら、任された側もそれに応えられるように頑張るだろう。
お互いが信頼し合える関係がチーム開発に不可欠だ。
何から何まで自分でやろうとしていては、チームとして成長が望めない。
仮に相手にお願いしたことが自分の想定とは違った実装になっていても、
「もういい。自分がやる!」
「自分がやったほうが速いし」
となってしまっては、相手も混乱するだけだし、相手も自分のことを信頼してくれないだろう。
そんな状況では、チーム開発がうまく行くとは思えない。
コードレビューのコメントで実践すると
上記の HRT の実践の例として『Team Geek』では、下記のように書かれていた。
「このメソッドの制御フローは完全に間違ってますよ。みんなが使ってる標準的なxyzzyコードパターンを使うべきです」などと言ってはいけない。
(中略)
言われたほうは防御的になり、必要以上に感情的な反応をするだろう。
同じことをもっとうまく伝えるには、「この部分の制御フローがよくわからないのですが、xyzzy コードパターンを使えば読みやすくなるでしょうか?」にすればいい。相手に対する疑問ではなく、自分の疑問として謙虚に聞くのである。 相手が間違っているのではなく、自分が理解できないだけであることを強調する。
「こういう実装はやめてください」
「XXXを使うようにしてください」
というようなコメントは控えたほうが良い。
書籍で述べられているとおり、言われた方が身構えてしまうし、なぜそれがいけないのかが把握できない。
ここは、
「こういった実装の方が、パフォーマンスが良いと思いましたがいかがでしょうか」
「XXXを使うようにしたら、保守性が上がって素敵だと思います」
「私が勘違いしているかもしてませんが〜、△△で実装できないでしょうか」
など、『Team Geek』で言及されているような、謙虚さ・尊敬を持った指摘ができると、スムーズに相手のことを受け入れられるし、お互いが良いものを作っていこうとするマインドを共有できて、より活発で建設的な議論ができると思う。
冒頭で述べた、とある案件ではこういった HRT が欠如していると感じるやり取りがあったから、チーム開発がうまく回っていない、やりづらいと感じたのだ。
HRT の価値観を共有できるか
繰り返しになるが、チーム開発には HRT が非常に重要であると思う。
HRT という言葉を知らなくても、そういった価値観を重要視していて、自然とできる人がいないとなかなか優れたチームは作れないだろうし、チーム開発がうまく回らないと思う。
そういった価値観を改めて実感できたので、『Team Geek』は非常にオススメの書籍だ。
技術的な細かいことは全然書いていないので、もし興味があれば読んでいただきたい。
O'Reilly Japan - Team Geek
Amazon.co.jp: Team Geek ―Googleのギークたちはいかにしてチームを作るのか
そして、弊社ではそんな価値観に共感できた方、リモートワークで働きたい方を募集しております。
╭( ・ㅂ・)و ̑̑ グッ !
リモートワークで働きたいサーバーサイドエンジニア募集! - 株式会社MMMの求人 - Wantedly
また、チーム開発の最適化や開発フローの整備支援を御希望の企業様は、是非MMMにご相談下さいませ!