Yuichi Murata's Engineering Blog

グローバル・エンジニアリング・チームをつくる

技術的ゼネラリストがますます重要になる理由

開発組織のマネジメントについて議論していると「専門性人材が活躍できる職場づくり」「専門性人材のためのキャリアパス」といったフレーズを良く耳にする。『専門性人材=技術的』という無意識の仮定をおいてしまっていないだろうか。一昔前ならこの仮定は成り立っただろう。だが、今となっては小学校からプログラミング教育を実施するし、専門学校はたくさんある。転職市場には新卒教育で技術的スキルを身に着けた人材があふれている。もはやプログラミングやシステム開発の知識は専門的ではない。リテラシーとなりつつある。こうした背景の中で、『専門性人材=技術者』と仮定してしまうと技術者キャリアの本質を見落としてしまうのではないかと思う。 特に思うのが、技術的ゼネラリストの重要性である。ココの人材が組織に一人いるだけで組織が生み出すシステムの全体感がぐっと高まる。この記事では技術的ゼネラリストとその重要性について議論する。

開発組織人材の軸

技術的ゼネラリストは以下の軸で議論するとそのポジションが見えてくる。縦軸が組織に対する「貢献」の軸である。一方は技術的な貢献を主体とし、他方はマネジメント貢献を主体とする。横軸は貢献領域の幅である。一方は専門特化型のいわゆるスペシャリストで、他方は広く一般的に貢献するゼネラリストである。 それぞれの象限の人材を見ていこう。

f:id:yuichi1004:20201109203754p:plain
開発組織人材の軸

管理的スペシャリスト人材

ある特定領域のエンジニアリングチームを束ねる「エンジニアリングチームマネジャー」人材である。最もわかりやすい例が、エンジニアマネジャーの登竜門であるプレイングマネジャーである。まだまだ現場に片足を突っ込んでいて、しっかりと両手を汚してハンズオンしながらチームを率いる。 おそらく多くの開発組織のマネジャーはここからスタートするが、管理者としてこのポジションは限界がある。なぜなら、職位が上がるごとに必然的により広い範囲の組織を監督することになるからである。職位が高くなれば、必然的に見なければならない技術領域も広くなる。管理者として出世するには必然的にゼネラリストにならざるを得ない。

技術的スペシャリスト人材

技術者として働きながらなおかつ特定領域を徹底的に極めるポジションである。分かりやすい例を上げると機械学習を極めたデータサイエンティスト、Hadoop クラスターの構築運用を極めたデータ基盤エンジニア、ネットワーク機器管理に長けたネットワークエンジニア、データベースの運用とクエリーを最適化する DBA などである。極端な例を上げれば、今や絶滅危惧種となりつつある勘定系システムをメンテナンスする COBOL エンジニアなどもここに当たる。 この領域は技術者として花形である。何かを極めた者というのは、やはりかっこいい。世界的なコミュニティの中でも存在感があって、有名なオープンソースコミュニティで重要な貢献をしたり、大規模な技術会議で登壇したりする。必然的に周囲からの尊敬を集めるし、エンジニアのロールモデルになることも多い。メディアでの露出もあるし、こうした人材が転職をすると業界で必然的に話題になる。

管理的ゼネラリスト人材

管理的ゼネラリストは職位の高い管理者と考えて良いだろう。一番分かりやすい例は VPoE である。開発組織の管理者として最も重要な貢献をし、最も広い領域に責任を持つ。ちなみに CTO は VPoE に対しその貢献がより技術的になることを考えると、上の図の通りな位置づけになろうと思う。つまり貢献の軸としては技術と管理のちょうど中間である。その範囲は VPoE と同じく組織全域に及ぶ。

技術的ゼネラリスト人材

ここが本稿の本題である。技術的ゼネラリストは、技術的な貢献をしつつもその範囲が特定領域にとどまることなく全域に及ぶ人材のことである。極端な例として極稀に見かける、反則級に守備範囲の広いエンジニアを想像していただけると分かりやすいのではないかと思う。データベースエンジンの挙動を踏まえた上で、バックエンドシステムを設計できる。Typescript / Redux などの技術を踏まえて、複雑なフロントエンドをメンテナンス可能なアーキテクチャに落とす。フロントからバックエンドまでトータルであるべきユーザー体験を踏まえて全体設計に貢献する。障害が起きればネットワーク層から OS 層まで目を配り問題を特定する。 ここまで極端でないまでも、組織の中で広い範囲で技術を理解して全体を統合するような動きをするようなエンジニアがいないだろうか。その人こそ、ここで議論する技術的ゼネラリスト人材である。

