2017年やっていき

社会人3年目もそろそろ終わりに近づいてきたのけれども、もう少しIndividual Contributorとしてやっていきたい。

People ManagerとIndividual Contributor

2016年の半ばぐらいから「draftcode君もそろそろ昇進考えたいし、君はPeople ManagerとIndividual Contributorのどっちに進みたいの?」ということをマネージャーからされるようになった。エンジニアのキャリアパスとしてPeople ManagerとIndividual Contributorの二極があり、前者は文字通り人間のマネージャーになるパスで、後者は一個人としてやっていくというパスになる。

People Manager、とくにエンジニアをマネージするEngineering Managerというのがどういう役割なのかというと、自分の理解している範囲では自分のレポートのキャリアパス(つまりマネージャーにとってレポートの昇進は手柄になる)とチーム全体のアウトプットに責任を持つ役割ということになる。会社というのは、どうやら「会社全体の目標はこういうものです」から演繹していき、「それを達成するために今年はこれをやります」「会社の全体の目標に沿って、このプロダクトではこれをやります」「プロダクトの目標に沿って、このチームではこれをやります」というふうにだんだんレポートラインを下っていくに従って、より目標が具体化していくようにできている。こういう上から降ってくる目標をうまく咀嚼し、実行可能なアクションに変換して、レポートをうまく使ってそれを達成する、というのがマネージャーの「チーム全体のアウトプットに責任をもつ」に対する具体的な責務になる。チームやプロダクトによっては、レポートライン上にあるマネージャーが全部をやることはできないので、Product Managerが目標の咀嚼と変換の部分を担ったりする。(しかしProduct ManagerがSWEのレポートを持つことはない。というのもProduct ManagerはSWEのキャリアパスに責任を持つ立場にないので。)また、Project Managerというのはプロジェクトの進捗などを管理していく立場という風に理解している。つまりEngineering ManagerをSWEのキャリアパスの管理、目標の咀嚼とプロジェクトへの変換、プロジェクトの進行管理・遂行という3つの責務に分割するとすれば、Product Managerは目標の咀嚼とプロジェクトへの変換に特化した、Project Managerはプロジェクトの進行管理・遂行に特化した仕事ということになる。

Individual Contributorというのは、マネージャーが定めた目標を末端として実際に実装していく立場になる。というと、なんか上から言われたことをやるだけの立場に見えるけれども、マネージャーはそのエンジニアがどれぐらいできるエンジニアかによって、目標の具体度を変える。つまり、新米のエンジニアには具体的に何をやるかをお膳立てしたりするけれども、シニアなエンジニアに対しては「これっぽいことをやりたいんだけど、どうすればいいかわからないから、うまく問題定義してシステムまで作ってよ」みたいな超ゆるふわな目標が与えられたりする。そういった目標の場合、当然一人で全部できないので、部分問題に分割して、それをマネージャーと相談したりして他のチームメイトにやってもらったり、他のチームと相談してそっちにやってもらったりする。つまり、シニアなエンジニアはフォーマルにレポートを持つわけではないけど、他のエンジニアやチームにインパクトがあるようなプロジェクトを計画・実行できる(=リーダーシップがとれる)ということになる。もちろん、ICは自分からこういうプロジェクトをやりたい、やったほうがいいというのを計画して、それを実行することもできる。すごくすごいエンジニアは、そういう「こういうことをやったほうがいい」みたいなプロジェクトが、会社全体にインパクトを与えたりする。

実際はこのPeople ManagerとIndividual Contributorどちらかに極振りすることはなくて、新米を除くほとんどの人はこのスペクトラムのどこかに位置することになる。例えばマネージャーであっても自分でデザインドキュメントを書いて、実装したりする。フォーマルにはレポートを持った時点からPeople Managerなのだけれども、かと言ってそれにより完全にICとしての仕事をしなくなるわけではないので、スペクトラムとして捉えている。いわゆるTech Leadというのはこの中間層あたりを指していると思っていて、フォーマルにレポートを持つTLもいれば、別にレポートを持たないTLもいる。チームによってTLがどういう役割なのかは異なる。

自分のICとしてやっていくとは

