開発者が技術を学ぶには「その分野に詳しい人を知る」のが近道
吉羽 開発者が技術を学ぶには、広く浅くと、深い部分、どのような順番ややり方で学習していくといいでしょうか?
鶴岡 まずはその分野に詳しい人を知ることだと思います。僕たちが最初、GCPやGoをやり始めたときも、詳しい人から生の情報をもらい、その人たちが実践した結果を聞いて習得していきました。どんな技術もそうですが、コミュニティと情報交換したり、専門書籍などから、先人の知恵を教えてもらうことが大事だと思っています。
ソウゾウ社内でやっている取り組みをひとつ紹介すると、エキスパートチームというのを作っていて、Goのエキスパートのメンバーがいるのですが、彼は業務時間の50%以上を、社内外にGo言語を広めるために使えるんです。
吉羽 へえ、半分以上も!
鶴岡 はい。彼は社内のGo勉強会もやってくれるんですけど、それ以外にも、社外のGoカンファレンスを主催したり、海外のカンファレンスに登壇しに行ったりもしています。僕らが情報を発信することで、情報が集まりやすい環境を作っています。詳しい人のネットワークを持つことによって、僕たちが欲しい情報が集まってくる。技術を深く知ろうと思ったら、詳しい人と繋がりを作ることが大事だと思います。
吉羽 OSSに貢献するのと、ある意味考え方は同じですね。今のところどの領域にもあまり自信がないエンジニアは、今後のことを考えると、先に深く掘り下げた方がいいのか、それとも広げた方がいいのか、どちらがいいでしょうか。
鶴岡 僕は最初に掘り下げた方がいいと思います。というのも、一通り浅いことしか知らない人は、頼られる瞬間があまりないんですよね。
例えば、いきなりGAEの全ての技術に詳しくなるのは難しいですが、GAEの中のタスクキューに関しては、1週間もあれば社内で誰よりも詳しい人になれますから。それをひたすら使い倒して詳しくなれれば、タスクキューで分からないことがあったときに、最初に声を掛けられる人になれる。狭く狭くしていって、何らかの部分で1番になるのが基本だと思います。
技術から離れた「サービスをどう作るか」の部分も学ぶべき
吉羽 今、技術の選択肢がとても多いですが、今後はどんな技術を学んでおくといいでしょうか?
鶴岡 そうですね、GoogleやAWSなどクラウドベンダが、今後も毎年いろんなサービスを出してくると思うんです。自分たちがサービスを作るときには、それらのサービスの組み合わせで作れてしまうし、10年前だったら大規模な負荷を捌くこと自体に価値があったのが、今はそうではなくなってきました。そこを頑張るよりは、絶対変わらない基礎の価値が高まると思います。例えば、データベースの理論、数学や、データ構造とアルゴリズムなど。もちろん、どんどん新しいものに飛びついていくことで吸収する速度を上げていく、そういう姿勢も大切です。
ただ、実際に仕事で活躍できるエンジニアになろうと考えると、サービスをどう作るかといった、開発から離れた部分も重要かもしれないですね。昔のように、とりあえずサービスを作れば一定ユーザーが付くような世界でもなくて、現実世界のことを知らないといけないというか(笑)。スマホアプリはアーリーアダプターではなくいきなり普通の人たちが使い始めるので。技術以外のことにも興味を持ちたいですね。
吉羽 そうですね。インフラが簡単に用意できて、そのうちアプリも簡単に開発できるようになると、どうグロースさせるかが勝負なので、ビジネス的なセンス、素養が必要になるかもしれません。
鶴岡 小規模なチームだとそういう人がすごく活躍しますね。エンジニアからプロダクトマネージャーになったり。
吉羽 サービスに関心持たないと自分で面白いものは作れない、ということでしょうね。今回は色々とお話をお聞かせいただき、ありがとうございました。

- エンジニア募集のお知らせ(サーバサイドエンジニア/SREエンジニア)
