オピニオン

優秀なエンジニアに共通する6つの特徴 | 1人の優秀なエンジニアは平凡な1000人を凌駕する

1人の優秀なエンジニアは、平凡な1000人を完全に凌駕する。

これはIT業界で働いている僕の実感です。

技術職では、”できる人”と”できない人”の能力差は圧倒的に開きます。

“できる人”には数分でやれることが、”できない人”には、何日掛かってもできない。

そんなことは日常茶飯事です。

この記事では、「優れたエンジニアの特徴」をご紹介します。

だいちゃん
だいちゃん
優秀なエンジニアの思考方法を取り入れていきましょう。

エンジニアの思考法

1) 単純に物事を考える

一見すると、複雑なコードが書かれているほど、良いコードなんじゃないの?
と思われるかもしれません。

しかし優れたエンジニアは、複雑な内容でもシンプルに噛み砕いてしまいます。

複雑で分かりにくいコードではなく、素人目にも”美しい”と感じる簡素なコード。

技術に対する説明を求めても、返ってくるのは、初心者にも理解できる分かりやすい説明。

なぜこのような芸当ができるのかというと、普段から「なぜ?」と問いかけ、シンプルな答えを探し続けているからです。

いかに難しい事柄でも簡単に考えられるか、がポイントです。

2) 幅広い知識

一つの技術を追求することは大切ですが、様々な場面で最適な答えを導き出すためには、幅広い知識が必要です。

例えばプログラミング一つにしても、数ある言語の中から最適なものを選択する必要があります。

JavaがいいのかPythonがいいのか、それともC言語がいいのか。

またプログラミング言語だけではなく、ハードウェアやネットワークの知識も必要です。

なぜなら1つの製品は、様々な技術が複雑に絡み合って作られているからです。

技術者に必要なのは、知識だけではなく、知識を元にした”対応力”です。

優れた技術者は、幅広い知識と対応力を身につけています。

3) 学ぶことが好き

技術は絶えず変化していきます。

「数年前に主流だった技術が現在はまったく使れていない」という状況は、往々にしてあります。

そのため時代の流れに付いていくには、新しい技術を追い求める必要があるのです。

  • 新しい技術を試してみよう
  • 別のプログラミング言語を書いてみよう

そのように楽しみながら、学び続ける精神。

優秀なエンジニアほど、勉強しています。

4) 技術に自信を持っている

自分の技術に”絶対の自信”を持っています。

作ったことのない製品であっても、“自分に作れないモノはない”と考えているのです。

これは僕が出会った技術者の話です。

その技術者は、オーディオプレイヤーを作るプロジェクトに20代という異例の若さで参画しました。

新しい会社に入ったばかりで、周囲には何年もの間、企業で開発に携わってきたエンジニアばかりでした。

もちろん経験値は周りの方がありましたが、自身の技術には絶対の自信がありました。

そこで当初のプロジェクトでは”想定されていなかった機能を付けよう“と思い立ちます。

周囲を納得させるまでには、色々な困難がありましたが、新しい機能を付けることに成功します。

そして、ついには”世界発“とされる技術を搭載した製品を作り上げてしまったのです。

このように優秀なエンジニアは、自身の技術に自信を持っており、不可能を可能にしてしまいます。

1を100にするのではなく、0を1にしてみせる。

そのような想いを持っています。

5) 最悪の事態を想定する

プログラムには必ず”バグ”があります。

どれだけプログラムが優れていても、人間が作る以上、どこかに間違いはあります。

優秀なエンジニアは「バグが起こること」を前提にしており、バグが見つかった時に、いかにして素早くリカバリーするかを考えています。

そのため、バグが起こりやすい箇所には、あらかじめ対処法を仕込んでおきます。

自分の書いたプログラムを100%信用しないのです。

物事は自分の思った通りになるとは限らない。

途中でトラブルに遭遇することはあるでしょうし、転換を迫られる場面も多いです。

万が一の事態に備えて、対処法を想定しておく能力。

危機回避力に長けています。

6) 動かない方が楽しい

一般的な方は、”プログラミングした通りにモノが動くこと“が楽しいのではないかと思います。

しかし優秀なエンジニアは、“上手く動かないことが楽しい”と言います。

  • なぜコンパイルが通らないのか
  • なぜバグが引き起こされているのか

上手くいかないこと自体を楽しめるのです。

開発をしていく上では、必ず困難が立ちはだかります。

一筋縄では解決できないので、何度も繰り返し間違いを検証することになるでしょう。

パズルを解くような気持ちで、複雑に絡み合った不具合を取り除けるスキル。

そのような能力を持ち合わせています。

最後に

優秀なエンジニアの特徴をまとめると、以下の通りです。

  • 単純に物事を考える
  • 幅広い知識
  • 学び続ける力
  • 技術に自信を持っている
  • 最悪の事態を想定する
  • 動かない方が楽しい

我々凡人は、どうすれば彼らに近づくことができるのでしょうか?

もし優れたコードを書きたいのであれば、優れたコードを読むことをお勧めします。

そのための一助になるのが、「リーダブルコード」です。

いかにして分かりやすく、シンプルで、バグのないコードを書くか。

その方法が余すことなく綴られています。

本書を手本にして、優れたコードを書く練習をしてみて欲しいです。