【いくつ当てはまる?】優秀なエンジニアに共通する10の特徴とは!

海外の記事から優秀なエンジニア(プログラマー)に共通する10の特徴について述べています。今は非エンジニアでも、すでにエンジニアとして働いている人も活躍する上で参考になることが多くあるでしょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が1,000以上あります。

本稿は、CodingDojoブログ記事を、CodingDojoより了解を得て日本語翻訳し掲載した記事になります。

この記事を読んでいるあなたが、もうすでに最新のプログラム言語とフレームワークに精通しているなら、優れたコードを書く技術は十分にあるということなので、それ自体は素晴らしいことです。しかし、ただ優れたプログラムを書く才能があるというだけで、エンジニアとして成功するというわけではありません。

大きく成功をおさめたいなら、単に仕事をこなすだけなく、「良い」仕事をする必要があり、そのためにはいくつか知っておくべきことがあります。ここでは、優れたプログラマーになるために必要な素養を噛み砕いて述べていきたいと思います。

 

また、オンラインのプログラミングスクールTechAcademyでは、未経験でもプログラミングを習得することが出来ます。

 

1. 博識である

一つの技術を深く知っていることは大事ですが、現実で起きる問題はいろんなことが複雑に絡み合っているので、複数の技術を身につけておかないと問題解決ができません。

もし仮にあなたが卓越した技術を持つスペシャリストとして雇われた場合を考えてみましょう。

新しい環境下では何も新しく学ぶ必要は無いでしょうか?

いえそんなことはなく、あなたが持っている技術が、これから新しくアプリケーションを作っていく上で必須の「ソフトウェア」、「ハードウェア」、「ネットワーク」に対してどのように作用していくのかを新しい環境下でちゃんと知ることが必要です。

 

もし一つの技術だけしか精通していない場合、これらを俯瞰して把握することが出来ません。たとえばアプリケーションを新しく開発していたときに、急に担当外のタスクを振られたとしても全体に精通していれば、それに対応することは比較的容易でしょう。また、そういった業務に応じることであなたの所属するプロジェクトに大きく貢献することができます。

 

2. 困難を楽しんでいる

アプリケーションを作るというのは大変骨の折れる仕事で一筋縄ではいきません。なぜコンパイルが通らないのか、なにがバグを引き起こしているのか、不具合動作をどうやったら解決できるのか等、様々な困難が立ちはだかります。

これらは複雑に絡み合っているものですから、「パズルを解くようなスキル」が求められます。もちろん、必ず解決方法が必ずあるはずだから、それが見つかるまで決して諦めないで頑張る、という信念も必要ですが。

もし、あなたが作ったアプリケーションがダウンして問題が発生してしまった場合、問題解決するまで上司があなたにぴったり付いて回るでしょうが、そんなプレッシャーのかかる状況下でもパズルを解けるようになれれば大したものです。

 

[PR] プログラミングで挫折しない学習方法を動画で公開中

3. 学ぶことが好きである

技術というものは絶えず変化していきます。今使っているツールや言語は来年にはもはや使っていないかもしれないし、まして10年後であればなおさらです。

なので、次々とやってくるプロジェクトに貢献するためには、常に自身のスキルを磨き続ける必要があります。人によっては雇い主が既にトレーニングプログラムを用意してくれているかもしれませんが、やはり優秀なプログラマーは自分の時間を割いて学んでいます。

 

4. コミュニケーション能力が高い

開発者として働くことは、単純に技術をもっていればよいということではありません。ときに開発者は、商談相手と話をしてその人たちが何を必要としているかを知る必要があります。また開発者は技術的文書を書くこともあれば、状況報告書を書くことだってあります。そういったときに、わかりやすく書く能力がとても重要です。

 

5. 自信を持っている

システムを作り上げるのに必要な方法は決して一つではありません。どんなにいいアイディアが浮かんだとしても、自分の頭の中だけにあるのでは意味をなしません。優れた開発者は自分のアイディアに自信を持ち、そのアイディアを開発会議といった場ではっきりと声に出しています。

ただ、いきなりそれを実践するのは難しいと思うので、徐々に自信をつけるためにもアプリケーションの全体的な見直しのような大それた提案はせずに、最初はちょっとした提案から始めてみるのもいいかもしれませんね。

 

