プログラマの適性とは何か?現役エンジニアが考える素質とスキル。

プログラマの適性とは何か?現役エンジニアが考える素質とスキル。

「プログラマに適性は存在するのか?」

「もし存在するするならば、それはどういった性質なのか?」

「その性質を持ち合わせていなかったとしても、それらは努力でカバーできるのか?」

プログラマとして働く人であれば、一度はプログラマの適性や素質といったことに考えを巡らしてみたことがあるだろう。

この記事では、ドイツで現役プログラマとして働く著者が、プログラマの適性や素質について自分の経験を基にまとめてみた。

プログラマの適性とは?

プログラマに適性は存在するのか?

まずは「プログラマに適性は存在するのか?」という疑問から始めよう。

答えは明確にYESだ

著者はプログラミングを最初に書いた時から、プログラマには向きが不向きがあると考えており、その考えは経験を積めば積むほど確信に近づいている。

プログラミングの授業では、生徒間で理解のスピードに大きな差が生まれるし、考えても全然理解できないという人も少なからずいる。

著者が考えるプログラマの適性は以下の2点だ。

  • 論理的思考ができるかどうか?
  • 集中力と粘り強さ

それぞれを詳しく見ていこう。

論理的思考ができるかどうか?

よく言われる点だがプログラミングでは「論理的思考」ができることが重要だ。

プログラムはコードに記述したその通りに実行される

そこには曖昧な振る舞いは存在しないし、もしエラーが発生したならばそれは99.99%人間によるミスである。

それらのミスは「Aというミスがあったため、Bというエラーが発生した」といった因果関係を説明できるものである。

これらの因果関係を正しく理解できるのが論理的思考力だ

プログラマはその勤務時間の多くを技術的な問題の解決に費やす。その問題を解決するためには直感や経験とともに論理的思考力が重要になる。

この論理的に思考するのはパズルゲームなどが好きな人にとっては結構楽しむことができるが、そもそも考える事を苦痛と感じる人間にとっては拷問でしかないだろう。

集中力と粘り強さ

プログラマにとってさらに重要なのが「集中力と粘り強さ」だ。

プログラマはコードを書くときは、脳の短期記憶をフルに使って頭の中でプログラムの動作をイメージしなければならず、並外れた集中力が必要となる。

集中力が切れればミスが起こりやすくなるし、コードに対する気遣いといったものも失われていくだろう

また、集中力と並んで重要なのは粘り強さだ。

プログラマはひとつのバグに対応するために数日間を費やすといったことがまれにある。

これはとても精神的に負荷がかかる作業であり、人一倍強い粘り強さが無ければ投げ出してしまうだろう。

プロジェクトを完成させるためには、数多くの技術的な困難が待ち受けている。それらをクリアするために一番に武器となるのは本人が持ち合わせる「粘り強さ」だろう

プログラマに必要なスキルは?

先章ではプログラマの適性について語ったが、もう少し具体的にプログラマにとって必要なスキルを挙げてみよう。

著者が考えるプログラマに必要なスキルとは以下の4つだ。

  • 英語
  • 数学
  • ITに関する知識
  • コミュニケーション能力

英語

プログラマのに必要なスキルとして真っ先に挙げたいのが英語だ。

プログラマが英語を必要とする場面は思っている以上に多く、英語力が不十分ならば業務をこなすためのハードルは高くなるだろう

  • ドキュメントを読むとき
  • バグの原因を調べるととき
  • エラーの内容を理解するとき

といったようにプログラマは毎日のように英語を使わなければならない。

数学

プログラマに数学は必要かという点についてはたびたび議論の対象となるが著者の考えはYESだ。

大学受験で必要となるような高度な数学の問題を解く必要は無いが、中学生レベルの数学を理解していなければプログラマとしての業務を遂行するのは難しいだろう

プログラムが動作する原理は数学そのものであり、もし大学で情報工学を学ぶなら最初の一年は数学を習うこととなる。

これは先の章で挙げた論理的思考とも関わってくる。

ITに関する知識

プログラマとして働くのであれば、コンピュータやネットワークに関する知識も持っていたほうがいい。

ITの世界で働く多くの人はプライベートでも多くの時間をPCに費やし、困ったことがあったら自分で調べて自分で解決しているだろう。

プログラマが業務時間内にPCを組み立てることは少ないとしても、コンピュータの基礎教養は身に着けておきたい。

コミュニケーション能力

プログラマにとってもソフトスキルは大事だ。

プログラマは会議に参加することも多いし、人に何かを説明する能力、意見と意見を建設的に戦わせもっとも妥当な正解を選ばなければならない。

また、他のプログラマのミスや潜在的なバグなどに気付いたときはそれを報告するのもプログラマの仕事だ。

プログラマの能力を測る公式

最後に著者が考える「プログラマの能力を測る公式」を紹介したい。

それはずばり、

  • 地頭の良さ ✖️ 技術に対する情熱 ✖️ エンジニアとしての経験年数

それぞれについて詳しく見ていきたい。

地頭の良さ

僕がプログラマとして数年間この業界を見てきて強く感じたのは、プログラマの世界にはそもそも地頭のいい人が多いということ。

ここでいう頭の良さはもちろん学歴などでは無く思考能力の高さ。IQといった数値で表せる類のものだと考えていいだろう。

彼らと話をしてみれば分かるが、プログラマは頭の回転が早く物事の本質を理解するのがずば抜けて早い人が多い。

技術に対する情熱

優れたプログラマは技術に対する情熱が強い。

自作PCを使ったりPCゲームが好きだったり、プログラマになる以前から日常的にPCと強い関わりをもっている人が多い

プログラミングの世界は技術の移り変わりが早く、常に新しい技術を習得する必要がある。

時にはプライベートな時間も割いて、技術の勉強や情報収集にあてなければならないこともあり、そもそも勉強するのが苦なようでは続けるのが難しいかもれしない。

今も昔もプログラマの世界はフリークのための世界なのだと思う。

エンジニアとしての経験年数

3つ目はエンジニアしての経験の長さ。

最後に持ってきたが、これがもっとも重要なポイントだろう。

プログラマの世界では、年収を決定するもっとも大きな要因は学歴でも年齢でも無く「エンジニアとしての経験年数」だ。そして、これに関しては世界的に見ても変わらない。

つまり、プログラマという能力を測るのが難しい世界では、経験こそもっとも信頼できる指標だと多くの人が考えているということだろう。