プログラミングの習得に必要な、たった一つの才能【平凡な僕の気づき】

プログラミングの習得に必要な、たった一つの才能【平凡な僕の気づき】 エンジニアの紹介
プログラミングの習得に必要な、たった一つの才能【平凡な僕の気づき】

こんにちは。

この記事を読んでいるあなたは、プログラミングの勉強をやり始める前、あるいは勉強しているときに、

「プログラミングを勉強してるけど、メチャクチャ難しい。何か才能が必要なのかな?」
「プログラミングがうまくいかないし、上達しない。自分には才能がないのかな?」
「プログラミングにはセンスが必要なの?」

このように悩んでいるのではないでしょうか?

プログラミングって、正直、メチャクチャ難しいです。
特にプログラミングを始めたばかりの頃は、いろいろな壁にぶつかってしまい、悩んだり迷ったりしてしまうかもしれません。

時には「自分にはプログラミングの才能が無いのかな・・・?」なんて落ち込んでしまうこともあるでしょう。

そこでこの記事では、そんな風に迷っているあなたのために、以下のような内容をまとめます。

この記事を読んで分かること
・プログラミングに必要なたった一つの才能
・その才能がない場合の対応策
・その他、プログラミングをする上であるといいスキルや適正

この記事を読むことで、プログラミングに必要な才能や適正、スキルを知ることができます。

最後までしっかり読んで、プログラミングの学習を進める上で必要なものを理解してくださいね。

結論: 普通レベルのプログラミングスキルを目指す場合、必要な才能は「努力する」才能。その他の才能は不要。

結論: 普通レベルのプログラミングスキルを目指す場合、必要な才能は「努力する」才能。その他の才能は不要。

それではまず、この記事の結論をお伝えしたいと思います。

前提: あなたがプログラミングで目指すレベル

結論をお話する前に、本記事の前提に関して整理しておきます。

プログラミングに必要な才能は、「あなたがどのレベルのプログラミングスキルを目指すか?によって決まります。

プログラミングを学習して目指すレベルは以下の通り大きく3つに分かれ、それぞれ求められるスキルが大きく異なります。

プログラミング学習で目指す3つのレベル
・1: プログラミングが何となく書ける
・2: 日本の企業に入り、他のプログラマーと同じレベルで活躍する
・3: 世界でトップレベルのプログラマーになり、目覚ましい成果を上げる

今回の記事は、このうち1と2を対象にしているという前提でお話します。

3は、プログラミングでも100人に1人や、1万人に1人という、「スーパープログラマー」のレベルとなります。

この3のレベルだと、「プログラミングができる」だけではなく、効率の良さを追求してより良いアルゴリズムを追求する必要があります。
このレベルでは天才的な発想なども同時に必要になります。

一方、この記事を読んでいるあなたはスーパープログラマーではなく、まずは1や2のレベルを目指すことになるかと思います。

ですので、この記事では、1や2のレベルを達成するために必要な才能がなにか?を中心とした説明になります。

必要な才能は「努力する」才能のみ。その他の才能は不要。

「前提」の部分で説明した1や2のプログラミングのレベルを目指すためには、天才的な思考能力は不要です。

唯一必要なのは、プログラミングを毎日コツコツと勉強する、「努力する」才能です。

何故なら、プログラミングは特に初心者にとって非常に難しいものであり、日々、次々に新しい知識を身につける努力をする必要があるからです。

日常生活では使わないプログラミング言語を覚える必要がありますし、非常に難しいエラーに遭遇することもあります。
また、特定のプログラミング言語を覚えたとしても、時代の流れに沿って新しい知識を吸収し続ける必要があります。

そういった状況を打破するために必要なのが、プログラミングの勉強を「努力する才能」です。
逆に言うと、プログラミングの勉強をする上では、他の才能はなくても大丈夫です。

誰も思いつかないアルゴリズムを思いつ才能は必要ないないですし、プログラミングは他の人との競争ではないため、他の人よりも早く習得できる吸収力も必要はありません、

