開発におけるマネジメントを考える
はじめに
ハイアウトプットマネジメントという本はご存知でしょうか?インテルの元社長のアンドリュー・グローブさんという方が書いたマネジメントについての本なのですが、私は大変な名著だと思っています。
私は駆け出しの社会人でプレイヤーとしての実力は0なのですが、チームの進捗をサポートするというタスクを仰せつかったため、上記の本を参考にしながら、チームへの支援の仕方を考えてみました。
意識していること
モニタリング
グローブさんはこう言っています。
移譲した仕事のモニタリングは結果を確実にもたらすための唯一の実際的方法である。
ということでモニタリングをどうやるかということなのですが、細かくプルリクエストを投げる現場ではそれをレビューすることが適切なモニタリングになると思います。一方、あまり細かくプルリクエストは投げず、ある処理やある画面が完成した後にレビューをするという現場だとより細かくモニタリングすることが必要だと思います。
私は後者の環境なので、やり方を考えなくては行けないのですが、日次でリモートレポジトリにpushしてもらい定期的にdiffを確認するという方法をとっています。
モニタリングの強度についてはグローブさんはこう言っています。
モニタリングの頻度は、あなたの考える部下の"通常の一般的"仕事能力を基準にするのでなく、
特定の仕事での部下の経験と以前の実績を基準にすべきである。
ということでコードを見て、うまく書けているひとはたまにチェックするようにして、苦戦しているひとは厚めに見るようにしています。
ただグローブさんはこうも言っています。
品質保証の原則をここで有効に活用するには、細部のチェックはごくたまにランダムに実施するようにして、
部下が自分の思う通りに動いているのを確かめるようにする。
なのでコードをみるのは週1~2くらいにして、普段はどのように実装しているのか聞くくらいでいいのかもしれません。
タスク習熟度を伸ばす
グローブさんは部下のタスク習熟度(TRM)に合わせて、マネジメント・スタイルを変えるべきと言っています。
タスク習熟度が低い場合には、明確に細かく指示を出し、タスク習熟度が高い場合は関与を最小限にします。部下のタスク習熟度が高いほど、マネージャーは時間を使わずに済むので、部下のタスク習熟度を伸ばすことはマネージャーの非常に大切な仕事です。
開発におけるタスク習熟度というのは開発能力のことだと思います。
グローブさんはタスク習熟度を伸ばすためには教育訓練が大事だと言います。
訓練とは、端的にいうならば、マネージャーとして遂行できる最高のてこ作用をもつ活動の一つである。
私は以下の2種類の訓練を適宜行うようにしています。
- 基礎訓練
- スポット訓練
基礎訓練
基礎訓練は、開発を行うなら大抵必要になるような知識の習得を目的とする訓練です。
例えば以下のようなものです。
- git、GitHubの使いかた
- 開発で使用する言語、フレームワークの基礎知識
スポット訓練
スポット訓練はモニタリングをしていく中でこの能力、知識が不足しているかな、と思ったときにスポット的に実施する訓練です。
例えば以下のようなものです。
- Javaのメソッド参照を知らないようだぞ。。
- git resetを知らないのかな?
- 開発で使われているフレームワークのxxxという概念が分かっていないようだ。。
訓練は準備にも多少時間を取られるので参考資料を示すだけのときも多いです。ただそれだけだと読んだかどうか分からないので良し悪しですね。
終わりに
正直、プレイヤーとして実力が0の私がチームのサポータ役になるのもおかしな話ですが、なんとかやっています。
ハイアウトプットマネジメントの内容は多分3%くらいしか理解できていないのですが、繰り返し読んで実践を重ねながら、チームを効果的に支援できるようになれたらなと思います。
Discussion