優れたプログラマに対しての、管理職への昇進以外のキャリアパス

あなたは、これからキャリアを切り拓こうとしている素晴らしいエンジニアたちを抱えています。チームは優れた成果を出して成長し続けているので、何らかの具体的な方法で賞賛したいと考えています。すぐに思いつくことは、特にエンジニアたちがそのチーム内ですでに事実上リーダーの役割を果たしている場合には、彼らにチーム内での役職を与えて昇進させることでしょう。でもその報酬は、本当にエンジニアたちが望んでいるものでしょうか? もしかしたら彼ら自身も、昇進は望むべきもの、と思い込んでいるだけではないでしょうか?

人材マネジメント力は別のスキル

エンジニアの世界では、エンジニアたちが技術面ではピークに達した後に、これまで習得したものとは全く別の、社交面だとかソフト面におけるスキルを学ぶよう求められることがよくあります。これらは、エンジニアたちが過去のキャリアではほとんど気にしていなかったものです。このようなスキルを身に着けるには数多くの試行錯誤が必要となります。しかも、エンジニアたちはほとんどの時間をこうしたスキルのために割かなければならなくなるので、賞賛された本来業務であるコーディングに費やす時間がなくなってしまいます。そしてある時突然、大好きだった仕事が嫌になり、自信や達成感が打ち消されてしまうのです。

ここで問題になるのは、人材マネジメント力と技術リーダーシップ力は別のスキルであるということです。元はといえば、あなたは優れたエンジニアは思想的リーダーとしての活躍も期待できるという賞賛を送ろうとしていました。つまり並外れたパフォーマーとして、他のメンバーが目指すお手本になることを期待していました。誰もがマネージャーになろうと努力しているわけではないですが、もしこうした目標となる人がいれば、他の皆もより高みを目指すようになるでしょう。また、あなたはこの報酬を通じて、コーディングやら他の社内雑務よりも管理業務の方がキャリアとしてはある意味「良い」、というメッセージを伝えたかったわけではないはずです。

技術リーダーシップ力とは

技術リーダーシップ力は、業務上の責任分担に基づいたいくつかの権限が組み合わさって構成されています。典型的なエンジニアの1日を想像してみましょう。数多くのことを決定し、課題に優先順位をつけ、解決策を探らなければなりません。こういった活動は、エンジニアの業務における楽しい部分です。実際どんなエンジニアでもある程度の技術リーダーシップ力を発揮しています。

作成したプログラムがうまく動くかどうか、という問題に対応し続ける業務もあります。バグを見つけ出し、修正しなければなりません。ドキュメントを作成し、コードをレビューし、コストを見積らなければなりません。多くの場合、会社に長く在籍しているエンジニアほど、業務を終わらせるために必要な、何からも干渉されない1人きりの自由な数時間を確保するのが難しくなります。ここがエンジニア業務の中でも最も辛い部分です。

楽しい仕事というものはいつも、何とか確保したこうした集中できる時にできるものです。このような何からも邪魔されないような時間とは、そのエンジニアがいなくてもだれの仕事も滞らない時にしか手にいれられません。イノベーションとは、課題全体を改めて検討できる十分な時間がある時に生まれます。こうした時間のほとんどは、その課題を研究し熟考を重ねるといった膨大な「準備時間」に費やされます。このような時間とは、内向的な人にとっては静かな時間を指すでしょうし、外交的な人にとっては一緒に良い成果を生み出せる人たちと集中して部屋にこもる時間を意味するでしょう。

では、ここからどんな考察が得られるでしょうか。なぜひときわ優れたエンジニアには楽しい仕事をする時間が少なくなり、まだそんなに認められていないエンジニアが楽しい部分を担当できるのでしょうか。これはエンパワーメントのあり方、すなわちエンジニアが「ノー」と言えるかどうか、という点にかかっています。これは勇気があるかどうかではなく、エンパワーメントがうまく機能しているかという問題です。多くの優秀なエンジニアは問題を未解決のまま放置しておくことができません。製品やサービスに対して責任を感じてしまうと、結局そのプロジェクトにずっと縛りつけられたままになってしまいます。自分が関わったプロジェクトに対して生涯責任を感じてしまうというのは、エンジニアにはよくあることです。そしてこの自責の念は、チーム全体で対応せずに自分1人で情報を抱え込んで「周囲が見えなくなる」傾向によって一層悪化します。