今のところ自分は社会に出て3年目ということなので、別に他人のキャリアパスについてあーだこーだ言えるようなキャリアも積んでいないので、今のところマネージャー側に振るという選択肢はないかなぁと思っていて、じゃあICとしてやっていくということになる。

一口にICといってもいろいろなタイプが考えられて、例えば一分野に特化した人もいれば、とにかく早くプロジェクトを完遂させる人もいる。じゃあ自分はどういうタイプになるのかなぁと考えると、どの分野でも器用貧乏に問題解決ができて高スループット、な感じになるのかなぁと考えている。いちおうマネージャーからは「いろいろ問題を投げてみてもそつなくこなすし、いろんなプロジェクトを同時進行できる。計画の質も良い。」という評価をもらっているし、現在の会社の方針的にもこういうタイプのほうが重宝されるのかなぁという感じがしている。

今いる会社的には、一分野に特化したICというのはあまり推奨されていない感じがしている。会社的にはWebフロントエンドからOSまで幅広くやっていて、定期的にチームを変えたりしてやっている分野を変えることを推奨している。つまり、今日WebフロントエンドでJavaScriptを書いていても、次の日にはC++でJavaScriptの処理系を書いているというのもあり得る会社になっている。例外はもちろんあるし、別にどこかに留まっても良い。これはせっかく一分野で突出している・できる人材を他のところに使うなんてもったいない、という見方もできるけれども、他分野に技術交流させることによって、知識の伝播が期待できるし、特定分野での技術を他の分野でも適用してみる、みたいなことも期待できる。これは短期的に特定分野に特化した人材を失うことになるけれども、長期的にはその技術が他のチームに伝播し、新しい技術が生まれる可能性があるという点で、会社としてもメリットがあるし、個人としても新しい技術、新しい視点を獲得できるというメリットがある。まぁ会社に余裕があるからできることなんだろうけれども。

今後の課題

より大きいインパクトを与える仕事をやるというのを前提条件としておきつつ、じゃあ器用貧乏で高スループット、とは言ったもののどうやっていくの、ということになる。

自分はいままで仕事に必要になったから、みたいな形でしか学習していない。というか、どうしても個人で勉強したことが身になったことがなくて、最近はもう諦めて仕事で必要になったら勉強する、というスタンスになっている。なんかエンジニアな人々の風上にもおけないのだけど、今のところ必要になったときのキャッチアップ速度がそこそこ速いらしいので、なんとかなるのかなぁとも思う。逆に言えば、仕事と関係していれば一応使えるレベルまでは深掘りできると思っているので、いろんな仕事に手を出してみるというのが妥当のような気がする。

高スループットについては作業の並列度を上げるということになる。これは自分でも器用だなぁと思うのだけど、git-worktreeという.gitを共有しながら作業ツリーを複数持てる機能があって、これを使って2,3個のブランチを同時並行で開発するみたいなことをやっている。さっきこの3ヶ月で何個デザインドキュメントを書いたかを数えてみたら9本ぐらい書いていたようなので、1ヶ月に3本、1,2週間に1本程度書いている。これは多分高スループットな方なので、これは現状を維持していきたい。

ICとして、より良い計画立案と実行ができる、というのは一つのスキルとして伸ばしていきたい。ココらへんをどうやって伸ばすのか、というのは自分でもよくわかっていない。一応関連するトピックとして「成功する要求仕様 失敗する要求仕様」「熊とワルツを」あたりを読んでいるのだけど、例えば「良いデザインドキュメントの書き方」みたいなものって見たことがないので、あったら教えてほしい。

最後に英語なのだけど、今のところ「困った、ヤバイ」みたいなことになっていないので、モチベーションが上がらないという問題がある。ドキュメントとか、ネイティブの人に添削してほしいなぁと思っているんだけれども、マネージャーからの定期評価で「ドキュメントの質が高い」とも言われているので、「かなりヤバイ」みたいな文章は書いていない模様。同僚がたまに自分の英語を聞きづらそうにしているので、発音の練習として”American Accent Training”をたまーにやっているのだけれども、最近知り合った人に「たまに英国訛りが入るけれども、英語の先生イギリス人だったの」みたいなことを言われて、どうやら成果は出ていない模様。これについてもなんか方法があったら教えてほしい。

 

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中