
豆寄席第35回『上級技術専門職に求められる役割、考え方、スキル ~スタッフエンジニアの道~』参加レポート
本稿は、豆寄席第35回の開催報告です。
開催概要
タイトル | 上級技術専門職に求められる役割、考え方、スキル ~スタッフエンジニアの道~ |
講演者 | えにしテック 代表取締役 / 一般社団法人日本Rubyの会 理事 島田浩二氏 |
開催日時 | 2024年8月26日 (月) 18時30分~20時00分 |
講演概要 |
8/26に発売となる書籍『スタッフエンジニアの道』(オライリージャパン)は、技術専門職としてのキャリア成長に必要な考え方やスキルを解説した書籍です。 多くの研究や文献が存在するマネジメント職と異なり、技術専門職のキャリアを進める際に参照できる情報はまだまだ多くありません。 本セッションは、同書の内容を紹介しながら、上級技術専門職に求められる考え方やスキルを、参加者の方々と一緒に考える時間にできればと思います。 |
講演の流れ
この講演は2024年8月26日に出版された『スタッフエンジニアの道』の翻訳者である島田氏にご登壇いただき、下記の流れでお話しいただきました。
- 「スタッフエンジニアの道」について
- スタッフエンジニアの役割を支える3本柱
- 技術専門職のキャリアパス
- 技術的な知識と経験
「スタッフエンジニアの道」について
はじめに、『スタッフエンジニアの道』とスタッフエンジニアのキャリアパスについてお話いただきました。
スタッフエンジニアとは
「スタッフエンジニア」とは、軍事用語「Line and Staff」に由来しています。
日本語で通常使う際の、事務方や業務のサポート役というニュアンスとはかなり異なる意味なので注意が必要です。
Line:現場将兵で、命令系統に属し業務の遂行に直接関わる役割
Staff:参謀で、命令系統から独立し、専門家の立場からLineを補佐する役割
すなわち、スタッフエンジニアとは、命令系統から独立して技術の専門家として組織を補佐する役割を持ったエンジニアです。そして、一般的にはシニアエンジニアよりも上位の階級にある技術専門職に期待される役割でもあります。さらに、具体的な組織との区別を明確にするため、同様の役割を担う上級技術専門職をまとめて「スタッフ+(スタッフプラス)」という総称で呼ばれることも増えてきています。
道とは
書籍のタイトルである『スタッフエンジニアの道』において、私たち自身のキャリアの「道」を意味しています。ソフトウェアエンジニアとしてキャリアをスタートさせると、マネジメントと技術専門職という二つの「道」が存在します。マネジメントのキャリアは比較的想像しやすく、舗装された道のように進むべき方向が明確です。一方で、技術専門職としてのキャリアは未知の部分が多く、舗装されていない道のように予測が難しいものです。

『スタッフエンジニアの道』
技術専門職としてのキャリアパスと合わせて「Individual Contributors(IC)」という概念が使われ始めました。これは、部下を持たずに技術的な役割で組織に貢献するキャリアパスとして広まりつつあります。日本語圏では「個人貢献者」と訳されているため、技術のみを追求すれば良いという誤解を招くこともあります。しかし、技術専門職であってもキャリアアップを図り、より大きな価値やインパクトのある仕事をするためには、幅広い範囲での調整、交渉、合意形成が必要です。また、組織的な動きや技術的なリーダーシップも不可欠なのです。
技術専門職としてキャリアを歩んでいくには、どのように進めば良いのでしょうか?そこで参考になるのが『スタッフエンジニアの道』です。『スタッフエンジニアの道』は、長いキャリアを持ち、現役の上級技術専門職である著者Tanya Reillyが、自身の経験やコミュニティの知見を整理して書かれた一冊です。この書籍では、優れた上級技術専門職になるための道をガイドしています。具体的には、上級技術専門職としてスタッフエンジニアの役割を果たす際に求められる考え方やスキルについて、詳しく解説されています。
スタッフエンジニアを支える3本柱
ここでは、スタッフエンジニアの役割を支える3つの柱と各柱の内容を一部抜粋して紹介していただきました。

