maco's life

最近は技術以外のことを主に記載しています。

TeamGeek 第1章 天才プログラマの神話

TeamGeek読んだので第1章「天才プログラマの神話」を読んだメモ

どんな本か

プログラマがソフトウェア開発を効果的かつ効率的にために、他人の理解・コミュニケーション・コラボレーションの能力を向上させる

以上を目的とした本でgoogleの中の人が書いている。もっとざっくり言うとチームで開発するときに大切にしたいことを色んな視点からかいてる。

大事だとおもったこと

  • 天才の神話
  • バス係数を高める
  • HRTを大切にする

天才の神話

天才と呼ばれる人...マイケル・ジョーダン、リーナスetc 彼らはその分野でも天才と呼ばれている

しかし、リーナスはLinuxの父として崇められてるけど 実際はUnixライクなカーネルができるというコンセプトを実証して、メーリングリストに投稿したということをしただけ。 それを見た人たち頭の人たちがLinuxを開発した。 実際リーナスは方向性を示しただけで、Linux協働作業の成果です。

マイケル・ジョーダンに関してもチームとうまくやることにたけていた。 決して1人じゃチャンピオンシップは勝てなかったはず。

このように天才という存在がいるからみんな自分のコードに自身がなく、開発途中の中途半端なコードは隠してしまい傾向がある。

この隠すという行為は良い効果をうまない

隠すとダメになる

隠すということは、それだけ他の人に目に触れる機会が減ること。 また隠さないことで、協力者が現れて早く開発が終わることができたり、 早い段階で他の人の指摘を受けることができるので、欠陥をみつけることができるというメリットがある。 それでいてバス係数をたかめることができる

バス係数

バス係数とは何人の人がバス引かれたらプロジェクトが終わるかということを示す係数である。 実際にバスに引かれるわけじゃないけど、転職などで人がいなくなることがある。 バス係数が高いと、リスク面からみても安心だし、開発スピードをあげられる。 それは解決方法の相談、協働作業できる点など、あらゆる面から言える。 身近な例だとコードレビューのFBが強固になる。 チームで開発すること のメリットは大きいということ、 むしろ現状ソフトウェア開発はチームスポーツとよばれている。

なのでチームで開発するべきというより、チームで開発をしないといけない。

HRTを大切にする

チームで働くときのポイントで大切なのはHRTです

  • HRT(ハート)
    • 謙虚(Humility)
    • 尊敬(Respect)
    • 信頼(Trust)

痛みを軽減するからハート。※hurtではないからね :) これがないと人間関係衝突がおこる。 こういった衝突が起こさないために、もどうやってHRTを実践すればいいのか

HRTを実践

  • エゴを無くす
    • 謙虚のない相手に態度を新たてもらう方法にはエゴを無くすこと。自分の意見を言わないのではない。全ての提案や議論の細部にまで口をだすのはエゴにつながる。意見を言わないのがいいというわけじゃなく、なんでも自分が正しい、自身があるという印象を相手に与えてはいけない。
  • 批判の配分と対応を学ぶ
    • 建設的な批判は、プロダクトの改善を考えており、そこには尊敬が含まれていること。性格に対する攻撃的な批判は何の役に立つこともない。批判される方は、自分が謙虚に受け入れるだけでなく相手を信頼しないといけない。コードレビューででる批判は、レビューされる人の価値を評価しているのではなく、その人が書いたコードを批判していることを認識する必要がある。
    • 良くない例をだすと、「Aというフローは間違っているので、みんながつかっているBというフローにしたほうがいい」。これはダメだから変えてといっているのと同じ。相手は自分自身がだめなのかなとおもってしまう。なのでこの場合、「Aのフローがわからないのですが、Bのフローをつかったほうがわかりやすくなるかな?」というあくまで自分の疑問として相手に尋ねることが謙虚な聞き方になる
  • 忍耐強くなる
  • 影響を受けやすくなる
    • 頑固なのはよくない。頑固だとみんなその人を避けて通るようになって、そこに信頼関係はうまれない。相手の言っていることに耳をかたむけ、自分の間違いや能力不足だったらそれを素直に認める。これは謙虚を相手にみせ、相手を信頼することである。その繰り返した、みんなからの尊敬にもつながる。

※政治家が信用されないのは間違いや無知をみとめないことにもつながる