アプリ部門およびインフラ部門の責任者も兼務する、はてなCTOの田中慎司氏。数多くのエンジニアを見てきた田中氏にとって、優秀なエンジニアとは「技術の原典を読める人」、そして「リーダーシップを持てる人」だという。「リーダーでなくても持っておくべき」というリーダーシップとは。詳しく話を聞いた。
▼はてなCTO 田中慎司氏へのインタビュー第1弾
はてなCTO田中慎司氏に訊く―「CTOとは、エンジニア1人ひとりのポートフォリオを作る存在である」
はてなのCTOである田中慎司氏は、技術部長ならびにインフラ部門の責任者、さらにはサービス開発部の副本部長も兼務しているという。
アプリケーションエンジニアからインフラエンジニアまで、数々の技術者を見てきている田中氏に、優秀なエンジニアに必要なものは何かを訊いた。
テクニカルスキルの身に付け方から、マインドの持ち方、さらには環境の選び方まで、具体的な方法論があるという。
― 田中さんはCTOだけでなく技術部長なども兼任されていますが、そんな田中さんから見て、優秀なエンジニアというのはどういった要件を備えているものなんでしょうか。
やはり第一には、技術的な面が外せないですよね。自分で手を動かして何かモノを作っていること。さらには、「表面的なことだけを勉強して終わり」というんじゃなくて、何でそうなっているのかとか、どうしてそう動いているのかとか、きちんと深堀りするということです。
目的が果たされるとそれで満足して、使った技術をそれ以上深堀りしないという人は少なくないと思います。でもそれだと、応用がきかない。「本質的には同じ問題なんだけど、角度が違う」というような事柄に対処できないんですよね。
どこを深堀りするべきかは人それぞれで、自分の興味のあるものをやっていけばいいと思いますが、いずれにしても表面的なところで止まってしまうと、エンジニアとしてはなかなか一流になれないと思います。
― 「深堀り」というのは、どの程度のものなのでしょう?
例えばOAuth認証とか実装する場合があると思うんですけど、日本語の解説ブログを読むだけじゃなくて、RFC(Request for Comments)を隅々までは読まないにしても、軽くは眺めておくとか。ライブラリを使うのであればそのソースコードを読むとか。言語を使う際にオフィシャルのドキュメントをちゃんと読むとか。
そういうふうに、“原典”をちゃんと確認しておくのは重要かなと思います。使っているもの全ての原典を読むのは難しいとは思いますが、一部だけでも押さえておくことが大事かなと。
― そうすれば、先ほどおっしゃっていた“本質”が身につくということですね。他には何かありますか?
似た技術を併せて勉強すれば、一度に多くのことを学びとることができますよね。「Perlが好き」「Rubyが好き」という人は多いですが、一つの言語だけやるんじゃなくて、複数の言語を知ること。共通する部分とかも結構ありますし、得るものは多いと思います。
そうすると、また別の言語が出てきたときにも、「ここが違うけどここが一緒だ」とすぐに理解できたりする。
だから言語でいえば複数の言語を知るべきでしょうし、ライブラリで言えばいくつか同じ目的を持った複数のライブラリを触ってみることで、その一つひとつに対しても深く理解できると思います。
― はてなのエンジニアには、そうしたことができている人は多いですか?
自主的にやっているエンジニアは比較的多いと思います。基本的には技術が好きな人が集まっているので、半分趣味みたいな感じで勉強している。そういう意味では良いメンバーが揃っていますよね。
ただ、注意すべきは、サービスと技術の主従を逆転させないこと。我々のようにWEBサービスを提供する会社においては、あくまでも主体はサービスであり、技術というのは、いかに良いサービスを速く作り上げるかに資するものです。
大手企業であれば、サービスをそれほど気にせずにいられる環境もあるでしょうが、はてなぐらいの規模の会社では、サービスへのコミットと技術へのコミット、どちらも求められます。
特に若い優秀なエンジニアほど、技術とサービスの主従が逆転したりするんですよね。いちエンジニアとしては分からなくもないですが、WEBサービスの会社で仕事をするのであれば、そこはちゃんと意識してほしいなと。
― 現場で求められ、活躍できる存在になるためには、大事なことですね。
ええ。あとは、ある特定のサービスに入れ込んでしまうのではなく、その会社のカルチャーだとかスタンス全体、目指す方向性全般にコミットすることも重要です。
1つのサービスを愛することがダメというわけではないのですが、変化が激しいこの業界、5年後もまったく同じことをやっている会社ってそんなにないと思うんです。特定のサービスのみにコミットしているとなると、5年後変化が起こったときどうなるのかと。
いちユーザーとしては変化してほしくないと思うこともあるかもしれませんが、会社としては変化し続けることが宿命ではあるので、変化を好ましく捉えられたほうがいい。
そこで大事になってくるのが、会社が持っているカルチャーとか、事業やサービスのスタンスへの共感だと思うんです。根底にある会社のカルチャーには、強くコミットしてほしいと思います。
それから、チームで開発をしていく技術者に必要なのは、1人ひとりがリーダーシップを持つこと。
― 特定のリーダー、ではなくて、全員がリーダーシップを持つということですか?
そうです。ここでいうリーダーシップというのは、いわゆるチームマネジメントみたいな意味ではなくて、チームが掲げる目標にコミットし、それに対して主体的に、最適な手段で取り組めることです。
はてなの場合、1チームを構成している人数は多くないので、自ずと各人の役割が大きくなります。それぞれ得意分野があって、それを結集して初めてチームが機能する。チームの中に「ここができるのは自分だけだ」という領域が存在するので、そこでは各自がちゃんと引っ張っていってもらわないと、良いサービスにならないんです。これは何もはてなに限った話ではなく、チームで何かをする場合すべてに共通して言えることかもしれません。
逆に、チームマネジメントについては、エンジニア全体の中で2~3割ぐらいでも充分かなという感じですね。全員がやりたいと言ってもそんなにポジションがないので。でもやりたい人がいないと困るし、特にエンジニアの場合はあまりマネジメントをやりたがらない傾向が強いので、バランスが難しい。悩みどころです(笑)
― (笑)。よく耳にする話ですよね。“主体的”という意味でのリーダーシップを持っているエンジニアは多いと思いますか?
潜在的に持っている人は多いと思いますよ。でもそれが、会社にとって最適な形で発揮されているかというと、必ずしもそうとは言えない状況が結構あるんじゃないかと。
原因は、マネジメント上のモチベーションコントロールがうまくいっていなかったり、チームの目標が曖昧だったり、こうすればもっと上手くできるということを本人が理解していなかったり、といったところでしょうか。
仕事を進める上ではさまざまな状況が出てきて、時々、これまでの経験だけでは対応できないことがあります。その際に「こういう時はこうすればいいんだ」というやり方のパターンをちゃんと示してあげないと、せっかくのリーダーシップが上手に発揮できないということもあります。
技術面については個人個人で勝手に伸ばしていくことができますが、リーダーシップについては、組織やチームの中で、周囲との関係性の上で磨いていくものです。
だからこそ、どうやればそれがうまく発揮できるのかとか、チームの状況に応じてどういうふうに動けば成果を出せるのかとか、自分で意識的にやっていってほしい。そうやって、チームプレーの仕方を身に付けられたら、職業エンジニアとしてより価値が高くなるんじゃないかと思いますね。
― 組織で働くエンジニアだからこそ得られる強み、といえるかもしれませんね。本日は興味深いお話、ありがとうございました。
(おわり)
[取材] 梁取義宣 [文] 重久夏樹 [撮影] 上田恭平
編集 = CAREER HACK
4月から新社会人となるみなさんに、仕事にとって大切なこと、役立つ体験談などをお届けします。どんなに活躍している人もはじめはみんな新人。新たなスタートラインに立つ時、壁にぶつかったとき、ぜひこれらの記事を参考にしてみてください!
経営者たちの「現在に至るまでの困難=ハードシングス」をテーマにした連載特集。HARD THINGS STORY(リーダーたちの迷いと決断)と題し、経営者たちが経験したさまざまな壁、困難、そして試練に迫ります。
Notionナシでは生きられない!そんなNotionを愛する人々、チームのケースをお届け。