プログラミングを学ぶためには、才能は必要なんでしょうか?
こういった疑問にお応えします。
プログラミングに限った話ではなく、何かを始めるさいに、覚えが良い人と悪い人がいることは事実です。
でも、最初に覚えが良くても、良い結果に繋がるとは限りません。
プログラミングを学ぶ上で、才能をどこまで意識する必要があるんでしょうか?
今では私も10年ぐらいの経験がある(多分)立派なエンジニアですが、私の苦い経験も踏まえて、説明していきたいと思います。
本記事の内容
学生の頃の苦い経験
私は大学時代に農学部に所属していたのですが、2単位だけITに関するものがあり、VBという言語を勉強しました。
ところが、私にとってプログラミングはチンプンカンプンでした。
先生とアシスタントの人がいるにも関わらず、全くわかりません。
特に難しかったのは「for」と「関数」だった記憶があります。
また、内容は楽しそうなweb業界とは違って、情報処理に偏っていました。
大学の講義なので、当然と言えば当然です。
「モンテカルロ法」を習って、「なんのこっちゃ?」と思った記憶があります。
基本情報処理のアルゴリズムに出てくる問題で、最初に学ぶ内容としては、難しい部類に入ります。
一年目は単位を落としました。
それが必須でなければ二度と勉強するはずもなかったのですが、必須なので逃げることはできません。
二年目も落として、ようやく単位が取れたのは三年目でした。
ホントに泣きそうだった記憶があります。
他の生徒達に比べて、明らかに才能の欠片も感じられませんよね?(笑)
研修時代の苦い経験
大学を卒業後に社会人になり、営業として働き始めたのですが、営業は嫌になって辞めました。
次に入社したのが、派遣系の会社です。
一ヶ月間のLAMP研修を受けたのですが、ここでもサッパリわかりませんでした。
LAMPとは、Linux、Apache、MySQL、PHPの頭文字をとったものです。
初心者のための研修でしたが、同期はすでに基本情報処理を取得しているような人達が多く、ここでも敗北感を味わいました。
非常に辛かった記憶があります。
当時、自分に才能があるなんて思ったことは一度もありません。
社内ニートと呼ばれながら、必死に勉強していました。
あなたの目指すゴールは何か?
当時、友人と話していた時に言われて、印象に残っている言葉があります。
「プログラミング言語の習得は10代の頃が一番よくて、20代後半からプログラミングを始めても優秀なエンジニアにはなれない」と言った内容です。
それを聞いて、「そうかもしれないな〜」などと思いながらも、頑張って積み重ねていけば、食べていけるはずだと願っていました。
習い事全般に当てはまる話ですが、私が今から何かを始めても、決してトップクラスにはなれません。
でも、才能がなくても、それなりのレベルにはなれます。
もし30代になって野球を始めたら、楽しめるレベルにはなれます。
でも、プロにはなれません。
それは囲碁や将棋といったゲームでも同様です。
ただし、このような裾野が狭いジャンルとプログラミングを決して一緒にして考えるべきではありません。
なぜならば、エンジニアの需要は毎年、増加しているからです。
経済産業省の試算によると、2030年には最大で70万人のエンジニアが不足すると言われています。
それは、あなたが日本や世界のトップクラスのエンジニアになれなくても、お金を稼ぐことができることを意味しています。
あなたのゴールが、プログラミングで食べていくことならば、それで十分なはずです。
つまり、私の友人の発言は事実ではあるにしろ、全く意味のない発言でした。
自分の目指すゴールと、それに求められる才能がなにかを改めて考えるべきです。
ちなみに、IT企業がここ20年間でどう成長してきたのかを知りたい方には、こちらの記事をオススメします。
目指す職種によって必要な才能は異なります
ここまで読んだところで、それでも心配な人はいると思います。
その場合は、文系でもエンジニアになれますか?という記事を読んで、エンジニアごとに必要な基礎能力を確認してみて下さい。
デザイナー、フロントエンジニア、バックエンドエンジニアに求められるそれぞれの基礎能力と才能は、異なることがわかるはずです。
この業界でエンジニアが一人前になるために、特別な才能が必要とされるとは決して思っていません。
でも、自分の向き不向きを考えて職種を選ぶことは大事なことです。
そのためにも、まずは少し勉強をしてみて、手応えを確認してみましょう。
最初に勉強を始める時は、オンラインの学習サービスを使うことをお勧めします。
もしくは、無料のプログラミングスクールを利用するのもいいと思います。
プログラミングは素晴らしい世界です。
是非とも、多くの人がプログラマになることを祈っています。
Good luck for your engineer life!