プログラミングを学ぶ目的
「あなたがプログラミングを学習する目的は何ですか?」
当時プログラミングを教えていた私が、これからプログラミングを勉強するぞと意気込んでいる、大学生や社会人に投げかけていた質問です。大抵の場合、次のような回答が返ってきます。
何か自分でアプリを作れるようになりたいから
将来のために専門スキルを磨き、年収を上げたいから
好きな場所で時間に縛られずに働きたいから
もちろん、このような理由もきっかけとしては十分ですが、目的が少し曖昧です。
なぜこのような質問をするかと言うと、
- プログラミングはそんなに簡単じゃない
- 中途半端にやったら挫折するだけ
と言うことを、プログラミングに挫折して苦手意識を持つ前に知ってほしいからです。そして、先ほどの回答をされる方の9割は、プログラミング学習を途中で投げ出してしまう傾向にあります。日本最難関の国立大学卒であっても例外はありません。私自身、過去にプログラミング学習を2度挫折した経験があります。
「なぜ、プログラミングを学ぶのか」
この問いは、これからプログラミングを始めるあなたにとって、とても重要なことです。そのため、私が、Protogramで真っ先に伝えたいと思ったテーマです。
プログラミングを学ぶ難しさ
プログラミングを学ぶ難しさは大きく2点あります。
- 時間的な制約がある
- 言語以前に仕組みを理解することが難しい
1. 時間的な制約がある
「プログラミング学習に必要な時間は300時間」
明確な数値ではありませんが、プログラミング学習の通説として、プログラミング初心者が1つ目の言語を取得するのにかかる時間は、200〜300時間と言われています。個人差はありますが、自身の実体験や教えていた生徒の体感値としては妥当な数値です。
もし学生が、300時間を時給1000円のアルバイトに費やしたとすると、30万円分の機会損失が発生します。
社会人なら学生以上の機会損失の発生と、仮に毎日3時間を捻出できたとしても、3ヶ月半以上にわたって、貴重な時間が失われることになります。
あくまでも机上の計算に過ぎませんが、300時間はプログラミング初心者が1つ目の言語を取得するのにかかる時間であって、業務で通用する学習には、それ以上の時間を捻出する必要があります。
2. 言語以前に仕組みを理解することが難しい
「プログラミングを触る前に挫折する」
どの言語を始めるにしても、まず始めに環境構築をします。書籍やWebの情報を頼りに手順通りに進めて、いざ、プログラミング言語を触ろうとすると、エラーが出て思い通りに動かない。最初からやり直すと、インストールしたアプリのバージョンが合わずにエラーが発生している。簡単なスペルミスをしていてファイルを読み込めていない。など、環境構築の時点でつまずく方が半数以上います。
この環境設定でつまずく方は、手にした情報を鵜呑みにし、目の前で出ている英語のエラーメッセージを読み解かないまま、先に進めようとする傾向が強いです。また、英語やエラーに対しての耐性が低く、自分で調べて解決できない方は、ここでプログラミングに苦手意識を持つ傾向にあります。
対処方法として、「エラーメッセージと向き合う」、「仕組みを理解してもらう」ことが重要です。
「まさか、プログラミング言語を学ぶつもりなのに、言語を触る前につまずくなんて」と思われるかもしれませんが、実際の開発の現場でも当たり前に発生します。
始めたばかりのタイミングで、仕組みを理解した上でエラーを解消した方と、エラーを無視した方とでは、今後のプログラミング学習のみならず、エンジニアとしてのキャリアにおいて、雲泥の差が出ます。大半の方は、エンジニアになる前にプログラミングに挫折することになりますが、始めたばかりの数時間でエンジニアとしての適性があるかどうかが分かると言っても過言ではないです。
なぜ、プログラミングを学ぶのか
私がこの記事で伝えたいことは、優れた目的意識を立てることが重要ではなく、挫折しそうなときにでも、学習を続ける確固たる意志を持ち続けることが重要であると言うことです。
プログラミングを始めようとするきっかけはどういった理由であっても素晴らしいことです。それゆえに、続けるためにはそれ相応の時間と意気込みが必要です。目的が曖昧なままだと、楽なことに流されてしまい、いつまで経っても学習が進まない可能性もあります。
何か自分でアプリを作れるようになりたいから
自分作りたいアプリが、他の手段で実現できないか、検討してみましょう。近年ではNoCodeアプリケーションなど、プログラミングが書けなくても、アプリ開発できる手段があります。
将来のために専門スキルを磨き、年収を上げたいから
300時間を費やしただけでは、望む仕事につくことはまだまだ難しいでしょう。アプリは作れるかもしれませんが、Webサービスのデザインも開発技術も進化しているこのご時世では、個人で開発できることの限界があります。
好きな場所で時間に縛られずに働きたいから
ブログや動画配信など、プログラミング以外にも場所や時間を気にせずできることはたくさんあります。また、リモートワークが一般的になった昨今は、あえてプログラミングにこだわる必要はありません。
プログラミング学習はあくまでも手段であり、目的によっては違う手段でも実現することができます。本当にプログラミングを学びたい理由や、プログラミングでなければいけない理由があれば、どんなに困難な状況にあっても、プログラミング学習を続けるモチベーションになるはずです。
私自身、2度挫折し、プログラミングに苦手意識を持っていましたが、3度目には、覚悟を持って、2ヶ月程度の独学でRuby on Rails, Javascriptを始め、Web開発する上で必要なプログラミングの技術を身につけました。覚悟を決めた背景には、スタートアップを設立するため、自分がプロダクト開発をしなければならないと言う状況がありました。
もしあなたにとってプログラミング学習が本当に必要なものであれば、プログラミング学習は非常に有意義なものとなり、人生を変えうる貴重なスキルとなるでしょう。
プログラミングを続けるためには
「しっかりと時間をかけて、プログラミングの仕組みを理解すること」
プログラミングを学ぶことに近道はありません。ですが、一度身につけてしまえば、一生もののスキルが身に付きます。1つでもプログラミング言語を身につければ、それ以降に学習するプログラミング言語を身につけるのに100時間もかからないはずです。また、一度エンジニアとしてのキャリアをスタートすれば、理想通りの働き方に近づけるでしょう。
「貴重な時間を割いてまで、本当にプログラミングを学びたいと思うのか。」
「初歩的なことで詰まっても根気強く、トライ&エラーを繰り返せるか。」
この2つの問いに、もし迷うようであれば、必要なタイミングが来るまで、プログラミングのことは忘れてください。痩せたい気持ちがあるのに、スイーツに手を伸ばしてしまう。ジムを契約しながら、毎週ジムに通わない。やろうと思ってやらないことって、精神衛生上、不健全だと思いませんか。
もし、痩せようとしなければ、運動も食事制限もしなくても良い。ジムを解約すれば、ジムに行かなくても良い。プログラミングも同じことです。やる必要があると判断する時まで、無理にはじめる必要はないのです。
エンジニアに向いている人の特徴
参考までに、未経験でもエンジニアに向いている人の特徴を箇条書きしました。
- 人より詳しい特定の知識を持っている
- 興味のある1つのことだけに没頭できる
- わからないことはとことん調べる
- 見落としそうな細かい情報でも気づく
- 黙々と作業することが好き
- マネジメントはしたくない
- すぐ人に頼らない
これら全て一言でまとめると、職人気質な人。エンジニアとしての適性があるかもしれないので、プログラミング学習をお勧めします。また、プログラミングの向き不向きの判断に、学歴はあまり参考にならず、プログラミングに適した論理的な思考力をお持ちであれば、将来の活躍も見込めます。
余談ですが、プログラミングに挫折する方が多い一方で、決意を固めなくても、楽々とプログラミング学習し、有名IT企業に就職した方も中には存在します。冒頭の「あなたはなぜ、プログラミングを身につけたいのですか?」という質問すると、純粋に「楽しいから」「簡単な言語を触ってみて興味が湧いた」など、とてもシンプルな回答が返ってきます。
実際の開発現場でも、周りのエンジニアに週末の過ごし方を聞くと、趣味でプログラミングしていたという方は多いです。仕事が趣味の延長線と言えるくらい、好奇心を持って開発に向き合える方であれば将来的にも活躍が期待できます。
プログラミング学習が苦にならないというのは、これからエンジニアとしてのキャリアを歩む上で、最も重要な要素となるので、是非、プログラミングを始めてください。
プログラミングスクールの選び方
転職を検討中の方向け
フリーランス・副業で活躍したい方向け
教養・キャリアアップしたい方向け
給付金について詳しく知りたい方向け
初心者向け学習方法一覧はこちら
- プログラミングを学ぶ目的
- プログラミングを学ぶ難しさ
- 1. 時間的な制約がある
- 2. 言語以前に仕組みを理解することが難しい
- なぜ、プログラミングを学ぶのか
- プログラミングを続けるためには
- エンジニアに向いている人の特徴
- プログラミングスクールの選び方