スタッフエンジニアがインパクトや影響力のある仕事をしていくためには、以下の3つの柱が重要です。
大局的な思考:大局的な視点で物事を見る
実行力:物事を進めて成功する実行する力
レベルアップ:組織をレベルアップしていく
書籍『スタッフエンジニアの道』も、この3つの柱に合わせて構成されています。本講演でお話しいただいた内容を太字で示しています。
1部:大局的な思考
・自分の役割、スコープ、重要事項を理解する(1章 では、具体的に君はここで何を?)
・自分たちの取り組みや組織、ビジネスを俯瞰的に見て理解する(2章 3つの地図)
・技術的なビジョンや戦略を描いて組織を方向付ける(3章 全体像を描く)
2部:実行力
・自分の時間の使い方を学ぶ(4章 限りある時間)
・大規模なプロジェクトをリードする(5章 大規模プロジェクトをリードする)
・停滞しているプロジェクトを処置する(6章 なぜ止まってしまったか?)
3部:レベルアップ
・ロールモデルになる(7章 今はあなたがロールモデル(お気の毒さまながら))
・良い影響力を広げる(8章 良い影響力を広げる)
・自分自身をレベルアップする(9章 この先は?)
大局的な思考:大局的な視野で物事を見る
局所最適と全体最適
いずれも機能要件を満たしている場合、チームとしての視点ではソフトウェアAが選択されることがよくあります。

しかし、広いコンテキストで見ると、ソフトウェアAはチームでの開発が容易である一方で、他部門への負担やコーポレートITのコストがかかるため、組織全体としてはソフトウェアBの方が最適であることがわかります。