目の前の分からないことを淡々と調べてプログラミングができる、「努力する」才能さえあれば大丈夫です。

(体験談)頭も要領も悪い僕がプログラミングを習得できた理由と、この記事の信頼性

(体験談)頭も要領も悪い僕がプログラミングを習得できた理由と、この記事の信頼性

大学時代: プログラミングを使ったアート作品作成を頑張っていた

大学時代、僕は卒業研究でプログラミングでアートを作るという卒業制作をしていました。

大学は芸術と工学の中間のような学部を専攻しており、周りにプログラミングをやっている人はあまりいませんでした。

ですので、

・プログラミングとは何か?
・どのようなプログラミング言語を勉強したらいいか?
・効率のいいプログラミングのやり方は何か?

などを他の人に教えてもらうことはできず、全てを手探りでやっていました。

ほぼゼロから独学でプログラミングを勉強したこともあり、正直、効率が良かったわけではありません。

ただ、アートの制作が非常に楽しかったのもあり、毎日コツコツと努力をしていました。
毎日学校の授業が終わったら研究室でプログラミングをするくらいには、好きでした。

まわりの人からは、「本当によく頑張るよね」という言葉を受けていたのは今でも覚えています。
大学生なのにあまり他の学生と遊びに行くこともなく、ひたすらアートを作っていたからです。

効率が悪いながらもほぼ毎日プログラミングをすることで、アーティストとして展示会に出品したり、テレビに出演することができました。

その当時、大学生で展示会に出品したりテレビに出たりする人はほぼおらず、大学生としては非常に高い評価を得ることができたと思っています。

これが、「僕がプログラミングには努力をする才能が必要だ」と言い切る1つ目の理由です。

新卒でエンジニアになった後: 周りの人があまりにできる人が多すぎて落ちこぼれそうになった

大学を卒業した後、メーカーにエンジニアとして入社しました。

大学時代、ある程度プログラミングの勉強をしていたのもあり、「ある程度プログラミングはできる方だろう」と思っていました。

ところが、実際は全くそんなことはありませんでした。
周りの人は非常にレベルの高い人が多く、僕は完全に落ちこぼれ社員でした。

社会人になった直後は仕事のやり方が分かっていないのも辛かったですし、プログラミングのスキルも他の人に全く及ばず、非常に大変な思いをしました。

毎日会社では「使えない新入社員」の扱いを受けており、精神的に辛かった思い出があります。

正直、何度会社を辞めようと思ったかは分かりません。

先輩には、「これ、前にも言ったよね?」と言われることも度々あり、その度情けなさと悔しさでいっぱいでした。

そんな中、僕は家に帰ってから分からないところを調べたり、土日に自分でプログラミングの勉強をしたりして、何とか周りの人に追いつけるような努力をしていました。

もちろん数日や数週間で結果が出ることはなく、入社1, 2年目あたりは「仕事ができないやつ」扱いでした。

ただ、努力をしていれば何とかなるもので、数年も経ってくると「自分の方がプログラミングができる」と思うことも増えてきました。
最終的には、他の人と同じかそれ以上のレベルで仕事ができるようになり、今に至ります。

今となっては、最初は本当に辛かったけど、プログラミングの勉強などの努力をして、本当によかったと思います。

もしあのときに「もうプログラミングは無理だ!」と思って会社を辞めていたら、今頃ソフトウェア開発と全く違う仕事をしていたことでしょう。

ちなみに後日談ですが、僕が入社したときにいた周りの先輩も、大学時代は朝から晩まで研究室にこもってプログラミングをしていたとのことでした。
大学院の論文発表前になると、朝9時から夜の11時までプログラミングをしていたこともあったそうです。

彼らもまた、才能があるわけではなく、プログラミングの勉強を努力してきた人たちだったのです。

この記事は、これまでプログラミングの勉強をひたすら頑張ってきた僕が書いているので、非常に信憑性はあると思っていただいてよいでしょう。

