私たちテックジムのスタッフ達は、プログラミング学習によって「自信を取り戻す人」を何百人も見てきました。
「プログラミングスキル」は現在、もっとも人生ロンダリングができるチートです。
それに気づいている人が「プログラミング」に挑戦するわけですが、うまくいく人とうまくいかない人がいます。せっかく気づいたのに「プログラミング」で挫折するのはもったいない。
「プログラミング」は母国語と同様、やれば誰でも身に付くスキルなのです。
そこで今回は、どういうところでつまずきやすいのか、学習のポイントなどを解説してみます。独学の方のほとんどが間違った学習法をしておりますので、参考になれば幸いです。
■間違ったプログラミング学習方法とは?
まずプログラミング学習における「誤解」について解説します。
☑︎「理解する」必要はない
プログラミング学習は赤ちゃんの言語取得に似ています。
赤ちゃんは言葉をきちんと理解しているでしょうか?
私たちですら世の中のことを理解しないで「惰性」で生きています。
ただ理解したつもりでいます。全てのことは、ある程度の経験を積めば、理解したつもりになれます。
プログラミングも書いているうちに、理解したつもりになれます。
「理解」が降りてくるまでにある程度の作業が必要だということです。
☑︎プログラミングはエラーから始まる
赤ちゃんはお母さんとの会話で言語取得するように、プログラマーはコンピューターとの対話で言語を学びます。
それは実行したときに出てくるエラー文です。
「書く→実行する→エラー文を参考にしてまた書く」の繰り返し作業が、早ければ早いほど上達も早まります。
☑︎わかりやすい参考書なんて物は無い
受験業界でよく言われているのが「バカな奴ほど分厚い参考書を買う」という習性。
インプットが多いと勉強した気分になりますが、本当はその逆でアウトプットが多い方が学習効率は高まります。
参考書の日本語を追っかけていると、純粋にコーディングの時間が奪われます。同様に、動画授業も無駄に時間が奪われます。
「コーディング」という作業をサボれば「理解」は降りてこないのに、本や動画で理解しようとするから挫折するのです。
☑︎習っていないから書けないということはない
プログラミングの演習課題を解く時、もし出来なかったら、答えを見れば書くことはできます。
「答えを見て目コピをして、自力で書く」というのは立派なプログラミングスキルです。
単純な短期記憶ゲームと割り切れば、理解できなくても進めることはできます。
ポイントは復習にあります。復習するたびに解法を覚えているところが出てきて、最終的には答えを見なくても書けるようになります。
そのあと、おぼろげながら「理解」が降りてきます。この時も「おおよそ理解したかも」でOKです。
この順序が逆な人が多い。「理解」は後、とりあえず「書ける」が先です。
■プログラミング学習のコツとは?
次に、多くの学習者がやっていないプログラミング学習のコツを解説します。
☑︎時間を意識して解く
時間を測りながら学習をすると効率が高まります。
具体的には15分のタイマー設定をして、その時間内での演習結果を前回の演習結果と比較します。
タイムアウトしたら、次の設問に行く。こうすることで学習ペースを保つことができます。
ここでも「理解」しようとすると時間を浪費をするだけなので、「復習」を前提に時間を切って、次に進みます。
進捗が進まないとだれてきて、挫折しやすい体性になります。
☑︎考える必要はない。調べることが重要。
世の中の全ての解法にはパターンがあります。
プログラミングも決まったパターンがあり、奇抜な解法はありません。
むしろ誰でも書けそうなスキルを前提としたシステムしか作ってませんし、天才は必ずしも必要とされてません。
「よく考えろ」と先輩や先生が言いがちなこの言葉は誤りです。
考えなくてもできるほど、経験を積めば良いだけです。
その経験とは、調べることです。
優れたエンジニアはGoogle検索がお上手です。
☑︎プログラミング以前の問題は先にマスターしておく
物事には順序があります。パソコンの作業が早いとプログラミングの上達も早くなります。
例えば、ショートカット、タイピングスピード、画面の行き来は、最初にマスターすべきことです。
演習問題を解いて「わからない」から進めないという人がいます。
わからなくても、上記のパソコン作業が上達するだけでも演習をする意味はあります。
☑︎他人と自分を比べない
人と比べると当然、上には上がいるわけですから、自信がなくなり、不安になります。
不安になれば、パフォーマンスは落ちます。
このような人は、過去の自分と、今の自分と、未来の自分を比較すると良いでしょう。
例えば、復習した時に、前回解けなかったことが解けている。前回よりも早く解けている。
さらに、理解がひらめくように降りてきた時、自分の成長を感じるのではないでしょうか?
■「プログラミング」には自己肯定感を育むエッセンスがある
ここまで、プログラミングで誤りがちな学習法を述べてきました。
おそらく、今までの学習全般にも言えることではないでしょうか?
「ちゃんと理解しろ」
「自分で考え抜け」
「できるまで諦めるな」
こういった精神論的な説教にがんじがらめになって、いつしか自己肯定感をなくしてきたことと思います。
すべてのスキル習得にはコツがあります。そのコツを教えるのが先生の役目なのですが、コツを知らない先生が多いようです。
プログラミング学習の基本は、動くサンプルソースの仕様変更の繰り返しです。
新しい技術が出てきたとき、リファレンスとサンプルソースが公開されて、みんなで一斉に勉強をはじめます。
最初はみんな書けません。理解もできません。
実行のたびにエラーがでます。
でも、そのエラー文は人格否定ではなく、コンピューターからのヒントであり、
何度もやっていくうちに書けるようになることをプログラマーは経験的に知ってます。
いつしか呪文のようになわけのわからないコードが読める様になります。
また、どんなプログラマーもミスはします。
完璧なシステムはありません。
誰もがミスをすることが前提なので、そのときは「犯人探し」をせず「原因探し」をします。
誰かがつまずけば、誰かが助けます。お互いが先生であり師匠です。
誰が偉いとかそういうことなく、お互いをリスペクトしあいます。
「チームがパフォーマンスを上げるには心理的安全性が必要である」ということをみんなが理解しています。
技術革新の早いITの世界ではマウントし合う暇はないのです。
今までマウント社会にいた方から見れば不思議に見えるかもしれませんが、
プログラミングをする過程は自己肯定感を生むプロセスそのものです。
■それでも「プログラミング」ができない人がいる理由とは
今まで何百人という学生プログラマーを育ててきた中で、プログラミング学習をやり切れる人は下記のような人たちでした。
・受験勉強をそれなりにやってきた人
・スポーツや楽器に打ち込んできた人
彼らは今まで数千時間をその分野に身を投じてきています。
ところが「プログラミング」の場合、その10分の1の時間で開発現場に入れるわけだから、実際に簡単なわけです。
ただ、難関大学生にありがちなのが「やらない理由」を見つけて、結局できないで終わる人です。
おそらく「理解できない」ことにプライドが邪魔して、逃げ癖ができてしまっているのでしょう。
人と比べてしまう人は、自分が負けていることを認めたくない傾向があるようです。
それに対して、後者の皆さんは、プロに憧れて頑張ってみたものの、身の程を知っているので、余計なプライドがありません。「理解できない」のが当たり前。こんなおバカな自分でもやればできると思って取り組みます。
このような観点からみると、適度な挫折は良薬と言えます。
プログラミングも最初から「書けないコード」に挑戦すれば、すぐに適度な挫折感を味わえます。
それが30時間後には「書ける」ようになり、「自信」につながるのです。
では、今まで何も打ち込んで来なかった人はプログラミングに向いていないのでしょうか?
統計的にはそうかもしれませんが、これを機会に「向き合う」ことをすれば良いかと思います。
前述の通り、受験勉強よりもスポーツよりも楽器よりも少ない投資時間で成果を上げられるのがプログラミングです。
つまり「自己肯定感を育む」ための投資時間が短いのがプログラミングなのです。
■自信がなくなる「プログラミング学習法」とは
最後に、挫折しやすいプログラミング学習方法について解説します。
☑︎概念を理解させようとする教科書/動画授業
人間は抽象度の高いものが苦手です。その道の経験豊富な方が教えようとすると、まず概念を理解させようとします。
初心者はわかるわけがありません。どんなに噛み砕いたとしても未知のものを理解することは無理なのです。
☑︎座学的な知識の詰め込み勉強
コーディングする前に、ローカル変数だとか型だとか、知識的な準備をすることが当たり前と考えがちです。
しかしながら、コーディングは事前知識がなくても始めることができます。
事前知識を詰め込ませようとするのは概念を理解させようとするからです。
最初のうちは簡単でも、覚えることが多いという気分になってきて、いずれは理解できない壁にぶつかります。
☑︎理解しているかを把握するための演習
「教科書を読んで、その次に演習」という流れは、確かに一般的な流れではあります。
しかしながら、そのやり方でほとんどの学生が理解できず、補習塾に通っているわけです。
分かったかに見えて、いざ演習をやるとまったく書けないのです。
だったら、分かる必要はなく、最初から書いて行けば良い。理解する必要はありません。
☑︎ポートフォリオを作る
好きなものを作れば勝手に覚えるものだ。これも真っ当な意見に見えて実は残酷です。
何を作っていいかわからないし、難易度の設計もされていないから、スキルが上がっているのかも実感できません。
どうしても作りたいものがある時だけ有効であるぐらいに考えておきましょう。
☑︎メソッドや関数の一問一答みたいなドリル
人間は単調な繰り返しが苦手です。何か一連の大きなものを作っている方が楽しいものです。
苦痛に思うようなやり方は長続きしません。単純なゲームを複雑化していくようなものが楽しいでしょう。
☑︎幕の内弁当のような膨大なカリキュラム
プログラミング学習の中に、HTML/CSS、データベース、サーバ構築などを一緒にしてしまうと消化不良になります。
一見、高度なことをやっているかに見えて、基礎を疎かにしています。
少年時代からプログラミングをやってきたエンジニアたちは、みんな簡単なプログラミングから始めており基礎を踏んでいるのです。
いきなり高度なものからやると「劣等感」ばかりに苛まれることになります。
気合で乗り切れると思って挑戦する人が多いのですが成功率は10%ぐらいです。
■まとめ
いかがだったでしょうか?
なるべくして挫折の道を歩んでしまった方もおられるかと思います。
「プログラミング学習」を、「今までの勉強」と同じ様に捉えると苦しいものになりますが、
趣味や特技のように「どうしてもマスターしたいもの」であればアプローチも変わってくると思います。
少年時代からプログラミングを楽しんできた人たちと同じ道を通れば、
プログラミングは楽しいものですし、ほんの数百時間の投資で現場でアルバイトが出来る程度には上達します。
そこから3年ぐらい実務経験を積めば、一人前のエンジニアとなるわけですが、
それを一足飛びにしようとするから、ゴールとのギャップに苦しむことになります。
まずは自己肯定感を育くむ程度にプログラミングを楽しむことからはじめましょう。
テックジム東京本校の体験入学
テックジム東京本校(永田町)は、ベテランエンジニアがトレーナーを務めます。
Python基礎コースの他に、機械学習コース、スマホアプリ開発コース、Ruby on Railsコース、GASコースをご用意。
東京本校は「楽しい会員コミュニティ」がモットーです。
会員同士の交流は完全自由です。大学時代を思い出して新しい青春を謳歌してください。
ここで見つけた人脈でハッピーライフを送りましょう。
起業仲間を見つける、採用活動として参加、仕事を見つける、生涯の伴侶を探すなど、どんな目的・動機でご参加されても構いません。
平日19時-22時、土曜13時-19時開催。(日祝休み)
※PC持参でお願いします。→お持ちでないならMacBookのレンタルがおすすめです。
東京本校へのアクセス
- ♠️永田町4番出口0分「FullHouse」
- Fullonが運営するコワーキングスペース(FullHouse)
東京都千代田区平河町2-7-2 VORT永田町6F
永田町駅4番出口の目の前のビルです(1Fがセブンイレブン)。
19時より施錠されるのでエントランスにて601を呼び出してください。
アクセス
- 永田町4番出口0分「FullHouse」
- Fullonが運営するコワーキングスペース(FullHouse)
東京都千代田区平河町2-7-2 VORT永田町6F
永田町駅4番出口の目の前のビルです(1Fがセブンイレブン)。
19時より施錠されるのでエントランスにて601を呼び出してください。
東京本校内観一覧
東京在住ではないけどテックジムをやりたい人に朗報です。
オンラインサポートが1年間ついて、教材を一括買いできるサービスをご用意しました。
テックジム校舎が遠方で通えない方も同じサービスを受けることができます。
Python基礎コース
プログラミングの初心者が200時間で、ポテンシャル採用レベルのプログラミングスキルを身につけることをゴールにしております。テックジムで培った「自己解決能力」や「プロのお作法」があれば、現場に出ても、成長をさらに加速することができるでしょう。
AIエンジニア養成コース
「いまの現場でAIロジックを組み込んでみたい」あるいは「AIを学びたいんだけど何から手をつけていいかわからない」という方のための機械学習・ディープラーニングのコースです。現場経験豊富なAIエンジニアがカリキュラムを担当。
AI基礎知識がなくても段階的に学べ、最終的にはお仕事につながるカリキュラムとなっております。
月額22,000円の定額制プログラミングスクール「テックジム」
テックジムには、授業(動画を含む)や教科書はありません。
なぜなら「授業」は無駄だからです。
いわば「公文式」や「武田塾」のプログラミング版がテックジムなのです。