WEB運営

1人の優秀な技術者は、平凡な1000人を完全に凌駕する

仕事をしていて感じるのは、一人の優秀なエンジニアは、平凡な何十人ものエンジニア以上の働きをしているということです。

技術職では、出来る人と出来ない人の能力が圧倒的に開きます。出来る人は数分で出来ることでも、出来ない人は、何日経っても一向に終わらない。

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

優れたエンジニアには、一体どんな特徴があるのでしょうか?

 

1. 単純に物事を考える

一見、難しいコードが書かれているほど、優れた内容なんじゃないの?

と思われるかもしれません。

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

コードは複雑なモノではなく、素人でも”美しい”と感じるような簡素なコード。技術の説明を求めても、返ってくるのは、誰にでも理解出来る分かりやすい説明。

なぜこんな事が出来るのかというと、普段から「なぜ?」と問題に対して問いかけ、考え続けているからです。

いかに「簡単なことを簡単」に、「難しいことでも簡単」に出来るかが大切です。

 

2. 幅広い知識

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

例えば、プログラミングをするにしても、言語の中から適したものを選択する必要が出てきます。Javaがいいのか、それともC言語がいいのかといったように。

また、プログラミング言語だけを知っていればいいわけでなく、ハードウェア・ネットワークといった技術は複雑に混ざりあって、製品が作られています。

ですので、基本的な技術に加え、そうした技術について知っておく事が大切です。その上で、基礎技術を絡めて応用していくこと。

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

優れた技術者は、幅広い知識と対応力に長けているのです。

 

3. 学ぶ事が好き

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

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

そのため、時代の流れについていくためには、常に新しい技術を追い求める必要があるのです。休日になれば、「ちょっと新しい手法を試してみるか」といって、学ぶ続ける精神。

優秀なエンジニアは、常に学び続けています。

 

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

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

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

例えば、私が出会った技術者の話です。

その技術者は、オーディオプレイヤーを作るプロジェクトに20代という異例の若さで参画しました。新しい会社に入社したばかりであり、周囲は何十年もの間、企業で開発に携わってきた人物ばかりだったといいます。

もちろん経験は周囲の方が上。しかし、自分の技術には絶対の自信がありました。そこで、当初のプロジェクトでは”想定されていなかった機能を付けよう”と思い立ちます。

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

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

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

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

そんな想いを持っているのです。

 

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

プログラムには必ず”バグ”があります。どんなに優れたプログラムであっても、人間が作る以上、欠陥部分はどこかしらに存在します。

優秀なエンジニアは、バグが起こるのを前提にしており、バグが起こった時、いかに素早くリカバリーするかに重点を置きます。

そのため、バグが起きやすい箇所には、あらかじめ対処法を仕込んで置きますし、自分の書いたプログラムを100%信用しないのです。

物事は自分の思った通りになるとは限らない。途中でトラブルに遭遇することがあるでしょうし、転換を迫られる事も多いです。

万が一の事態に備えて、対処方法を想定しておく能力。危機回避能力に長けているのです。

 

6. 動かない方が楽しい

多くの人は、”プログラム通りにモノが動くことに楽しみ”を見出すのではないかと思います。

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

なぜ上手くコンパイルが通らないのか、なぜバグが引き起こされているのか。そういった、上手くいかないコト自体を楽しめるのです。

開発をしていく上で、必ず困難が立ちはだかります。一筋縄では解決できないので、何度も何度も繰り返し間違いを検証することになるでしょう。

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

そんな能力を持ち合わせています。

 

最後に

優秀なエンジニアが持っている特徴をまとめると、

 

・単純に物事を考える

・幅広い知識

・学び続ける力

・技術に自信を持っている

・最悪の事態を想定する

・動かない方が楽しい

といったものが挙げられます

 

では、我々凡人が少しでも彼らに近づく方法はないのでしょうか。

もし、優れたプログラムコードを書きたいのであれば、優れたコードを読むことが大切です。

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

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

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

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