技術リーダーをエンパワーメントする方法

プロジェクトが大きくなるにつれて、技術リーダーの下には自然にチームメンバが増えていくかもしれませんが、ある日突然技術リーダーは単なる管理職に変わってしまいます。これが最大のリスクです。技術リーダーの成長を促すには、早い段階から何度も機会を与えて期待をかけていくべきです。その際に、もし管理職にならなければ、あまり尊敬されなくなるだろうなどとは匂わせずに、本人の最終的な目標を明確にするように促します。例えばそれは可能な限り最高のプログラマになることであったり、1千万のユーザを想定したシステムを作ることであったり、オペレーティングシステムのプロセスの深部を理解することであったりします。そうした目標を達成できるように支援することこそが、すべての人々に対して報いることになるのです。

このような技術的な目標であれば、エンジニアにとっては達成しやすくなります。会社が発展するにつれ、「面白い」プロジェクトが増えます。こうした、エンジニアとして学び成長できるようなプロジェクトを担当させることが報酬となる機会が多くなるでしょう。役割を果たすためには多くのことを学ばなければならないと分かると、その人にとって役割は、やりがいのある望ましいものになります。また、専門的な能力開発ができる機会を社外に求めることも大切です。エンジニアに対して、例えばカンファレンスでトークセッションに参加するように促したり、専門分野における思想的なリーダーとなるように励ましたりすることです。ほとんどのエンジニアが、自分をプロフェッショナルとして高める具体的なプランを持っていません。ですからエンジニアたちは、そのような有益な場に参加することで、自分の業績を称えるにはどうしたらよいかというヒントを得ることができます。これは昇給やボーナスを考慮する場合にも役立つでしょう。さらにエンジニアリング部門の評価が全般的に高まるでしょうし、結果的に才能ある人材をさらに引き寄せることになります。中上級レベルのエンジニアが「この組織で働きたい」と思う最大の理由は、リクルートされることではなく、興味がかきたてられるような話をする人との出会いです。あなたの組織にいる技術面における思想的リーダーを、技術面における思想的リーダーとして活用できるような方策を進めることこそがエンパワーメントであり、エンジニア自身の成長につながるのです。

「ノー」と言える能力は、技術リーダーに必要な第2の要素です。引き継ぎに関する戦略を練りましょう。自分の生み出したイノベーションにイノベーターをずっと繋ぎ止めないようにするためです。クリエイターに創造し続けるよう促すのです。初級の開発者は、ちょっとした創造を引き継ぐ相手としては最適です。自らアイデアを思いつくという成功事例を実際に体験して理解することはできなくても、プロジェクトの責任者としてのセンスを磨く訓練になります。引き継ぐことで、引き継ぐ側にも引き継がれる側にも新たな機会が生まれるのです。時間的な余裕のある人にも責任を負う人にも、どちらにも機会が生まれます。やる気の配分を上手に調整するわけですが、責任を負う人に対しては期待がかかっているということを確認しましょう。それが本人のキャリアにどんな意味があるかを率直に伝え、プロジェクトに助力してもらえるように方策を立てます。

これまでお伝えしたアイデアは、Simpleの立ち上げを手伝っている時に思いついたものです。エンジニアを明らかに間違った方向に進ませたりせずに、本当に望んでいることをかなえることでその才能に報いようとする考えです。技術リーダーに機会を与える戦略を考える上で援助が必要でしたら、私にEメールを送ってください。私はコンサルタントですがエンジニアでもあるので、エンジニアが満足しつつ生産性を維持するにはどうしたらいいかについて見解をお話しできます。