エンジニアリングをマネジメントする
エンジニアリングとは技術の知識やスキルを活用し、ユーザーのニーズを満たし、課題を解決するためのプロダクトを構築するための活動だと考える。エンジニアリングマネジメントとはこの活動においてユーザーに届く価値がより大きくなるように努めるマネジメント活動といえるだろう。
エンジニアリングの活動は広いため、どうしてもエンジニアリングマネジメントの役割や責任範囲も曖昧になる。ただし、自分の組織のエンジニアリングによるアウトプットが最大化するという点では共通するはずだ。
Andrew Groveによるとマネージャーのアウトプットは自分のチーム+周辺チームのアウトプットとしている。基本的にエンジニアリングマネージャーであれば自分の担当する組織・チームが存在するはずだ。よって、如何に自分のチームおよび周辺チームのアウトプットを大きくするかを考えればよい。
エンジニアリングマネジメントは複数のマネジメント領域で構成される
エンジニアリングは我々のソフトウェア活動そのものであり、その活動においていくつかのマネジメント領域が存在する。
- テクニカルマネジメント
- ピープルマネジメント
- プロジェクトマネジメント
- プロダクトマネジメント
上記の4つ以外にもあるかもしれないが、主要なのはこの辺りだろう。エンジニアリングマネージャー以外に、テックリードやプロジェクトマネージャー、プロダクトマネージャーがチームにいる場合その役割は分担できる。一方でチームや組織のサイズが小さく、各領域に専任のマネージャーがいない場合、エンジニアリングマネージャーが担当することが多いだろう。
もちろん、プロダクトマネージャーや、プロジェクトマネージャーが他のマネジメント領域を担うこともあると思うが、個人的な経験からするとエンジニアリングについて理解しているであろうエンジニアがエンジニアリングマネージャーとして他の領域も見ることが多い印象だ。
テクニカルマネジメントであれば、テックリードが不在の場合技術面におけるリードをエンジニアリングマネージャーが行なうこともあるだろう。いわゆるプレイングマネージャーと呼ばれる形になると思うが、Will LarsonのエレガントパズルではTLM(Tech Lead Manager)と呼ばれていた。 このようにエンジニアリングマネジメントにおいては責任範囲・担当領域が組織のフェーズや状況によって変わることが多い。