- ロケーターマップ
ロケーターマップとは、全体の中で自分たちの取り組みや状況がどのように見えるかを俯瞰的に把握するための考え方です。自分たちにとっては非常に重要な取り組みであっても、プロジェクト全体の視点から見ると、それが小さな部分に過ぎない場合もあります。そのため、自分たちの取り組みが、周囲や他のプロジェクトメンバーからどのように見られているかを意識して考えることが重要です。 - トポグラフィックマップ
トポグラフィックマップとは、組織内の文化やグループ間の関係、公式・非公式の意思決定の経路などを把握し、視覚化するためのアプローチです。組織をうまく扱うためのスキルは「政治」とも言われ、エンジニアからは敬遠されがちです。しかし、自分の組織がどのように動いているかを理解していないと、どんな変革や取り組みも非常に困難になります。そのため、自分たちの組織の文化を視覚化し(例としてスライダー図を使用)、物事を円滑に進めるために問題がある部分に「橋をかける」行動が求められます。 - トレジャーマップ
組織全体がどこに行こうとしているのか、なぜ行きたいのか、そしてどのように進んでいくのかを理解することが大切です。技術の選択や投資は、多くの場合、何かしらの道筋を進むために避けられないものです。しかし、最も重要なのは、その過程で真の目的を忘れないことです。
実行力:物事を進めて成功する実行する力
実行力の必要性
リーダーシップにおける2つの特性
- リーダーは物事がどうあるべきかという点について、かなり詳細に理解している人物である。そのため、現状と理想の間の差を見極め、そのギャップを埋めるために必要な積極的かつ整然とした行動を特定する能力を持つ
- リーダーは上記のギャップから目を離さず、実際にそれを埋めるための行動をとる
(『STAFF ENGINEER』 第2章スタッフエンジニアの役割より引用
大規模なプロジェクトをリードする(5章 大規模プロジェクトをリードする)
物事を動かしていくために大事な態度
「誰かがなんとかしないといけない」と感じるときにその誰かが自分であると考えるプロジェクトを動かしていくために必要なことは(いざとなったら)何でもやる
スタッフエンジニアがすべきなのは、全体に目を向けて進行に必要なことがあったなら、すべてを自分が実行する姿勢(ラストマンシップ)が求められます。島田氏がラストマンシップを実施した事例
島田氏は、以前参加したとあるプロジェクトにおいて、以下の役割を担当しました。
ソリューション全体のグランドデザイン
アーキテクチャ設計(論理、物理、配置)を担当
新規に開発が必要になったアプリケーション群やAPI等のデザインドキュメントや技術策定
開発チームのオンボーディング
プロジェクトで採用になった技術要素についてプロジェクトに則した形でのチュートリアルを準備し、ワークショップを実施
開発環境の伴走
開発環境の環境構築手順作成
CIの構築
インフラの構築
開発や運用のサポート(適宜)
上記の内容は、メンバーから要望が出たわけではありませんが、島田氏がその必要性を感じて自ら行ったものです。この経験から、『スタッフエンジニアの道』の5章「大規模なプロジェクトをリードする」という内容に非常に共感できたそうです。大規模プロジェクトでは、あらかじめ役割を決めることが難しい場合があります。そのため、適時に役割を果たしていく必要があります。そして、適切な相手に仕事を委譲することが重要です。委譲できないものについては、自ら対処する必要があります。
レベルアップ:組織をレベルアップしていく組織をレベルアップしていくために、エンジニアリング文化の向上やエンジニアリング力を高める取り組みを行っています。具体的には、組織としてメッセージを発信したり、基準やルールを定めたり、エンジニアの福利厚生を充実させることに努めています。しかしながら、これらの施策が思うような成果に繋がらないことが多いです。
ロールモデルになる(7章 今はあなたがロールモデル(お気の毒さまながら))
価値観は行動に従う
“たとえ組織がコラボレーションやチームワークを推奨していると主張しても、「英雄的な」単独の努力によってそのレベルに到達しているスタッフエンジニアがいるなら、そのメッセージは損なわれる。エンジニアリングの原則に、徹底したコードレビューの文化記されていても、シニアエンジニアが確認せずにプルリクエストを承認していれば、他の全員もコードレビューを形式的に行うようになる。あなたが行う仕事は、暗黙のうちに、他の人が正しいと思って模倣する仕事の種類と標準となる。あなたが成熟していて、建設的で、責任を持っているのなら、それがシニアエンジニアの振る舞いだと新人に示していることになる。もしもあなたが傲慢な態度をとったり、厳しすぎて何にも満足しなかったり、誰に対しても時間を作らなかったりする場合、それもまたシニアエンジニアの振る舞いとして受け取られる。あなたの振る舞いが、会社を日々形作っている。“『スタッフエンジニアの道』より引用
行動で示す
・目的を忘れない → 大局的な思考
・責任ある行動をとる → 実行
・先を見据える → 重要だけれど緊急ではない仕事に取り組むエンジニアリング組織やプロジェクトが抱える仕事は、重要度と緊急性によって4つに分類されます。緊急性が高い仕事は、重要度に関わらず優先されることが多いため、重要度が高くても緊急性が低い仕事が疎かになりがちです。
重要だけれど緊急ではない仕事
現状なにかしらの手段で実現できてしまっているが、もっと良いやり方がある/いずれ問題となるものです。講演の中では以下の例を挙げていました。
・手動デプロイで運用を開始してしまった後でのデプロイの自動化
・自動テストなしでリリースしてしまった後での自動テストの作成
・昨日は満たしているけれど、運用する中でより良いモジュール分解点が分かってきたコードの整理
・運用の続けていく中で最新の状況と一致しなくなってきたドキュメント群の整理エンジニア組織あるいはエンジニアからみて重要だが、ビジネスの人たちが緊急性が無いとみなしたり、あるいは重要度の判断ができないものを上級のエンジニアがしっかりと拾って重要性を訴えていくことは、より良いエンジニア文化を作っていくために必要です。
技術専門職のキャリアパス
ここでは、ソフトウェア開発者としてのキャリアパスについてお話していただきました。
本講演で紹介したスタッフエンジニアリングを実践することが、上級技術専門職のすべてではありません。しかし、技術専門職として組織内で上に進んでいく際には、どのようなキャリアパスであっても、組織に対する視点や態度において、講演の内容は参考になるとおしゃっていました。
私たち自身のキャリアの道には2つの選択肢があります。一般的には、どちらか一方を選択すると、もう一方の道は全く異なるものだと考えられがちです。しかし、リーダーシップや組織への取り組み方においては、共通する部分があります(下図の点線部分)。そのため、片方の道を選択したとしても、もう一方の道が完全に選択できなくなるわけではありません。
『スタッフエンジニアの道』では、より良い働き方や自分自身の進みたいキャリアを明らかにするために、スタッフエンジニアとマネジメントの両方を経験することを提案しています。上級技術専門職のキャリアについての書籍は多くありませんが、マネジメントに関する書籍も参考にしながら、自身のキャリアパスを考えることを推奨しています。

技術的な知識と経験
最後に、3つの柱の基礎となる技術的な知識と経験の部分ついて、島田氏がその源泉についてお話していただきました。
「会社、チーム、自分自身」フレームワーク
“私は近頃、意思決定を導くマントラのようなものを持つようになった。それは、以下の順番で物事に対処するというものだ。
まず、会社のために正しいことをする。
次に、チームのために正しいことをする。
最後に、自分のために正しいことをする。“
『エレガントパズル』4章 マネジメントの哲学より引用
「会社、チーム、自分自身」フレームワークが抱える問題
“マネージャーとしての経験を積むにつれて、このフレームワークをあまり使わなくなった。考え方としては良いものだと今でも信じているし、この進展がなくて失敗するマネージャーも多く見てきた。しかし、このアドバイスに忠実に従いすぎてしまった結果、燃え尽きてしまった優れたリーダーの姿も見てきた。影響力を発揮することと、やる気を維持することのいずれかが欠けても、長期的なキャリアは成り立たない。”
“概念的には正しいモデルであっても、それに厳格に従うと、優先順位は正しくても、前進するエネルギーが足りなないチームになってしまうことがよくある。ときに完璧に正しい優先順位よりも、自分自身とチームのやる気を出す仕事を優先させることは、合理的であるだけでなく、より大きな目標の達成を引き出すオープンなリーダーシップの秘訣なのだ”
『Engineering Executive’s Primer』9.Managing Your Priorities and Energyより引用
燃え尽きないように自分のエネルギーの源泉を大事にする
“すなわち、情熱とは君のクリエイティブなエネルギーの1番の源だ。君がアーティスト、ミュージシャン、プログラマ、ライター、その他、職人的な人間なら、君が君の仕事をする上で獲得し、消費するエネルギーの基本単位が情熱だ。そして、情熱というのは再生可能なエネルギーだけれども、再生するまでに時間がかかるから、賢く使わなきゃならないと僕は思っている”
『情熱プログラマー ソフトウェア開発者の幸せな生き方』より引用
『スタッフエンジニアの道』においても、それぞれの柱ごとに上記に通ずる内容が述べられています。
大局的な思考:自分の役割、スコープ、重要事項を理解する(1章 では、具体的に君はここで何を?)
実行力:自分の時間の使い方を学ぶ(4章 限りある時間)
レベルアップ:自分自身をレベルアップする(9章 この先は?)
最後に、ソフトウェアエンジニアとして「影響力を発揮することと自分のエネルギーを維持することのバランスをとりながら技術の専門家としてキャリアを築いていこう」と島田氏は締めくくっていました。
所感
技術専門職がキャリアアップするために必要な能力には、リーダーシップや組織、人との交渉・対話など、マネジメントと共通する要素が多く含まれていることがわかりました。また、『スタッフエンジニアの道』に関する内容についても、聴講者の皆様から多くの共感やリアクションが寄せられており、エンジニアの皆さんが関心を持っていることが強く伝わってきました。
今後の 豆寄席 へのご参加もお待ちしております!