月別: 2016年12月

2016年買ってよかったもの

なんか画像とか貼るのが超絶面倒くさいので箇条書きで。

  • Nespresso Inissia
    • 自分もいつかはエスプレッソマシンを、とは思っていたものの、最近はあんまり自分でコーヒーいれなくなってきたし、最近自分でやったら凄く不味かったので、もういいかと思い購入。
    • 以前のバイト先にあったのでどんなもんかは知っていたものの、やっぱり良い。メンテナンスも楽。
    • 夜はデカフェで睡眠にも優しい。
  • 自作キーボード
    • 引き続き使用中。
    • キーキャップにポッチがないのがやっぱり気になったので、FとJの部分だけ最近別に購入した。
    • 更にG20のキーキャップも購入してそのうち届くので、変えてみる予定。
  • Logitech M570
    • トラックボールもどんなもんだろうと思って購入。案外良かったので会社と家用に2つ購入することに。
    • マウスも図を書くのに便利だったりすることもあるので併用中。
    • ゴミがたまりやすい気がする……
  • Kindle Voyage
    • なんか技術書を読む以外のやつはこれで。
    • 最初は小説読んでたんだけど、最近Amazon.co.jpから購入できなくなったので、しかたがないのでなろう系小説を変換して読みまくっている。おかげで爵位の偉い順がわかるようになってしまった。
  • What IfThing Explainer
    • xkcdの中の人が書いた本。
    • 小さいお子様にもおすすめできる。
    • mrknさんが好きそう。
  • Jelly Beans Machine
    • 会社のミニキッチンが改悪されて、同僚と「自分たちで作るしか無い」ということでお菓子を買いまくったときに勢いで買ったやつ。
    • お金を入れるモードとか入れずに無限回転できるモードが変更できる。
    • 無限にジェリービーンズが食べられる夢が達成できて嬉しい。
    • 最近リコリスが美味しいと感じるようになってきて末期。
  • Thinkpadの違う形のポッチ
    • 自作キーボードにしたので会社の方では使ってないけれども、家ではまだ使ってる。
    • 自分はSoft Rimが好き。
  • American Accent Training
    • Grammar in Useで読み書き文法をカバーして、American Accent Trainingで発音をカバー、というのが良いらしい。
    • まだ終わってないけど、実際「あ、なるほど。こうやって発音するのか」という気づきがあってよい。
  • WASABI MANGO UHD490
    • Phillipsの43インチディスプレイが流行っている中、自分は一歩先を行き49インチディスプレイを購入。
    • ブランド名がまさかの「ワサビマンゴー」。ニンジャスレイヤーか。
    • 到着して開封したときに、あまりに大きすぎて爆笑した。
    • デカすぎて家に置くのはもったいないので、会社においたところ、通り掛かる人みんなから「これはすごい」というコメントを貰う。マネージャーの「Eclipseが実用的になっているのを初めて見た」というコメントが一番面白かった。
  • HP Chromebook 13 G1
    • 自分のすべてのPCをChromeOSに移行してから二年ほど経っているのだけれども、デスクトップはASUS Chromeboxで何ら困っていないのだが、ラップトップのほうが重量的に重い+Type-C充電にしたい、ということでChromebook Pixel(初代)から乗り換え。
      • よくよく考えたらゲーム用のWindows PCを自作していたので、完全にChromeOS生活にはなってないことに気づいた。大体ChromeOS生活。
    • ログインするだけでほぼ乗り換え完了なのはすごい。SSH鍵移したぐらい。
    • おかげですべての充電器がUSB Type-Cに統一され、すでに未来に生きている感がある。
      • ついてきた充電器でNexus 6Pも充電できる。
      • 追加でこの充電器も買った。これもこのラップトップとNexus 6Pを充電できる。
    • たまたま遊びに来ていた仕事に来ていたsora_h先輩とrejasupotaro先輩にけしかけられてポチるも、ポチったあとにBlack Friday直前であることが判明。しばらく値段を見られなかった。

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”をたまーにやっているのだけれども、最近知り合った人に「たまに英国訛りが入るけれども、英語の先生イギリス人だったの」みたいなことを言われて、どうやら成果は出ていない模様。これについてもなんか方法があったら教えてほしい。