「私にはプログラミング学習の才能や適性がないかもしれない」と考えてしまうことがあります。
特にプログラミング学習では以下のことを感じてしまいます。
●プログラミング学習での心配事
・数学が苦手だと、プログラミングを習得できないのではないか?
・論理的思考力がないと、プログラミングを理解できない
・自分にはプログラミングのセンスがないかもしれない
この記事では、上記の悩みを解決していきます。
先に結論をお伝えすると以下です。
●この記事の結論
・プログラミング習得において才能があるほうが良い
・天才たちと比較しないこと
・プログラミングを学ぶ目的や意欲が一番大切
それでは、プログラミング習得における「才能や適性とは何か?」と「適性がない人はどうすればいいのか?」についてお伝えします。
- プログラミングの才能・適性とは? プログラマーに向いている人の5つの特徴
- 才能1|数学的センス
- 才能2|論理的思考力(抽象化と具体化)
- 才能3|コミュニケーションセンス
- 才能4|英語
- 才能5|動機付けが強い(モチベーションが高い)
- プログラミングが難しい・向いていない人が知っておくべき3つのこと
- プログラミングは無理・できないと考えているうちはできるようにはならない
- 才能や適性が全てそろっている人はいない
プログラミングの才能・適性とは? プログラマーに向いている人の5つの特徴
プログラミング学習を始めたばかりだと、才能や適性について気になってしまいます。
たとえば、プログラミング習得が遅い人からすると、「自分には才能がないかもしれない」と思いがちです。
しかし、才能(センス)や適性について理解している人は多くありません。
そこで、プログラミング習得に必要な才能や適性について説明します。
以下の5つがプログラミング習得において必要です。
●プログラミングの才能や適性
才能1|数学的センス
才能2|論理的思考力(抽象化と具体化)
才能3|コミュニケーションセンス
才能4|英語
才能5|動機付けが強い(モチベーションが高い)
以下で一つずつ説明していきます。
才能1|数学的センス
数学的センスはプログラミングでは大切な要素です。
なぜなら、高校数学で学んだことはプログラミングでも使うからです。
たとえば、以下の表は「プログラミングの考え方」と「高校数学で学ぶこと」の対応表です。
上記の表で、プログラミングの「変数」は高校数学で学んだ「文字式」と考え方は同じです。
高校数学をやってきた人は、「任意の値 x とおいて方程式を作る」というように問題を解いてきたはずです。
この「任着の値 x 」こそプログラミングの変数という考え方です。
他にも、高校数学の場合分けを理解していれば、プログラミングの分岐の考え方は難しいものではありません。
実際、私は「変数の考え方を見たとき、高校数学でやった文字式のことだな」とピンときました。
このように高校数学が得意だった人は、プログラミングの考え方では数学的思考が活かせることは多いです。
しかし高校数学が苦手で、文字式、場合分け、行列、数列、確率・統計が理解できなかった人はプログラミングでも苦労することになります。
才能2|論理的思考力(抽象化と具体化)
プログラミングでは論理的思考力がある人ほど有利です。
なぜなら、プログラミングでは順序立てて考えていく必要があるからです。
プログラムという抽象的なものを具体的に分解していくのです。
たとえば、システム構築をする場合は、以下のようにフローチャートのようにプログラム処理を具体化していく必要があります。
実際のプログラミングでは、このフローチャートのように、プログラムで何をどのような順番で処理するかを考える必要があります。
そして、何をどのような順番で処理するプログラムを作成するか考えるときに、論理的思考力が試されるのです。
論理的思考力が低いと、抜け漏れの多いフローチャートになってしまい、想定外のエラーが出てきます。
才能3|コミュニケーションセンス
プログラミングを行う上で、コミュニケーションセンスは関係ないように見えます。
しかし、実際はコミュニケーションスキルは重要な要素です。
なぜなら、コミュニケーションスキルがないと相手の要望を理解できないからです。
そもそもプログラミングは、お客さんが面倒だと感じる仕事を自動化するための行われます。
たとえば、以下はヤフオク情報をエクセルに自動で書きだすプログラムです。
これは、情報を一つ一つコピペするのを面倒に感じているお客さんの仕事を自動化するためのものです。
つまり、プログラミングはお客さんの要望を達成するための手段なのです。
そのため、お客さんの要望を確実に理解する必要があります。
たとえば、お客さんの要望が「ヤフオクとアマゾンの情報を比較したい」ということであれば、ヤフオク情報の取得だけでは不十分です。
場合によっては、「アマゾンの情報を取得し、ヤフオクとアマゾンの情報を比較し、より安い方を提示する」ことまで自動化するのがいいかもしれません。
このように、プログラミング作成ではお客さんの要望を聞きだす必要があるのです。
そして、お客さんの真の要望を聞きだすにはコミュニケーションスキルが大切になってきます。
才能4|英語
プログラミング習得では、英語ができるとラクになることがあります。
なぜなら、英語ができると海外の情報も取得できるからです。
たとえば、Google Apps Scriptというプログラミングを使ってウェブサイトにログインするプログラムを作りたいとします。
このとき、「google apps script ウェブサイト ログイン」で調べると以下のような情報が出てきます。
しかし、自分の求める情報が出てこないことは少なくありません。
このとき英語の知識があれば、「google apps script website login」と調べることも可能です。
そうすると、以下のような検索結果が返ってきます。
このように英語が使えると、自分の求める情報に出会える可能性が上がります。
才能5|動機付けが強い(モチベーションが高い)
プログラミングでは学習の動機が大切です。
とくにプログラミングを通じて達成したいことが明確であるほど、勉強が進みます。
たとえば、私は人に認められたいという欲求で勉強を始めましたし、友人は会社の面倒な作業をラクにするためにプログラミングを学習しました。
人それぞれで勉強の目的は違いますが、必ず何か理由があるはずです。
その理由が強いほど、プログラミング習得の可能性は高まります。
詳しくは以下の記事で紹介しています。
ぜひ合わせて読んでみてください。
もう一度プログラミング学習における才能や適性について紹介します。
●プログラミングの才能や適性
才能1|数学的センス
才能2|論理的思考力(抽象化と具体化)
才能3|コミュニケーションセンス
才能4|英語
才能5|動機付けが強い(モチベーションが高い)
プログラミングが難しい・向いていない人が知っておくべき3つのこと
プログラミング学習をしていると、難しいと感じたり向いていないと考えてしまったりすることがあります。
そのような不安を感じてしまう人に、以下の注意点を知ってほしいです。
●プログラミングが向いていないと感じる人に知ってほしいこと
注意点1|天才プログラマーと比較しない
注意点2|センスのある人ほど何千時間もコーディングしている
注意点3|文系と理系はプログラミングでは重要ではない
それでは以下で一つずつ説明していきます。
注意点1|天才プログラマーと比較しない
世の中には天才プログラマーがいます。
それこそ10代でプログラミング勉強を始め、頭角を現す人がいるものです。
しかし、そのような人と比較する必要がありません。
特別な才能をもった人は、その人にしかできない特別な仕事をします。
例えば、才能がある人はFacebookやGoogleのような大企業でプログラマーとして働いて世の中に貢献します。
それでは私を含めた凡人プログラマーがそこまで出来るか? というと難しいです。
ただ、自分のできる範囲で貢献することはできます。
それは会社の仕事で貢献するかもしれませんし、フリーランスで仕事を発注してくれる人への貢献かもしれません。
実際、私も小さな会社のプログラミング仕事を受注したことがあります。
依頼していただいた人には喜んでもらい、私も嬉しかったのを覚えています。
このように天才は天才の仕事をしますし、凡人は凡人の範囲で仕事をすればいいのです。
自分が天才であろうが凡人であろうが、世の中に貢献するのは同じです。比較する必要はないのです。
注意点2|センスのある人ほど何千時間もコーディングしている
勉強をしていると「私はプログラミングが向いていない」と感じてしまうことがあります。
しかし、一つ覚えておいてほしいことがあります。
それは、センスのある人ほど何千時間もプログラムを書いていることです。
例えば、プログラマー歴10年の友人は一日10時間以上もプログラムを書いていることもあります。
センスと実績がある人で、これだけの時間をやっているのです。
これより少ない時間しか勉強していないのに、「自分にセンスはない」と考えるのは早いです。
注意点3|文系と理系はプログラミングでは重要ではない
文系と理系でプログラミングの能力に差があると考える人がいます。
しかし、文系と理系に差はありません。大切なのは上記で紹介した5つの才能です。
文系であっても論理的思考力が高ければ、プログラミング適性はあると言えます。
実際、私の知り合いは40代で文系出身の人がプログラミングを勉強し、会社のプロジェクトでプログラムを書いて活躍しています。
また、派遣社員であってもプログラミングを学んで転職した人もいます。以下で詳しく紹介しています。
このように文系であってもプログラミングを習得できる人はできます。
逆に理系であってもプログラミングを習得できない人もいます。
このように文系か理系かどうかは関係ありません。
プログラミングは無理・できないと考えているうちはできるようにはならない
プログラミング学習には適性や才能に左右される部分はあります。
例えば、私の友人で数学な苦手な人はプログラミングの変数の考え方を理解するのに半年かかりました。
一方で、数学が得意な私の友人はプログラミングの変数は数日で理解しました。
このように数学的センスで理解の速度は大きく変わります。
しかし、この話を聞いたあなたには私は問いたい。
「あなたは数学が苦手だから、プログラミングの勉強をやめますか?」
もし、「はい」と答えるなら、プログラミング学習を辞めたほうがいいです。
なぜなら、才能がある人もプログラミング作成ではいくつも壁(カベ)があるからです。
それこそプログラミング歴10年の人でさえ、エラーの原因が分からなくて数日解決できないこともあります。
そのため、「数学が苦手だから勉強やめたほうがいいかも」と感じるなら、プログラミング学習はきっぱりやめるほうがいいです。
才能があるかないかで悩むのであれば、プログラミング勉強にムダな時間を使わないためにも辞めるほうが賢い選択です。
才能や適性が全てそろっている人はいない
この記事では、以下の5つの才能がプログラミング学習には影響があるとお伝えしました。
●プログラミングの才能や適性
才能1|数学的センス
才能2|論理的思考力(抽象化と具体化)
才能3|コミュニケーションセンス
才能4|英語
才能5|動機付けが強い(モチベーションが高い)
5つの才能を全てそろえている人はほとんどいません。
とくに、数学的センスや論理的思考力は努力して変えられるものでもありません。
また内向的な人が、コミュニケーションセンスを身につけるのは簡単ではないです。
このようにプログラミング学習においては、あきらめたくなる理由がいくつもあるのが現実です。
しかしあきらめる人が多いからこそ、プログラミングを使いこなせるようになったときに有利になります。
たとえば、私の友人は部署にプログラミングを使える人がいなかったので、部署の仕事を自動化し周囲の評価を上げました。
その結果、年収アップを達成したのです。以下で詳しく紹介しています。
多くの人が挫折するからこそ、プログラミングを使えることで自らの価値を高めることができます。
もちろん、勉強の過程で「プログラミングの才能や適性がない」と感じてしまうこともあります。
ただセンスは変えることができなくても、学習の動機を見直すことで、自分が求めるプログラムを作成することは可能です。
このようにプログラミングの才能や適性のせいにしてあきらめるのではなく、コツコツ勉強するのが大切と言えます。
お勧め記事
→プログラミングのやる気やモチベーション維持維持について
→プログラミング勉強を始める前に目的や目標を見直すべき
→プログラミング学習では正しい努力が必要
→高度なITスキルよりタイピングやショートカットキーを学ぶほうが重要