Staff EngineerとSenior Engineerの違いを知る「Staff Engineer」

今年読んだ本は今年のうちにレビューしてしまおう、の第二弾「Staff Engineer」です。

Staff Engineer

すこし前にTwitter界隈でIndividual Contributor(以下、IC)の話が話題になってましたが、そのICとしてのキャリアの先にある、日本ではあまり馴染みのないStaff Engineerについての本です。ちなみに本の内容は全て https://staffeng.com/ でも読むことができますので、紙が不要な人はこちらからどうぞ。

Staff Engineerは、会社ごとに、またおそらく部署ごとでも様々なバラエティのある役割の定義があり、この本は著者での経験に基づく記述と、各社のいろいろなStaff Engineerの人たちからのインタビューから構成されています。 著者の経験によると、Staff Engineerの典型例として、一つ、もしくは複数のチームをリードするTech Lead, 特定領域のアーキテクチャに責任を持つArchitect, 複雑で難易度の高い問題解決を担うSolver, シニアリーダー(経営層)のビジョンを実現するためのRight Handの4つが紹介されています(Staff archetypes)。その他、Staff Engineerとしてどのように活躍するか、Staff Engineerになるためにはどうすればよいか、Staff Engineerになるために転職する方法などについて記述されています。

個人的にもっとも興味深かったところはSenior EngineerとStaff Engineerの違いです。

多くの会社では、"Career level"という概念があります。これは、多くの人が到達する上限で、ほとんどの会社ではStaff engineerの下に位置するSenior Engineerとされています。つまり、Staff engineerになることは平均的なことではない、とされています(Getting the title where you are)。具体的には、Senior Engineerに期待されていたこと、例えば、コードを書くなどは、Staff Engineerには付属的なタスクとなります(What do Staff engineers actually do?)。 このあたりの話は、ICの役割をあくまでも手を動かすこと、と捉えていると期待値のギャップに繋がっていきそうです。

実際にCircle CIのCompetency Matricを見てみるとStaff Engineerの"Delivery / Self-organization / Reliability, delivery accountability"の項目では

Ensures expectations with their team and external stakeholders are clarified between all parties involved.

というような外部ステークホルダーの期待値の明確化が含まれています。このシート全体を"stakeholder"を検索すると、15箇所中13箇所がStaff Engineer以上に含まれており、チーム外とのコミュニケーションや期待値マネジメントが各所に入ってきています。

ここ最近では徐々にICのままでもキャリアを進められるように環境が整備されてきていると思いますが、その際にはStaff Engineerに求められる役割はなにか、という理解が世の中的にも浸透していくと、エンジニアとしても経営としても見通しが立てやすくなるんじゃないかと思います。