これはTECHSCORE Advent Calendar 2018の17日目の記事です。
こんにちは、伊藤です。
現在、私は、シナジーマーケティング株式会社のCTOをやらせていただいています。また、一方で、ヤフー株式会社の開発部長の役割も兼任しています。
先日、ギルドワークス株式会社の中村 洋さんと対談させていただきました。
「アジャイル開発」から本当に価値を生みだすために組織がやるべきこと――スクラムを実践するエンジニアとアジャイルコーチが経験から導く処方箋
対談では、主に、アジャイルを現場に導入していくという観点でお話をさせていただいたのですが、もうちょっと間口の広い話として、エンジニアの組織を作る上でのマネージャーの役割とは何か、みたいなところの自分の考えをどこかで整理しておきたいなと考えていました。
私自身のキャリアを振り返ると、いつのまにか、エンジニアとして働くよりも、エンジニア組織のマネージャーの役割を担うという経験の方が長くなってきました。良きエンジニアになるためには、という文章と比べると、エンジニアの良きマネージャーとなるには、という文章は少ないなと感じています。あるいは、エンジニアとしてマネージャーをどう支援するか、という文章はさらに少ないのではと思います。
というわけで、その辺りについて、思うところ、考えるところを書きます。これからエンジニア組織のマネージャーとしてのキャリアを踏み出す人や、いまいち自分のところのマネージャーの考えていることがわからないエンジニアに、少しでも参考になればと思います。
※ もちろん、こういうことに唯一絶対の正解はないので、あくまで一個人の意見として、必要あれば参考にするくらいの程度で読んでいただければ幸いです。
エンジニア自身やチームにとってマネージャーは重要
組織の中で生きるエンジニアにとって、自分が所属する組織のマネージャーやリーダーといった人がどれだけのパフォーマンスを発揮できるのかは、エンジニアライフのQoLにとって非常に重要です。
Googleの社内調査でも「優れたマネージャーは極めて重要だよ」という帰結になっています。
https://rework.withgoogle.com/jp/subjects/managers/
逆に、もし、自分が属するチームのマネージャーが組織内でうまく信頼を獲得できていない場合、必要なリソースが入手できなかったり、ひどいケースでは、突然プロジェクトが止まっちゃったりするわけです。
というわけで、チームのマネージャーが良好なパフォーマンスを出すことはチームにとって非常に大事です。優れたマネージメントの影響下で仕事をしたことのあるエンジニアは、その恩恵の大きさを体感した人が多いでしょう。
となると、自分のところのマネージャーには最大限の能力を発揮してもらわないといけないのですが、マネージャーの仕事の難易度というのは、メンバーからどれだけサポートを受けているかで大きく上下します。マネージャーからの依頼や提案は基本的に真剣に受け取って検討・実行してくれるメンバーで構成されたチームと、マネージャーの話は基本的に聞かないしほっとくとメンバーの半数以上が始業時間に会社に来ないチームとでは、同じマネージャーといってもその難易度は大きく違うのです。
ですので、エンジニア組織のマネージャーにとって、メンバーのエンジニアとの協力関係を築くのはとても重要なことですし、逆に言えば、エンジニアにとっても、自分のマネージャーに対して支援していく姿勢をもつというのは、そのエンジニア自身にとっても重要です。
マネージャーの役割
エンジニア組織のマネージャーの成果は、その組織が出す成果そのものです。チームの成果を最大限に引き出すのが、マネージャーの役割です。そのために、マネージャーには諸々の権限や責任が与えられています。
マネージャーは「管理職」と訳されることもありますが、個人的には、この日本語における「管理」という言葉が別のニュアンスを含んでいる気がします。「管理」を和英辞典でひくとmanagementの他にcontrolという言葉が出てきますが、エンジニアのマネージャーに求められる役割は、コントロールというよりはマネージメントで、これの適切な訳は、「経営」とか「運営」にあたるのではないかと。
マネージャーは、与えられた資源・権限を用いて、チームの成果を最大化するべく働きます。色々と個別にやるべきことは多いですが、結局それらはなんのためにやっているのかといえば、チームの成果を最大化するというマネージャーの果たすべき役割を実現するためでしょう。
そして、エンジニアチームの成果を引き出すのに、絶対に忘れてはならないことがあります。
それは、エンジニアは知的労働者であるということです。
知的労働者は、自身の精神状態が仕事のパフォーマンスにとても大きな影響を与えます。
モチベーションが非常に高い状態で仕事に臨めば、普段よりも大きなパフォーマンスが期待できます。
チームメンバーのモチベーション
しかし、残念ながら、誰かのモチベーションを外部から上げるということは、とても難しいということも実感しています。世界は広いので、ひょっとすると、他人のモチベーションを自由自在に上げる方法を知っている人というのがいるのかもしれませんが、私自身にはそのような方法は全く見当がつきません。
ただし、外部から他人のモチベーションを下げるのは、わりと簡単です。いろんな方法があるでしょうが、対エンジニアで考えると、以下の方法が効果的です。
- 意義を感じられない作業をやらせる。
- 作業の邪魔をする。
やる意味がわからない仕事をさせ、しかも、その仕事には多大な邪魔や困難が発生する、という状況でモチベーションを維持できる人は、私の知る限りではほぼいません。逆に言えば、渡す仕事の意義を伝え、その仕事が円滑に進むように支援することが重要です。
外部からモチベーションを上げるのは難しいが下げることは簡単、ということから考えると、エンジニアのマネージャーがエンジニアのモチベーションに対して真っ先に考えるべきことは、エンジニアのモチベーションを折らないことです。初めてマネージャーの役割を担うことになった人は、まずはこのことだけに注意を集中させてみてもいいかもとすら思います。
外部からの直接介入について
エンジニアやチームの仕事が円滑に進むようにするために、マネージャーはチーム外からの要求・要望に対応する必要があります。チームメンバーは、チームの置かれている状況や、自分たちへの期待等を知る必要がありますが、それらの情報のうちの主要なものはマネージャーから伝えられるのが理想的です。
基本的に、マネージャーを飛び越えて直接メンバーに指示や要望が飛んでくるという状況は、チームにとっては良い状態とは言えません。そういう指示は、現場の細かな状況を踏まえているわけではないので、効率を落としたり、モチベーションを低下させたりしがちです。
しかし、一方で、そのような弊害の可能性を知っていても、マネージャーを飛び越えて何かを言わねばと思うことはちょくちょくあります。
なぜ、「マネージャーを飛び越えて何かをエンジニアに直接言わねばならない」と周囲に思わせる事態が発生するのか。色々と個別の事情はありますが、多くのケースでは「不安・不信」が原因となっています。
「このままこのマネージャーに任せてほっとくとまずいんじゃないか」
「このマネージャーは、勝手に無茶苦茶に進めているんじゃないか」
みたいな感情や判断が、そのような声を招くのです。
では、そのような不安や不信を抱かせないようにするためにマネージャーはどうしたら良いか。
- 求められる成果を出していること
- メンバーとチームに影響を与えられること
- 適切な報告がなされていること
要は、ちゃんとチームで成果が出ていて、マネージャーに要望を言っておけばちゃんとチームで取り組んでくれて、必要な情報がマネージャーから正確に報告されている、という状態であれば、普通は、いちいちマネージャーを飛び越えて直接メンバーに何かを言おうという気にはならないわけです。
逆にいうと、イマイチ成果が出ておらず、マネージャーに改善依頼をしてもチームメンバーにちゃんと伝えて手を打っているようにも見えず、おまけに、今、チームで何が起きているのかも教えてくれない、というマネージャーがいたら、そのマネージャーに何か言うより現場のエンジニアと直接話をしなきゃ、と普通は考えます。
この観点からも、マネージャーが外から見てもちゃんと機能しているのか、というのは重要です。逆にいえば、エンジニアは自身の環境を守るためにも、外部への説明に必要な情報をマネージャーに適宜渡して、チーム外とのコミュニケーションを円滑に進めてもらうことが重要です。
まとめ
エンジニアのマネージャーの役割を果たすには、これ以外にもエンジニアとどうコミュニケーション取るのかとか、エンジニアのキャリアや仕事をどう支援するのかとか、色々な話題があります。ただ、それらすべてを書こうとすると膨大な量になりますし、すべてを最初からカバーするのも難しいので、まずは重要だと思う点について書かせていただきました。
現場のプロとしてのエンジニアから、エンジニアチームのマネージャーとしてのキャリアを歩み出す人は結構いるはずですので、そういう人たちに向けて、自分がこれまで経験し考えてきたことが多少なりとも参考になればと願います。