プログラミングの習得に「努力する」才能が必要な理由

プログラミングの習得に「努力する」才能が必要な理由

おそらく、僕は必要以上に「プログラミングの習得」に時間をかけすぎました。

効率のいい勉強をすれば、もう少し楽に習得できたと思います。

そんな改善点は理解しつつも、プログラミングの習得にはある程度の「努力する」才能が必要だと考えています。

この章では、プログラミングを習得するのに努力する才能が必要な理由を説明します。

プログラミングはやり始めのハードルが高く、習得に時間がかかるため

プログラミングは新しい外国語を覚える以上のハードルがあります。

外国語であれば本屋に行って適切な入門書を買ってくればよさそうです。
そして、中身は、「簡単な挨拶が載っているものを買おう」というように、判断することができるかと思います。

これは、あなたがすでに日本語を喋ることができるため、「外国語をどのような順番で学習すればいいか」を理解しているからです。

一方、プログラミングの場合は、日本語とは大きく異なるものとなっています。
使う言葉も、語順も、全く異なりますよね?

結果として、プログラミング言語の初期の習得は非常に難しいものとなります。

この高いハードルをクリアするには、努力は必須となります。

プログラミングは「プログラムを書ければいい」という以上のものを習得する必要があるため

プログラミングを習得するには、以下のようなものをたくさん身につけていく必要があります。

・各プログラミング言語の文法を覚える
・読みやすいプログラムの書き方を覚える
・不具合の修正方法を覚える
・プログラマーとして実際に働く際には、チーム開発もできるようになる 

これらの多種多様なスキルを身につけるには、やはり努力が必要です。
こういったスキルのどれも、短期間で身につくものではないためです。

ちなみにこういったものを網羅的に吸収するのは、プログラミングスクールに通うのが最も効率がよいです。

もちろん必須で通う必要はありませんが、

・本だと情報の鮮度が低く、最新の開発手法を勉強することができない
・Webの教材だと体系立てて理解するのが難しい / チーム開発の経験がしづらい
・独学だと、プログラミング言語の習得以外の部分に手が回りづらい

というような弱点があるためです。
こういったものを効率よく習得するためにプログラミングスクールに通うことで、必要なスキルや経験を身につけることができます。

プログラマーになった後でも大変なことはたくさん発生するため

もしあなたがプログラマーになった後でも、引き続き大変な状態は発生します。

・顧客に無理なスケジュールをリクエストされてしまい、大幅な残業が発生する
・他の人が書いたプログラムの質が低いために、あなたの生産性が落ちてしまう
・突発的な不具合が発生して、土日まで仕事をすることになる

こういったストレスには、常にさらされることになります。

プログラマーはいかなる状態でも、目の前のプログラミングなどの作業を黙々とこなす必要があります。
時には文句を言いたくなることもあるでしょう。

でも、そんな時にでも「自分にできることをやる」と割り切り努力する必要が出てきます。

もしあなたが「努力する才能がない」場合のプログラミングの習得方法

もしあなたが「努力する才能がない」場合のプログラミングの習得方法

ここまで読んでくださっているあなたは、

「やっぱり努力って必要不可欠なのか・・・自分にはプログラミングの習得は無理かな」

と思っているかもしれません。

もしあなたが、プログラミングの学習を全く頑張れないのだとしたら、正直、厳しいと言わざるを得ません。
全く努力できないとすると、これから数多くのことを学ぶための原動力が心もとないためです。

あなたも受験勉強など、過去に1つや2つくらい頑張った経験がありませんか?
あなたがあなた自身のことを「努力できない人間だ!」と思っている場合、そう思い込んでいるだけ、という可能性も高いかと思います。

もし本当に努力が苦手な場合、これをきっかけに頑張ってみるのはいかがでしょうか?

・・・とはいえ、努力するのが苦手な場合、嫌なものは嫌ですよね?笑

