22 Jan 2015, 15:49

Team Geek を読んだ. 仕事をつくるのは誰か?

はじめに

とりたてて読む動機はなかったのだけれども, 図書館でふとタイトルに止まったので借りて読んでみました.

内容

Google のエンジニアがエンジニアの働き方について書いた本.

薄い本なのですぐ読める (1-2 時間) しかし, 得るものはおおい. 講演を元にしているようで,口語で軽い語り口だほ

  • 1 章 天才プログラマの神話
  • 2 章 素晴しいチーム文化を作る
  • 3 章 船にはキャンプテンが必要
  • 4 章 有害な人に対処する
  • 5 章 組織的操作の技法
  • 6 章 ユーザーも人間

感想

1 番こころにのこったのは, 第 3 章だ. この章は, マネージャーについてかかれている.

管理職にはなりたくない

<div class="outline-text-3" id="text-unnumbered-4">
  <p>
    正直にかくと, マネージャーにはなりたくない.
  </p>

  <p>
    消極的な理由は, 自分はひとをまとめる力がなくて, メンタル的に打たれよわいから. また, 自分のまわりにいるマネージャーをみると, いつも障害対応でクタクタになっているように見える.
  </p>

  <p>
    積極的な理由は, コードを書く時間がなくなるから.
  </p>
</div>

サーバントリーダーとテクニカルリーダー

<div class="outline-text-3" id="text-unnumbered-5">
  <p>
    マネージャーは, 野球部の女子マネージャーのような存在で, 野球選手が輝くためのことをするべき存在だと思っていた.
  </p>

  <p>
    そんな自分の思いを移すような内容だった. この本では, それを
  </p>

  <p>
    <b>サーバント・リーダー</b>
  </p>

  <p>
    と表現している. 19,20 世紀的なマネージャー観とこれからのマネージャー観は違うと書いている. 野球選手やお笑いタレントを影で支えるのがマネージャーの仕事.
  </p>

  <p>
    その代わりにサーバント・リーダーとともに, 技術的にチームを引っ張っていくテクニカル・リーダーの存在も書いている. 会社がうまく回るためには, サーバントリーダーとテクニカルリーダーの存在が不可欠なのだと.
  </p>
</div>

自分のなりたい姿について

<div class="outline-text-3" id="text-unnumbered-6">
  <p>
    あっというまに, 読んでしまったのだけれども, 少なからず自分のこれからの仕事観に影響を受けた.
  </p>

  <p>
    自分の将来が未だに描けないのだが, 自分はテクニカル・リーダーになりたいと思った. 従来のような管理職にはなりたくない.会社の仕組みとか人の管理とか, 興味ないし.
  </p>

  <p>
    実現したい想いをもって, ストーリーを描けるようになりたい.
  </p>

  <p>
    もしかしたら, そのためにはコードを書くことを犠牲にするかもしれない. 協力してくれる仲間を巻き込んで, 1 人ではできないような大きなことを成し遂げるのも, それはそれでいい.
  </p>
</div>

仕事をつくるのは誰か?

<div class="outline-text-3" id="text-unnumbered-7">
  <p>
    現状のマネージャー独裁運営から, テクニカルリーダーとサーバントリーダーによる共和制に移行するためには, テクニカルリーダーがもっとお金稼ぎについて責任をもつ必要がある.
  </p>

  <p>
    今の職場では, 仕事はマネージャーがつくりだすものだけれども, これからは, メンバの 1 人ひとりが, 新しいビジネスにつながることを考えないといけないと思う. そのためには, 一人ひとりが技術の動向についてもっと追いかけ, 議論して, 新しい金の卵は落ちていないか探す必要がある.
  </p>

  <p>
    今, 自分の所属している部署は, 売上が減ってきている. 受託開発を長年しているのだけれども,受託が減ることはこの先は明らかなのだ. 生き残っていくには, 新しいことにチャレンジする必要がある.
  </p>

  <p>
    しかし, 自分の目からみると, どうも回りの人は技術の動向に疎いように見える. 家に帰ってプログラミングをすることを厭うような文化がある. 家庭のためにプログラミングを通じてお金を稼ぐサラリーマンのような.
  </p>

  <p>
    今までは仕事があったからよかったのだけれども, これからは, 一人一人がもっともっとお金稼ぎについて 頭をひねるようなことをしないといけないと感じている.
  </p>

  <p>
    そんな状況で, 自分にできることはなんだろうか?
  </p>

  <p>
    ということを考えることが, 今受けてる会社の研修内容だったりする. 答えはおぼろげなので, ここまで.
  </p>
</div>

Bookmarks

以下, 心に残ったものを抜粋する.

天才プログラマの神話

<div class="outline-text-3" id="text-unnumbered-9">
  <p>
    ソフトウエア開発は <b>チームスポーツ</b> である.
  </p>

  <ul class="org-ul">
    <li>
      隠したらダメになる.いつも一人でやっているとリスクが高くなる. 成果を共有することで <b>バス係数</b> (冗長性) が高くなる.
    </li>
    <li>
      ソーシャルスキルの三本柱は以下.(HRT) <ul class="org-ul">
        <li>
          謙虚 (Humility) 世界の中心は君ではない. 君は全知全能ではないし, 絶対に正しいわ けでもない.つねに自分を改善していこう.
        </li>
        <li>
          尊敬 (respect) 一緒に働く人のことを心から思いやろう. 相手を 1 人の人間として扱い, その能力や功績を高く評価しよう.
        </li>
        <li>
          信頼 (Trust) 自分以外の人は有能であり, 正しいことをすると信じよう. そうすれ ば, 仕事を任せることができる.
        </li>
      </ul>
    </li>
  </ul>
