1人の優秀なエンジニアは、平凡な1000人を完全に凌駕する。
これはIT業界で働いている僕の実感です。
技術職では、”できる人”と”できない人”の能力差は圧倒的に開きます。
“できる人”には数分でやれることが、”できない人”には、何日掛かってもできない。
そんなことは日常茶飯事です。
この記事では、「優れたエンジニアの特徴」をご紹介します。
エンジニアの思考法
1) 単純に物事を考える
一見すると、複雑なコードが書かれているほど、良いコードなんじゃないの?
と思われるかもしれません。
しかし優れたエンジニアは、複雑な内容でもシンプルに噛み砕いてしまいます。
複雑で分かりにくいコードではなく、素人目にも”美しい”と感じる簡素なコード。
技術に対する説明を求めても、返ってくるのは、初心者にも理解できる分かりやすい説明。
なぜこのような芸当ができるのかというと、普段から「なぜ?」と問いかけ、シンプルな答えを探し続けているからです。
いかに難しい事柄でも簡単に考えられるか、がポイントです。
2) 幅広い知識
一つの技術を追求することは大切ですが、様々な場面で最適な答えを導き出すためには、幅広い知識が必要です。
例えばプログラミング一つにしても、数ある言語の中から最適なものを選択する必要があります。
JavaがいいのかPythonがいいのか、それともC言語がいいのか。
またプログラミング言語だけではなく、ハードウェアやネットワークの知識も必要です。
なぜなら1つの製品は、様々な技術が複雑に絡み合って作られているからです。
技術者に必要なのは、知識だけではなく、知識を元にした”対応力”です。
優れた技術者は、幅広い知識と対応力を身につけています。
3) 学ぶことが好き
技術は絶えず変化していきます。
「数年前に主流だった技術が現在はまったく使れていない」という状況は、往々にしてあります。
そのため時代の流れに付いていくには、新しい技術を追い求める必要があるのです。
- 新しい技術を試してみよう
- 別のプログラミング言語を書いてみよう
そのように楽しみながら、学び続ける精神。
優秀なエンジニアほど、勉強しています。
4) 技術に自信を持っている
自分の技術に”絶対の自信”を持っています。
作ったことのない製品であっても、“自分に作れないモノはない”と考えているのです。
これは僕が出会った技術者の話です。
その技術者は、オーディオプレイヤーを作るプロジェクトに20代という異例の若さで参画しました。
新しい会社に入ったばかりで、周囲には何年もの間、企業で開発に携わってきたエンジニアばかりでした。
もちろん経験値は周りの方がありましたが、自身の技術には絶対の自信がありました。
そこで当初のプロジェクトでは”想定されていなかった機能を付けよう“と思い立ちます。
周囲を納得させるまでには、色々な困難がありましたが、新しい機能を付けることに成功します。
そして、ついには”世界発“とされる技術を搭載した製品を作り上げてしまったのです。
このように優秀なエンジニアは、自身の技術に自信を持っており、不可能を可能にしてしまいます。
1を100にするのではなく、0を1にしてみせる。
そのような想いを持っています。
5) 最悪の事態を想定する
プログラムには必ず”バグ”があります。
どれだけプログラムが優れていても、人間が作る以上、どこかに間違いはあります。
優秀なエンジニアは「バグが起こること」を前提にしており、バグが見つかった時に、いかにして素早くリカバリーするかを考えています。
そのため、バグが起こりやすい箇所には、あらかじめ対処法を仕込んでおきます。
自分の書いたプログラムを100%信用しないのです。
物事は自分の思った通りになるとは限らない。
途中でトラブルに遭遇することはあるでしょうし、転換を迫られる場面も多いです。
万が一の事態に備えて、対処法を想定しておく能力。
危機回避力に長けています。
6) 動かない方が楽しい
一般的な方は、”プログラミングした通りにモノが動くこと“が楽しいのではないかと思います。
しかし優秀なエンジニアは、“上手く動かないことが楽しい”と言います。
- なぜコンパイルが通らないのか
- なぜバグが引き起こされているのか
上手くいかないこと自体を楽しめるのです。
開発をしていく上では、必ず困難が立ちはだかります。
一筋縄では解決できないので、何度も繰り返し間違いを検証することになるでしょう。
パズルを解くような気持ちで、複雑に絡み合った不具合を取り除けるスキル。
そのような能力を持ち合わせています。
最後に
優秀なエンジニアの特徴をまとめると、以下の通りです。
- 単純に物事を考える
- 幅広い知識
- 学び続ける力
- 技術に自信を持っている
- 最悪の事態を想定する
- 動かない方が楽しい
我々凡人は、どうすれば彼らに近づくことができるのでしょうか?
もし優れたコードを書きたいのであれば、優れたコードを読むことをお勧めします。
そのための一助になるのが、「リーダブルコード」です。
いかにして分かりやすく、シンプルで、バグのないコードを書くか。
その方法が余すことなく綴られています。
本書を手本にして、優れたコードを書く練習をしてみて欲しいです。
(2024/12/11 22:29:22時点 Amazon調べ-詳細)