そこでここから先は、「できる限り努力したくない!」というあなたでも、プログラミングの学習を効率化することにより、努力する量を削減する方法をお伝えします。

これは、僕が過去に無駄に努力をして、「もう少し効率化できるな」と思える部分をピックアップしています。
これからプログラミングの学習を効率的に進めたい場合、是非参考にしてみてください。

具体的には、以下の工夫をすることにより、プログラミングの学習を大幅に効率化することができます。

・効率のいい独学による学習
・必要なスキルの全体像をプログラミングスクールで学ぶ

僕がプログラミングを勉強し始めた頃は独学をするにしてもあまりいい教材がありませんでした。
また、プログラミングスクールも、今ほど一般的ではありませんでした。

その結果、手探りでプログラミングの勉強をする必要がありました。
今思えば、非常に効率の悪いやり方をしていたな・・・と思います。

もし僕が今からプログラミングの勉強をするのであれば、以下のやり方をとります。

・ウェブでも本でもいいですが、参考となる教材を何回か周回する
・独学では身につかないようなプログラミングに関する知識は、、一度プログラミングスクールに通い、全体像を把握する。

上記2つのやり方をすることで、僕がやっていた数百時間分の努力を一気にショートカットして、スキルをつけることができるでしょう。

ちなみに、「プログラミングスクールに通って全体像を把握する」とは言っても、

・どんなプログラミングがあるのか?
・料金が安く、良心的なプログラミングスクールはどこか?
・あなたに合っているプログラミングスクールはどこか?

こういったものが気になるのではないでしょうか?

そこで、僕のエンジニアの経験を踏まえて、あなたの目的別のオススメプログラミングスクールを以下の記事にまとめました。

この記事を読んでいただくことで、あなたに最適なプログラミングスクールを見つけることができます。

あなたの人生の時間は有限です。
この記事を読み、最大効率で目標を達成してくださいね。

その他、プログラミングに必要なスキルや適正とは?

その他、プログラミングに必要なスキルや適正とは?

ここまでで、プログラミングに必要な才能に関して説明してきました。

最後に、プログラミングに必要なスキルや適正の話をしましょう。

このスキルや適正がなくてもプログラミングの習得は可能ですし、プログラマーになることもできます。
ただ、このスキルや適正があることでプログラミングを習得する間の努力が楽しいものになること間違いなし!です。

あなたにスキルや適正があるかを、一度確認してみましょう。

プログラミングの作業自体を楽しむことができる

まず一番重要な適正が、プログラミングの作業自体を楽しむことができることです。

どう効率化しても、プログラミングの習得には最大で1,000時間の時間がかかります。

1,000時間といえば、1日3時間をほぼ1年間継続するレベルの長さです。
非常に時間がかかりますよね。

1,000時間の時間がかかる理由や、1,000時間の勉強をしても習得できないアンチパターンに関しては、以下の記事を読んでみてください。
【真似するな】プログラミングを1000時間学習しても習得できない方法

 

そこで重要になるのが、「プログラミングの作業自体を楽しめる」ことです。

人間、楽しくない作業をやってもどこかで心が折れてしまいます。

一方、プログラミングの作業自体が楽しめていたり、あなたの作りたいものを作っているとき、なかなかエラーが解決できないときでも辛抱強く乗り越えることができます。

「こんなものを作りたいんだ!」

という意気込みがあれば、プログラミング学習の道中が楽しくなります。

これからプログラミングを勉強する場合や、今プログラミングの勉強で壁にぶつかっている場合、作りたいものを作ってみることをオススメします。

特に、作りたいものを作らずにサンプルコードを周回ばかりして辛い気持ち担っている場合は、作りたいものを作ってみましょう。

「そんなこと言っても作りたいものが思いつかないよ!」という場合は、以下の記事を読んでみてくださいね。

モノづくりが好き

モノづくりが好き

1つ目と近いですが、モノづくりが好きな場合、プログラミングの作業を楽しく感じられるでしょう。