</div>

素晴らしいチーム文化をつくる

<div class="outline-text-3" id="text-unnumbered-10">
  <p>
    コミュニケーションの原則は, <b>同期コミュニケーションの人数を減らし, 非同期コミュニケーションの人 数を増やすこと</b> である.
  </p>
</div>

<div id="outline-container-unnumbered-11" class="outline-4">
  <h4 id="unnumbered-11">
    コミュニケーションツール
  </h4>

  <div class="outline-text-4" id="text-unnumbered-11">
    <ul class="org-ul">
      <li>
        ミッションステートメント <ul class="org-ul">
          <li>
            プロジェクトが目指す姿を短い言葉で表現して共有する.
          </li>
          <li>
            <b>方向性</b> と <b>スコープの制限</b> を明確にすること.
          </li>
          <li>
            企業のわけのわからない抽象的な表現がミッションステートメント をダメにしている.
          </li>
        </ul>
      </li>

      <li>
        効率的なミーティング <ul class="org-ul">
          <li>
            ミーティングに 5 以上参加させてはいけない.意思決定者がいなけ れば, 決まるものも決まらない.
          </li>
          <li>
            ミーティング中にノート PC をいじってメールチェックをしている人 は参加しなくていい人.
          </li>
          <li>
            ミーティングを開くときの簡単な 5 原則 <ol class="org-ol">
              <li>
                絶対に必要な人だけを呼ぶ
              </li>
              <li>
                アジェンダを作ってミーティング開始前に配布する
              </li>
              <li>
                ミーティングのゴールを達成したら時間前でも終了する
              </li>
              <li>
                ミーティングを順調に進める
              </li>
              <li>
                ミーティングの開始時間を強制的に中断される時間の前に設定す る (お昼休み, 就業時間)
              </li>
            </ol>
          </li>
        </ul>
      </li>

      <li>
        設計文書 <ul class="org-ul">
          <li>
            設計文書は 1 人が所持するもの. 大勢の人がレビューして, 2,3 人の人が承認するもの.
          </li>
          <li>
            何をどうしたいのかを低コストでチームに伝える手段.
          </li>
          <li>
            タスク分割につかうもの.
          </li>
          <li>
            プロジェクトが進むにしたがって更新するべきもの.
          </li>
        </ul>
      </li>

      <li>
        メーリングリスト <ul class="org-ul">
          <li>
            チームが同じフロアにいるのであれば, メーリングリストで議論す る必要はない.
          </li>
          <li>
            議事録・ミーティングメモ・決定事項・設計文書などをメーリング リストに投稿して, 記録をまとめる.
          </li>
        </ul>
      </li>

      <li>
        オンラインチャット <ul class="org-ul">
          <li>
            信じられないほど便利なツール. 他人の作業を邪魔することなくリクエストを送信できる.
          </li>
          <li>
            IM では, チーム内での情報共有ができない.
          </li>
        </ul>
      </li>

      <li>
        課題管理ツール <ul class="org-ul">
          <li>
            ただの掲示板. メーリングリストと同じ.
          </li>
          <li>
            バグの優先順位をつけることができる.
          </li>
        </ul>
      </li>

      <li>
        コードレビュー <ul class="org-ul">
          <li>
            すべてのコミットにコードレビューする.
          </li>
          <li>
            コードの監視方法をプロダクトに導入する.
          </li>
          <li>
            コードの行のスタイル・品質・ケアレスミスを第三者が確認するべき.
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

船にはキャプテンが必要

<div class="outline-text-3" id="text-unnumbered-12">
</div>

<div id="outline-container-unnumbered-13" class="outline-4">
  <h4 id="unnumbered-13">
    リーダとマネージャー
  </h4>

  <div class="outline-text-4" id="text-unnumbered-13">
    <p>
      マネージャーは, &#8220;サーバント&#8221;, 執事のような存在だ. 芸能人のマネージャーがタレントの活動をサポートするための黒子に徹す るのと同じように, マネージャーはチームのエンジニアに最高のパフォー マンスを発揮させることが使命.
    </p>

    <p>
      一方, リーダはすべてのエンジニアに要求される役割.
    </p>

    <p>
      トンガリ頭のマネージャーは, 軍隊の階級制度を散光にして, 産業革命の ときに導入されたもの.向上では組み立てラインの稼働を労働者に命令する 必要があった.
    </p>

    <p>
      エンジニアリングの世界でも時代遅れの マネージャ&#8221;という肩書きを使っ ている.マネージャーじゃなくて, リーダーにしたほうがいいと思う.
    </p>

    <p>
      マネージャーになりたがらない理由はたくさんある.ぼくたちが耳にした大 きな理由は, コードを書く時間が少なくなるから.
    </p>

    <p>
      もう一つの語られない大きな理由は, &#8220;階層的な組織に属する人間は,必ずその人の無能レベルまで昇進する&#8221;
    </p>

    <p>
      マネージャーは, サーバントリーダーとして謙虚・尊敬・信頼の雰囲気をつくり 出さなければならない. これは, エンジニアでは対処できない社内の障害物を排除することかもしれないし, チームの合意形成を支援することかもしれない.あるいは, 夜遅くなった時にチームに夜食を買ってくることかもしれない.
    </p>

    <p>
      マネージャーになるメリットは, 自分のストーリーを描くことができるから. また, 自分がコードを書く代わりに, チームメンバを利用して より多くのコードを書くことができるから.
    </p>
  </div>
</div>

その他

<div class="outline-text-3" id="text-unnumbered-14">
  <p>
    1 週間に書いたコード行数のような意味のない (デラタメな) 方法で生産性を計測する会社もある. (行数が少ない方がいいに決まっている)
  </p>
</div>