「天才プログラマー」という言葉をたまに聞きます。
「プログラマー=天才」というイメージが、まだ世間のどこかに残っているのでしょうか。
いや、すべてのプログラマーが天才などということが、あるはずはありません。
プログラミングを過度に難しいものと考え、最初から学びをあきらめてしまっている人が多いようです。
しかし、学校教育でプログラミングが必修化される流れにあることからもわかる通り、それは誰にでも学習可能なものなのです。将来は、読み書きや計算と同じように誰もが身に着ける基本技能になっていくでしょう。
あらゆるスキルと同様に、プログラミングにも求められる適性というものはあります。けれどもそれは、皆さんが思っているほど特殊なものではないかもしれません。
プログラミングに適性がある人の特徴
それではどのような人にプログラミングの適性があるのでしょうか。どのレベルを目指すのか、などによっても違いますが、おおむね以下のようなことにいくつか当てはまれば、適性があるとみてよいでしょう。
心配いりません、大体の人にある程度備わっているものばかりです。
パソコンを触るのが好き
プログラミングは基本的にパソコンで行います。どれだけスマホが普及しようとも、その点は当分変わらないでしょう。パソコンが好きである、パソコンの前に何時間でも座っていられる、というのは大事な適正です。
「パソコンを自分の力で思い通りに動かす」この言葉に強く惹かれるなら、すぐにでもプログラミングを始めるべきです。
パーツを買ってパソコンを組み立てたことがある、というならば下地としては理想的です。パソコンの内部構造や動作の仕組みについての知識は、プログラミングに必ず役立ちます。
論理的に考える力がある
プログラムは、論理の塊です。もっと言えば、論理「しか」表すことができません。論理的思考力に 長けている人は、プログラミングに有利です。数学や、数独などの論理系のパズルが好きな人は、プログラミングに ハマる可能性大です。
論理的思考力は、数理能力に限りません。文章を読んでその構造を理解する、いわゆる「読解」も論理の力です。「トーストが焦げてしまった、なぜだろう?」などと考えるのも、論理的思考なのです。
つまり、論理的思考力は大体の人に何らかの形で備わっています。そしてそれはまさにプログラミングをすることによって伸ばすことができる能力です。
自分のスキルアップに妥協しない
プログラミングのスキルには最終到達点というものが存在しません。日々新しい技術が生み出されているため、すべてを学びきるということが不可能だからです。「もうここらへんでいい」と思った瞬間から、それまで身に着けたスキルはどんどん陳腐化する運命にあります。
特にIT業界の最前線で仕事をし続けようと思うならば、常に学び続けるという決意が必要です。
継続力・根気強さ
プログラムは論理の産物ですが、かなりの試行錯誤を経て作られるものでもあります。書いてはテストし、修正してはまたテストし、ということを限りなく繰り返します。間違えても間違えてもめげずに直す、そういう根気強さが必要です。
また、学習の過程でも何度も壁にぶち当たることでしょう。そこで投げ出さず、粘り強く取り組めるかが、プログラミング習得のカギとなります。人より覚えがはやく、するすると先に進んでいく人ほど、最初の壁で挫折してしまうことがあります。大事なのは器用さより継続力です。
情報処理能力
すべてのプログラムは、インプットとアウトプットを繰り返します。同様に、それを作る人間も常にインプットとアウトプットを求められます。
わからないことがあって検索し、必要な情報を取捨選択し、コードに落とし込む。業務では、仕様変更の要求が来て素早くその内容を理解し修正案を提出する。こういうことが発生し続けます。スピード感をもって情報を処理することが必要です。
英語力
プログラミング言語とは、コンピューターへの命令を人間にわかる言葉に翻訳したもの、ということができます。その「人間にわかる言葉」というのは、主に英語です。極言すれば、いま世界で使われている主なプログラミング言語は、特殊な形をした英語です。せめて中学レベルの英語を理解していないと、苦しくなります。
また、使える情報源が英語だけ、ということもよくあります。何かと英語の壁にぶつかるのが、日本人にとってのプログラミングなのです。
ただ、翻訳エンジンの発達により、この壁は以前よりは低くなりつつあります。
遊び心
ここまでは堅めの話をしてきましたが、 少し柔らかめの話をします。
プログラミングというものは、真面目な学問の側面を持ちながら、実はとても楽しい遊びでもあります。子供が砂場で夢中になって遊ぶように、何時間もコンピューターと、言語と戯れる。それもまた一つのプログラミングの姿です。童心にかえって遊ぶように学ぶことができる人は、プログラミングに向いています。
最初のプログラムを動かしてみて、感動できるかどうか、というのも大事なポイントです。
「自分でコンピューターを操った、すごい!」と思える人は、継続して学び続けられる可能性が高いのではないでしょうか。
文系でもプログラミングを習得できるのか
日本には、学生を文系と理系に分ける独特の習慣がいまだに残っています。それは時に、「文系だから」「理系だから」という、自分の能力に関する思い込みを生みます。それで学びを躊躇してしまうのはあまりにもったいないことです。
少なくとも上の適性のところで挙げた項目の中には、理系の人にしか備わっていないものはひとつもありません。文系だからプログラミングができない?そんなことは全くありません。
文系出身のエンジニアは多い
現実に、いわゆる文系学部出身のSEは多くいます。慢性的な人材不足から、企業も文系だ理系だと区別している余裕がないという事情はありますが、実際に活躍している人がいるという事実は、「プログラミングは理系のもの」という世間一般の認識を覆すものです。
上でも述べましたが、プログラミングに必要な論理的思考力というものは、数学や理科といった理系科目だけで養われるものではありません。国語も英語も社会も、すべては論理につかさどられているのです。
文系の有利さ、というものもあります。文系の学生として就職し、事務職などを経た後にSEに転職するケースでは、前職の業務知識が役に立ちます。業務知識を持ったSEとして、活躍の場が広がります。
実際のプログラミングは簡単な計算程度しかしない
プログラミングには数学の知識が不可欠、と思っている人が多いようです。しかし世の中の大半のプログラムには、高度な数学は使われていません。使ってもせいぜい四則演算まで、ということが多いのです。
コンピューターを使う大きな目的は、人間がやるには手間や時間がかかりすぎることを、大量に素早く処理することです。何十万回もの足し算引き算を一瞬で終わらせる、というようなことこそが、コンピューターの本領です。
大量の計算をするとか、とんでもない量のデータを覚えておくとか、そういういわば「力仕事」をコンピューターに任せよう、というのがプログラミングの主たる目的です。内部でやっているのは小学校程度の計算、ということも多いのです。
誤解のないように言い添えれば、数学の知識が役に立たないと言っているのではありません。高校数学程度がわかっていれば、とても役に立ちます。特に「集合と理論」のところは一度復習しておくことをお勧めします。
一部の分野では理系の知識が必要となることも
もちろん、理系の知識が必要な分野もあります。例えば機械を動かすためのソフトウェアを作るには、当然ながら機械の知識が必要です。AIのエンジニアになろうとするなら、大学で習うような数学は身に着けておいたほうがいいでしょう。
そういう理系の専門性を要する仕事もたくさんあるのですが、しかし世のプログラム開発案件全体から見れば、ほんの一部といってよいでしょう。
プログラミングを習得するために意識すべきこと
プログラミングは、特殊な才能が必要なものでも、理系の人だけのものでもありません。誰にでも学習が可能なものです。しかし努力なくして身につくほど簡単なものでもありません。以下のような点を意識しながら、スキル獲得目指して頑張りましょう。
粘り強く学習する
何を学習するにしても、継続するのは大変です。独学の場合はそこが最大のネックといえます。プログラミングでは、誰にでも訪れる難所をいかに乗り越えるかが、継続するか挫折するかの分かれ目になりがちです。ときには粘りと根性も必要です。
エラーはとりあえず検索してみる
プログラミングをしていると、たくさんのエラーに出くわします。それで初学者は恐怖の ドン底に陥ります。
最初のうちは、エラーが出たらエラーメッセージをまるごとコピペして検索してみることをお勧めします。メッセージも検索結果も英語だらけでわからない、というときは、Google翻訳で翻訳するのも手です。
解決策にたどり着くのは大変ですが、その過程自体が勉強になります。繰り返すうちにだんだんと対処法が身についてきます。
質問できる環境を作る
検索するなどして調べても、どうしても自力では解決が難しい問題もあるでしょう。そういうときは誰かに質問したいところです。
喜んで質問に答えてくれるプログラミング上級者が周りにいれば、その人に頼るのがベストです。そういう存在はモチベーションの維持にもつながりやすく、学習を強力に後押ししてくれます。
そういう良いコーチに恵まれない場合は、ネット上に質問の場を求めることもできます。各プログラミング言語ごとにコミュニティーがたくさんあって、心強い先輩が大勢います。ただ、そこが初心者にやさしい場なのかはちょっと注意が必要かもしれません。
ひとりで挫折しそうならスクールを活用する
とかく独学は挫折しがちです。ひとりで学習の計画を立てたりそれを実行したりするのが苦手な人もいるでしょう。そういうときは、プログラミング・スクールを活用することも検討してみましょう。
対面やオンライン、フリーランス向けや転職志望者向けなど、様々なタイプのスクールがあります。業務レベルのスキルが身につくまで優秀なエンジニアが指導してくれるとか、いつでも質問し放題とか、未経験者にやさしいサービスが色々受けられます。
まとめ
プログラミングは決して特殊な才能のいるものではありません。地道な努力によって習得できるのです。あなたにも、きっとできます!