1
/
5

普通のやつらの下を行け!  NewsPicks CTOが新人エンジニアに伝えたい3つのこと

先月、NewsPicks CTOに就任した杉浦です。CTOとしては新卒のみなさんと同じく1年目で、偉そうなことは言えないのですが、今までのエンジニア人生を振り返ってやっていて良かったことを3つお伝えしたいと思います。

1. 低レベルな技術を身につけよう

コンピュータの原理に近い技術をエンジニア用語で低レベルな技術と言います。逆にコンピュータではなく、人に理解しやすい、より人に寄り添った技術を高レベルな技術と言ったりします。

最近では、AWSのようなクラウド環境が普及し、豊富な機能を持ったIDEでのアプリ開発が人気だったり、いわゆる高レベルな技術のみ知っていればサービスを開発することが可能になりました。それ自体は大変に素晴らしいことで、良い時代になったと思います。

しかし、メモリの構造やコンピュータの動作の仕組みがわからなくても、それなりに動くものを作ることができることは危険でもあり、不可解な動きをしたり、性能が悪くなってしまったりしたときに「なぜだろう?」という原因がピンとこないことになります。どれだけクラウドや開発環境が進化しても、その仕組みを理解していることは大切です。

手前味噌な話になりますが、NewsPicksの広告配信システムはかなり高速で、平均レイテンシーが約2ms程度です。(2ms がどの程度の速さかわかりにくいと思いますが、国内の証券取引所のレイテンシーとだいたい同じくらいです。)

広告配信システムのレイテンシーはサービスの遅さに直結し、ひいてはユーザーのみなさまの体感速度の遅さにつながります。広告配信システムは高速であること自体がサービスの競争力になります。

広告配信システムの開発はUZABASE CTOの竹内と私の2名で行い、広告配信のコア部分は1ヶ月で作りました。この1ヶ月という短い期間で高速なシステムを開発できた秘訣は、竹内と私がコンピュータの仕組みを理解し、いかにCPUに効率的に処理させるかを追求し、高速性を実現できるアーキテクチャを設計できたからだと考えています。低レベルの技術を理解していることが、サービスの競争力につながる例です。

コンピュータの仕組みを理解するためのオススメの教材はLinuxカーネルです。カーネルのソースコードは誰でもすぐにダウンロードできますし、解説している書籍もあります。

カーネルの仕組みを勉強すると、OSがどのようにCPUとメモリを使っているかを腹落ちして理解することができます。

あなたが周りの大多数のエンジニアと同じ技術を、同じように勉強した場合に、周りより速く成長できるでしょうか。あなたが優秀であればできるかもしれません。しかし、普通くらい頭脳の持ち主であれば、やはり普通の成長になるでしょう。

もし他のエンジニアよりも早く成長したいならば、何か変わったことをしなければいけません。低レベルな技術を身につけることは、その変わったことの1つの方法としてオススメです。

他のエンジニアと差をつけたいならば、他のやつらの下を行くことが大切です。

2. 早く、多く失敗しよう

エンジニアの成長には痛みが必要です。成長痛と同じで、痛みを伴わない場合は大して成長しないことが多いように思います。

私自身、恥ずかしくてあまりおおっぴらにしたくないのですが、今までに多くの失敗をしてきました。

□ 初めてチームリーダーになりがむしゃらに働くが空回りしてメンバーが体調不良に、スケジュールも遅延。(2年目)

→ 自分1人の限界を知る

→ 自分の力を最適化するのではなく、チームを最適化するための方法を考えるようになる。

□ アーキテクトとして、新しい技術を積極的に採用 (4年目)

→  性能が出ない、かつ、大障害が発生。

→  新しい技術を採用する前の検証を慎重に行うように。

→  新しいもの好きでやみくもに新技術を採用せず、課題解決のために新技術を採用するように。

□ スクラム、リーンスタートアップ、デザイン思考など話題の手法をすぐに取り入れる (5年目)

→ 思ったような効果がでない。メンバーから賛同が得られず浸透しない。

→ 本に書いてあることをそのまま実践してもうまくいかないことを知る。

→ 考え方を咀嚼した上で、自分達に適した方法を考え編み出し、少しずつ実践、浸透させるように。

□ 会社に新規事業を提案するが、受け入れられず、失意のまま退職 (8年目)

→ 今、思えば、ビジョンだけを描いていて、実現可能性が低かった。

→ ビジョンを大切にしつつ、ビジョンを実現するための戦略、戦術、計画までブレイクダウンして提案するようになった。

1度失敗すれば、2度と同じ失敗はしません。早く、多く失敗するためには、多くチャレンジすることが大切です。痛みや摩擦を恐れていてはチャレンジはできません。特に新卒からの数年間は失敗が許される特権の期間です。この特権期間を有効活用して多くのチャレンジを行うことが大切です。

3. もっとも大切なことに集中しよう

エンジニアとして成果を出すために、何をすべきか1つだけあげろと言われたら、

「もっとも大切なことに集中しよう」

になります。

NewsPicksの開発でも成果があがった時は、チーム全体で1つのことに集中した時です。

サービスを提供していると、ありがたいことにいろいろなご意見や要望をいただきますし、社内からも様々なアイディアがでてきます。また、これらの内、ほとんどのことは、やった方が良いことです。

例えば、

・ダウンロード数を増やすためにマーケティング用の開発をしたい

・ソーシャルでバズらせるためにシェア導線を工夫したい

・売上を増やすために課金導線を工夫したい

・外部サービスとの連携機能を開発したい

・iPadアプリが横向きに対応しておらず使いにくい

などです。

多くの重要なアイディアではありますが、開発メンバーは限られておりリソースは有限です。同時に行いたいのはやまやまですが、全てに着手すると、全てが遅くなってしまい、結果的にユーザーのみなさまに新たな価値を提供するタイミングも遅くなってしまいます。優先順位を明確にし、1つのことを決めたら、それをやりきる、不動の決意が必要になります。

人間はよろず屋であり、本質的に気が散る存在です。意識せず、自然のままにしておくと、いつのまにか複数のことに着手してしまいます。複数のことを並行してやる方が簡単で、何かに集中することの方が難しいのです。

集中は、エンジニアがあまりに多くのタスクに囲まれているからこそ必要です。ある瞬間に1つのことを行なうことによってのみ、優先度の高い仕事を早く高いクォリティで行うことができます。

まとめ

お伝えしたいことは次の3点です。

1.  低レベルな技術を身につけよう

2.  早く、多く失敗しよう

3.  もっとも大切なことに集中しよう

新卒エンジニアのみなさん、これからみなさんを待ち受けている仕事は、自分の力で世の中を良い方向に変革していくことができる非常にエキサイティングな仕事です。この3点がみなさんの今後のエンジニアライフの参考になれば幸いです。

NewsPicksでは、好奇心があり、チャレンジ精神のある若手エンジニアを求めています。会社紹介のページを見てみて興味を持ったらぜひ一度話を聞きに来てください!

株式会社ニューズピックス's job postings
55 Likes
55 Likes

CTO

Weekly ranking

Show other rankings