あそこの企業は優秀なエンジニアがおおい、とか、彼は優秀なエンジニアだよ〜とかいう話をよく聞くと思います。
最初は素直に「すごいな〜」って思っていたんですが、そもそも優秀ってなんだ?と考えるようになりました。
大学受験だったら偏差値が高い方が優秀だし、プロ野球だったら打率が高い方が優秀です。
じゃあ優秀なエンジニアってなんなのか、githubのスター数が多い人なのか、競技プログラミング強い人なのか、コミュニケーション力がある人なのか。
答えは様々ですが私が感じた優秀なエンジニアの特徴をまとめてみました。
ものを作るスピードが早い
普通の回答になりますが、、、
優秀の定義の1つに開発スピードの速さが挙げられるでしょう。1人でやると3日かかるプログラムを1日で終わらせることができれば3倍の給料をもらうべきだと思います。
しかしこれは現実的には不可能です。自分が年収2000万円のエンジニアになりたかったとしても年収600万円のエンジニア3人に勝つことは難しいでしょう。どれだけスキルがあってもスピードには上限があります。
ビジネス側のスキルももっている
開発にはスケジュールがあります。追加したい機能はたくさんあると思いますがそれらを1からやっていくと間に合わない可能性があります。
ビジネスを進行していく上でなにが必要なのか、優先順位をつけることがかなり重要になっていきます。
開発にかける時間のコストとビジネス的なリターンを評価できる人はかなり強いといえます。
けんすうさんも「エンジニアである前に、ビジネスパーソンであれ。」という言葉を残しています。
>>「優秀なエンジニアの定義とは?」ー nanapi けんすうに訊く!
コミュニケーションスキル
コミュニケーションスキルってかなり抽象的な言葉だと思っています。よく言われますが多分わからないとおもうのでもっと具体的に言うと、わからない人にわかりやすく伝える能力です。
例えば、エンジニアがよく使う言葉に「API」という言葉がありますが、ビジネスサイドの人にAPIと言ってもわかりません。
向こうが気を使って自分で少し調べたとしてもすぐに理解することは難しいのではないでしょうか。
このような難解な単語をなるべく使わずにわかりやすく伝えられる能力が優秀なエンジニアには必要です。 (イケイケでお酒が飲めるコミュ力はあまり必要ないので注意が必要です。)
向上心がある
よく言われていますが、ITの分野は動きがかなりはやいため新しいことをキャッチアップする力が不可欠となっています。
本を読んだり、勉強会に参加したり、最新情報に触れることでスキルをあげていきましょう。
英語が流暢に話せる、読める
英語力というのもエンジニアには必要不可欠です。
基本的に最先端技術の発祥地は海外です。海外の論文を読んだり、海外の人のスピーチを聞いたり、ニュースを読んだりすることが最新情報に触れるためには必要です。
また英語力は仕事の信頼関係にも関わってきます。海外の人は英語が下手な人に仕事を任せたくないですよね?
英語力はエンジニアが必ず身につけておくべきスキルと言えるでしょう。