なぜ技術的ゼネラリスト人材が重要なのか

アメリカの科学ジャーナリストであるデイビット・エプスタイン氏は、その著作「Range -- 知識の幅が最強の武器になる」において、フィードバックが曖昧でかつ遅れてやってくるような「意地悪な学習環境」においては専門的な知識よりも、幅広い知識を持ち合わせたゼネラリスト人材の方が問題を良く解決することを述べている。 20世紀以前は、技術は「親切な学習環境」だった。トランジスタの集積率は 18 ヶ月ごとに倍になり、性能もそれに合わせて倍増した。コンピューターもグラフィックボードも性能の向上に合わせて飛ぶように売れた。ビジネスは分かりきったベンチマークに従って盲目に性能競争に勤しめばよかった。20 世紀に入ると、イノベーション・ユーザー体験といった新たな価値に注目が集まるようになり、学習環境は急激に「意地悪」になった。何が流行るかも分からない。想像もしていないようなプロダクトと顧客が次々にできあがる。新たな価値観が作られると、昨日まで脚光を浴びていた企業には閑古鳥が鳴き、株式市場での価値はあっというまにひっくり返る。こうした状況の中でより幅の広い知識をもった技術者の方が、その知識と経験を活かして、より柔軟に物事を解決していくことは必然だろう。 技術が多様化するにつれ、それらに横串を指すことができる人材の重要性も増す。横串を指す人材がいないとシステムは途端にちぐはぐになる。使えない API 設計にフロントエンドエンジニアはうんざりするし、システム負荷を考えないフロントエンドからのリクエストにバックエンドエンジニアは頭を抱える。システムはトータルで設計したほうがうまくいく。ハードウェアからソフトウェアまで End-to-End で設計した Apple が成功したのは分かりやすい一例である。今日、顧客に支持される製品を作るには、あるべきユーザー体験を踏まえた上で、フロントエンドからバックエンドに向かってアーキテクチャ設計をしていく必要がある。 また、XaaS の台頭と共に、技術的スペシャリスト人材の必要性が多くの企業で必要なくなっていることも重要な観点である。今日ビッグデータを使って需要予測をするために Hadoop の専門家を雇う必要はなくなった。BigQuery を使って必要な分析をすればよい。簡単な機械学習はデータウェアハウスと統合されて、誰でもできるようになりつつある。無論 GAFA のような基盤そのものを作っている企業での価値は高まっているのだろう。だが、多くの「ビジネス」をしている企業ではこうした技術力をますますアウトソースで解決することが簡単になっている。

技術的ゼネラリストの価値認識が必要

技術者として、より幅を広く知識を学んで行く姿勢を意識していく必要があるのではないかと思う。昔は、特定領域を徹底的に極めることが美学であった。だが、市場も商品も不確実性を増していく中でより広い視野が技術者に求められる。自分の極めた技術領域が XaaS などのイノベーションによって置き換えられるリスクも常に認識しておかなければならない。 管理者としても、技術的ゼネラリストの価値認識が重要である。一口に技術者といっても、物事を「専門的に極めたい」人材と「より幅広く極めたい」人材はことなる。これを認識した上で組織のキャリアパスを用意し、アサインメントをしていかなければならない。特に、コミュニティで有名人になりやすい技術的スペシャリストに比べ、技術的ゼネラリストは地味である。それぞれの企業で決定的な役割を果たすものの、そうした人材は社外への露出が少ない。専門性の高い技術的な知識は会社を超えてコミュニーティの中で横展開しやすいが、ゼネラリストの幅広い技術課題解決に対する貢献はなかなか発表の場が限られるからである。だからこそ、腕利きの技術的ゼネラリストを見抜いて採用しなければならないし、そうした人材を評価し、会社に定着させるための努力を図らないといけないのである。