6. ビジネスへの興味がある

ビジネスで起こった課題を解決するために、プログラムの技術が利用されます。なので、自分の会社のビジネスに興味を持てば持つほどそのビジネスの理解度が増していき、そのビジネスを大きくしていく解決策を提案することができるようになることでしょう。

ビジネスユーザーと一緒に話す機会があれば、うまくそれを利用して、ユーザーに今の仕事で直面している課題はどんなものがあるかを聞いてみましょう。

もし本格的にビジネスに興味を持つようになったら、認定を受けたビジネス講座を受けたり、それに関連した仕事を請け負うようになってもいいかもしれません。

 

7. チームプレイヤーである

ソロのプログラマーが映画などで美化されることは多々ありますし、学校の宿題は自分自身でこなすことが普通です。しかし、現実のプロジェクトはチーム無しには成り立ちません。

開発者にとって大事なことは、同僚達とうまくやっていくことです。様々な能力を持つ人たちとうまく折り合いをつけ、意見の違いがあっても相手を尊重して対応していくことが出来る能力が求められています。もしそれができれば、あなたは同僚のことを単なる技術スタッフとしてではなく、いち人間として見ることが出来るでしょう。

プロジェクト以外の話題で会話できるような関係をもつことができれば、よりスムーズに仕事をすすめていくことができるようになるでしょう。

 

8. 締め切りの重要性を知っている

優れたプロジェクトマネージャーは、プロジェクトの締め切りが近づいてくると部下たちの尻を叩くようになります。プロジェクトマネージャーが望んでいなくても外的要因でスケジュールが前倒しになるということもありますが。そんなときでも一度その仕事を請け負ったのだから、たとえ数日夜遅くまで残業したとしても、その締め切りに間に合うようにベストを尽くさなければなりません。

もちろん自分の私生活を全て会社に捧げる必要はありません。しかし、自分が担当しているプロジェクトに大きな価値があることを理解しているのであれば、「なにがなんでもプロジェクトを完遂させてみせる」という責任感を会社に示す必要があります。それができれば、会社からよい評価を得ることが出来るでしょう。

 

9. 柔軟である

プロジェクトと優先順位は様々な理由で変わっていくので、開発者は現時点で何が一番大事なのかを知るために、頭を切り替えていかなければなりません。その変化は、一時的で小さいものかもしれないですし、ずっと続く大きな変化かもしれません。もしそれが一時的なものであれば、変化が落ち着いてからすぐに通常の仕事に戻れるように、ちゃんと覚え書きを残しておきましょう。

しかし、ずっと続くような類いの変化であれば、今起きているその状況をちゃんと把握し、どのようにそれに対応すればよいかを考えないといけません。もしかすると、そういったことを考えることで、あなたの今抱えている仕事が楽になる可能性が多分にあります。いずれにせよ、そういう変化があったときには、イライラを口に出して不平不満を言うよりも、プロ意識を持って対応する、ということがとても重要なのです。

 

10. 自分のプロダクトだと思う

単に技術的な話でいえば、書いたプログラムのコンパイルがうまく通り、動作テストが終わってしまえば、自分の仕事は完了かもしれません。ただその後の自分のプログラム人生を更により良くしていきたいと思うのであれば、そのプログラムのテストやその拡張、ユーザートレーニングに付き合ったり、製品にする上での問題解決といったことを、面倒くさがらず手伝っていくことです。

これは会社のビジネスにとっても良いことですが、さらに自分自身にもいい結果として返ってきます。というのは、そうすることで自分が書いたコードが現実社会に商品として出るまでに、どの程度うまく機能したのかを把握することができるからです。そこで学んだ貴重な経験が、次により良いアプリケーションを作るときのコーディングに生きてきます。

 

いかがでしたでしょうか。

幸いにも、優れたプログラマーを目指す上で、多くの記事やサイトが沢山あります。まずはそういったものからチェックしてみると良いかもしれませんね。

[お知らせ]TechAcademyでは初心者でも最短4週間でエンジニアになれるオンラインブートキャンプを開催しています。活躍できるエンジニアを目指しましょう!