何を作ろうか?というところから考えて、少しずつ自分の理想となる姿につくりあげていく作業を通して、今日はこの部分を仕上げることができた!という達成感や、自分の好きなものが少しずつ出来上がってきている!という、育成しているような体験をすることができます。

慣れてくると、そのどれもが非常に楽しい作業です。

一方で、モノづくりは、ハードウェアにしても、プログラミングを扱うソフトウェアにしても、非常に地道な作業です。

どんなに華やかに見えるものであっても、裏側はエンジニアやプログラマーの地道な努力があります。

そんな地道な作業を楽しめるのであれば、プログラミングに対する適正があると言えます。

論理的思考力がある

特にWebサービスなど複雑なものを作る場合、プログラミング自体のスキルと同時に、論理的思考力があるか?も重要なポイントになります。

「処理Aが行われて、次に処理Bがあり、その次が処理Cで・・・」

というように、プログラミングでは、論理的に流れを追ったり考えたりする必要性が出てきます。

論理的に処理の流れを追うことができなかったり、「面倒だ!」と思ってしまうのであれば、プログラミングに対する適正があまり無いかもしれません。

ただ、論理的思考力は、訓練により身につけることができます

つまり、今、「論理的に考えるのが苦手だな」と思っているとしても、何とかすることができるということです。

具体的には、プログラミングの学習をする中で論理的に考えるクセをつけたり、日常会話や仕事の中で、論理的に考えるようにしてみましょう。

論理的に考えられるようになると、もちろんプログラミングの学習が早くなってきます。
また、プログラミング以外の場面でも、あなたの考えていることをわかりやすく他の人に伝えることができるようになります。

ITスキルがある

プログラミングは、常にパソコンと向かい合う作業になります。

具体的には、以下のようなITスキルがあるとよいでしょう。

・環境変数などのパソコンの設定を変えられる
・パソコンのショートカットを自在に使いこなせる
・ネットワークなどの基礎的な知識がある 

こういった知識やスキルを持っていることで、プログラミングの作業効率が格段に上がります。

これらの知識がない場合、どうしても作業効率が半分くらいになってしまいます。

もしあなたがこれらの知識がない場合は、プログラミングを勉強しつつ、これらのITスキルを身につけるようにしましょう。

問題解決が楽しい

プログラミングの作業は、ほぼ問題との戦いと言ってもよいでしょう。

・プログラミング中に、見たことのないような、そして調べても全く解決方法が分からないようなエラーが出ることがあります。
・大きいプロジェクトに関わっていたり外部のライブラリなどを使っている場合、あなたが何もしていなくても、他の人や外部のライブラリの影響で突如エラーになることがあります。

正直、こういったエラーを見る度に、「またか・・・」と思うのが人間心理です。

ただ、それでも「エラーを解決するのが楽しい!」と思えるのであれば、プログラミングへの適正があると言えます

逆に、「絶対エラーを見たくない」と思うのであれば、プログラミングとはちょっと距離を置いた方がよいかもしれません。

最後に: 一歩一歩努力していこう+効率もできる限り上げていこう

最後に: 一歩一歩努力していこう+効率もできる限り上げていこう

この記事では、プログラミングに必要なたった1つの才能を説明してきました。

プログラミングには、「努力する」才能が重要であることが伝わったのではないでしょうか?

どうしてもプログラミングは習得に時間がかかるため、努力は必要です。
一人前のプログラマーになるためにはかなりの長い時間がかかりますが、一歩一歩、学習を進めていきましょう。

そして、普段の努力に加えて、学習の効率を上げることで、より効果的にプログラミングの習得をすることができます。

具体的には、独学でプログラミングの学習をしつつ、プログラミングスクールに通うことでそれ以外のプログラマーとしてのスキルをつけることをオススメします。

この記事があなたの目標達成に少しでも役に立ったのであれば幸いです。

この記事は以上です。
ここまで読んでくださり、ありがとうございました!

コメント

タイトルとURLをコピーしました