すごいエンジニアとそうでないエンジニアを分けるもの

Inside Intercomで“The difference between good and great engineers”という記事がありました。

この記事はIntercomのエンジニアチームが4人から90人まで成長する中で、エンジニアリングチームのVPであるDarragh氏の考える、良い(Good)エンジニアと、すごい(Great)エンジニアは何が違うのか書かれています。

以下簡単に内容をまとめていきます。全部は書いていないので興味のある方は是非元記事をご覧下さい。

1. すごい人達は、大きな野望を持ち、断固とした意思を持っている。

すごい人は、大きな夢を持ち、努力を怠らない。また、自分の能力が固定されているとは考えず、もっと成長できると考えている。(Growth Mindset)

なぜこれが重要かというと、経営者の持つビジョンや高い目標を維持し続けるには、こうした考えを持つ人の存在が不可欠だからとのことです。

2. すごいエンジニアは、シンプルである

すごいプログラマーは、習慣的にコードをシンプルで、分かりやすい状態に保とうとします。また、他のメンバーも同様のコードを書けるように周りを助けます。また自分達のプロダクトや技術をどのように進化させていくかのビジョンを持っています。

なぜこれが重要かというと、時間が立つにつれ、コードは複雑になっていくものなので、常に一つ一つのコードをシンプルに保つことが、将来的な改善の手間を少なくすることに繋がるため、とのことです。

3. すごいエンジニアはデバッグ技術が高い

すごいプログラマーは、推測でデバッグしようとしない。コード、テスト、ネットワーク、DB、OS、ログなど様々な角度から様々なテクニックを使ってバグの原因を探ろうとする。また、Saff Squeezeのようなテクニックを使って、バグの原因を絞り込む。またバグを上手く直し、将来的に同じようなバグが発生しないよう対策する。これが出来るのはプロダクトの詳細まで深く理解しているから。

なぜこれが重要かというと、早くデバッグをすることが出来ればその分多くの時間をプロダクトの改善に使うことが出来るから。

4. すごいエンジニアは他のメンバーを助ける

すごいエンジニアは、他のエンジニアのスキルが上がるほうが自分がプロダクトに与える影響は大きいと知っているので周りを積極的に助けるし、それを楽しむ。またスキルだけでなく、チームワークも大切だと考えているので、スキルとチームワークの両方を高めようとする。

なぜこれが重要かというと、会社が成長しないと潰れてしまうのと同様、エンジニアチームも成長させないと、ダメになるから。チームの成長を促進させるようなエンジニアがいることが大事。

5. すごいエンジニアは重要なことが何か知っている

すごいエンジニアは、プロダクトのライフサイクルにおける要所要所で何が大切なのかを知っている。また技術と顧客両方を大事にしている。また、何をするかだけでなく、どう行うかについても同様の態度で非効率を排除しようとする。

なぜこれが重要かというと、プロダクトの開発においてあれもやりたい、これもやりたいと思っても全部は出来ないから。何が重要なのかを上手く選べる人はチームからの信頼を獲得出来る。

6. すごいエンジニアはクリエイティブでポジティブ

すごいエンジニアは、何か困難に当たったら周りを鼓舞し、「これは無理だ」なんて言わないで可能性を考える。また彼らはポジティブであるが同時に、懐疑的でもある。

なぜこれが重要かというと、スタートアップの多くは失敗するし、失敗するかもと思ってるプロジェクトは失敗するから。ポジティブさは、チーム全体に伝染し全体の成果を高める。創造的でポジティブなチームがあればスタートアップの成功可能性は高まる。

7. まとめ

いかがだったでしょうか。すごいエンジニアになるには、スキルの高さはもちろん、ポジティブで創造的でコミュニケーション上手と多方面のスキルが必要ということですね。

これからリンガルボックスでもエンジニアを探していく機会があったり、エンジニアと組む機会があるかもしれないので、ここに書いてあることを覚えておこうと思いました。現役のエンジニアの方にとっても参考になれば嬉しいです。


ライターについて
プログラミング学習サービスCodeGrit(現在立上げ中)とオンライン英会話サービスのリンガルボックスを運営しています。