学習効率を上げたい!

時計とプログラミング学習用PC

他の学習と同じく、やはりプログラミング学習も成長スピードは人それぞれ。
だからこそ、効率的に学習したいものです。
そのために当サイトでは、まずプログラミングスクールの活用を推奨しています。独学でやみくもに学習するよりも、先人の知恵を元にした学習カリキュラムをこなす方が効率的だからです。

とはいえ、スクールに通う人達の中でも成長する人、しない人の差が生じてしまいます。その違いはどこにあるのでしょうか?
そこで私が数多くの人のプログラミング学習をサポートしてきた経験を元に、成長が遅い人達の特徴を3つまとめてみました。
成長が遅い理由は決して才能や地頭の良さがないから、ではありません。

どんな人であれ、このポイントに注意すれば他の人よりも早く成長できる!という項目になっています。
これは独学であれ、プログラミングスクール学習であれ共通することです。どんな形であれ、これからプログラミング学習をしよう、と思うのであればぜひ参考にしてください。

中々実践しようとしない…

スクール学習を行う人達が一番ハマりがちなのが、「中々実践しようとしない」問題です。
真面目な方や受け身な方に多いのですが、以下のような考えから、いつまで経っても自ら能動的にプログラムを書けないケースが見受けられます。

真面目型

基礎を全部理解しないと、実践できない。

受け身型

言われただけやっていれば、プログラミングできるようになるだろう。

実践しなければ、基礎を理解できない理由

初心者による日曜大工のイメージ

第一に、いきなり完璧なプログラムを書くことはどんな頭が良い人であれ不可能です。
イメージでいえば、初心者がプログラミングで一つの作品を作るのは、日曜大工で棚や机を作るのに近いものがあります。
成長が早い人は、たとえちょっと木をノコギリで切るのが下手だったり、釘を曲がって打ってしまっても、まずは一つ作品を完成させます。うまくできない部分は、次の作品を作る時に改善すれば良いだけです。

基礎を理屈で理解することも大切ですが、全体の流れを一度体験しないと、基礎の意味や重要性を理解しきれません
木をまっすぐ切らないといけないのは、曲がった木で棚を作ると形がゆがんだり斜めになるからですが、それを理解するには、結局自分で一度実体験することが近道です。

設計を書くのがエンジニアの仕事

プログラム設計図を書くエンジニア

また受け身な人は、カリキュラムに書かれたサンプルプログラムを作るだけに始終しがちです。
一通りのカリキュラムを終えたあとに、自分で何かを作ろうとすることがありません。

ですが、エンジニアとは本来「設計をする人」を指します。優秀なエンジニアになるとは「自分で設計したサービスを自分で作れるようになる」のを目指すことです。

「エンジニア」と「プログラマー」の意味

エンジニア:設計をする人(プログラマーを兼任することも)

プログラマー:プログラムを書く人

多くのスクールでは「優秀なエンジニアに!」「エンジニア就職!」と書かれているのを見て、エンジニア=プログラムを書く人とだけ思ってしまいがちですが、設計する力もあってこそのエンジニアです。
さらにいえば、プログラマーとして優秀になるためには、他人の設計図を見てその意図を理解してプログラムを書く力が求められます。本来的な意味でエンジニアになるためにも、プログラマーとしての力を伸ばすためにも、自ら設計し実践しなければ成長できません。

「設計」と言うとちょっと難しく感じるかもしれませんが、必要なのは「こんなサービスを作りたいな!」と思う純粋な気持ちです。楽しんで学習を進めていきましょう。

勉強の習慣作りが下手

プログラミング学習のルーティーンイメージ

そして次に難しいのが、プログラミング学習を習慣づけることです。
スクールで教室通いをするなら自然と習慣が生まれますが、独学またはオンライン型のスクールだと自分で習慣を作らないといけません

プログラミングの学習は基礎を一度なぞるだけでも数十時間は必要です。でも、大人がそれだけの学習時間を確保するはやはり大変です。三日坊主にならないためにも、習慣化してプログラミング学習をできるようにしていきましょう。
ただ習慣化となると「毎日1時間勉強するぞ!」と根性論になりがちです。でも、それだとみんなすぐ挫折してしまうのは、あなたもすでにご存知ですよね?(笑)
では、どうすれば勉強の習慣作りができるでしょうか。

まずは小さなことから始める

プログラミング学習をスタートした女性

これはプログラミング学習が切羽詰まっていない方向けですが、「絶対にできることから習慣化していく」という方法があります。
あなたが何週間・何ヶ月間も絶対に続けられるプログラミング学習の範囲とはどれぐらいでしょうか。

【毎日1時間勉強する】
今日は良いかな、と諦めてしまう日もありそうですね。

【毎日10分勉強する】
酔って帰った日、疲れた日にも絶対できるでしょうか?

【毎日1回はパソコンを起動する】
"絶対"となると、せいぜいこれぐらいかもしれません。

習慣が身についていないうちに、絶対に続けられることは自分が思っているよりもずっとわずかです。
当然、毎日パソコンを起動するだけでプログラミング学習はできませんが、起動するだけで目標は達成、その後に学習までした日には200点満点!ぐらいの気持ちから始めていきましょう。

簡単な習慣であれば1週間、軽い負荷の習慣なら3週間、努力が必要な習慣は2ヶ月で身につくと言われています。徐々に徐々に習慣的にできる範囲を広げていってください。

まずは小さなことから始める

勉強モードスイッチのイメージ

続いてオススメするのが、自分が勉強を開始する条件づけを行うことです。
具体的には、勉強をする「時間+場所」を固定することをオススメします。
先ほど、通学型のプログラミングスクールに通う人は習慣が自然とできると書きましたが、やはり場所の力はとても大きいです。

自宅で普段はごろごろくつろぐ時に目の前にあるテーブルで学習するのは、非常に困難でしょう。
カフェや、1日だけでも利用できるコワーキングスペースなど、ここに行ったら絶対勉強する!と決めた場所を作ってみましょう。

過去指導した人達の中には、ネットカフェを使う人もいました。
普通のカフェで何時間も席に座るのは土日など混み合う時に迷惑ですし、コワーキングスペースはまだ場所が限られるので良い選択肢かもしれません。
私はマンガが好きなので、絶対無理だなと思いましたが(笑)

また、勉強をいつ開始するか・何時間勉強するかもおおよそ決めてしまいましょう
「今日はいつ勉強を始めて、何時間勉強しようかな。」と決定する項目を増やすのは、習慣作りの敵です。
平日は仕事終わりに1時間、土日は朝10時から4時間など、決めればあとはそれを繰り返せばOK、とパターン化しましょう。
場所も時間もいつも同じに決めてしまい、勉強を自動化するのが習慣作りのポイントです。

調べるのが下手・質問が下手

最後に重要になるのが「検索力」と「質問力」です。
どれだけプログラミングのスキルが向上しても、エラーやバグは発生するもの。そんな時に大切なのが、この2つの問題解決能力でしょう。自分で問題を解決する能力がない人は、いつまで経っても教科書レベルのことしかできません

検索力はエンジニアの必須スキル

「検索力」のイメージ

私も今でもGoogle検索のお世話になりっぱなしです。
実は「検索力」は人それぞれ、まったくレベルが異なります。うまく検索する人は、検索をして結果を何ページか見て、求める情報がなければ、検索ワードを変えて必要な情報を探そうとします。

さらにプログラミングの場合、事例が少ない問題だと日本語情報がなく英語情報なら解決方法が見つかる場合もあります。現代は英語ができなくても、Google翻訳を駆使すればおおよその内容が理解できるので、そんなに困難なことではありません。

英語のプログラミング質問サイト「Stack Overflow」のお世話になっていないエンジニアは一人もいないとも過言ではないぐらい、英語圏の情報を検索する力は大切です。
一方、検索が下手な人は検索結果を上から数件見て求める情報がなければ諦めてしまうことも。それでは自分で問題の解決ができません。
まずは検索ワードを何個か変えながら検索するところから、検索時にも試行錯誤することを心がけていきましょう。

質問力を使うのは、まず検索してから

講師に質問をする女性

続いて「質問力」の話に移っていきます。
独学でなくプログラミングスクールを利用する際の大きなメリットが、講師に質問できることで、問題が解決できない時に、質問できる相手がいるのは非常に良い環境だと言えます。

ですが、講師も質問すればすぐに何でもかんでも答えてくれるわけではありません
スクールの指導方針にもよりますが、検索で解決できる程度の質問であれば、あえて直接答えを教えずに検索の仕方のアドバイスする程度にとどめることも多いです。

「検索するのが手間だから、スクールにお金を払って質問をしているのに。」と思う気持ちもわかるのですが、それではスクールを卒業した後に自分一人で問題解決ができなくなってしまいます
仮にプログラミングを仕事にするにしても、職場の先輩が1から10まですべて教えてくれることはありません。技術的な問題は自分で解決するのが当たり前で、調べて解決できない時だけ先輩に相談するのが普通です。質問をする時にも、「なんかバグが出て動かないんです。」と聞くだけではいけません。

「○○とエラーが出て、この部分が動作しない。」

「おそらく△△が原因かと思って、それについてこのように検索してみたが解決しなかった。」

「解決を試みている△△というポイントはそもそもあっているか?」

などと経緯を含め、質問する必要があります。

その方が答える側もすぐにアドバイスでき、結果的にお互いに時間を節約できるからです。
検索力も質問力ももはやプログラミングの話でなく、社会人としての基礎スキルと言えるかもしれません。
ただプログラミングは通常の業務で出てくる問題よりも、さらに入り組んでいることが多く、より基本に忠実に検索・質問できるようにしていきましょう。

効率的なプログラミング学習を進める男性

以上「中々実践しようとしない」「勉強の習慣作りが下手」「調べるのが下手・質問が下手」の3点が成長の遅い初心者エンジニアの特徴でした。
決して複雑なことは書いていないと思います。簡単な要点に見えて、ほとんどの人はこれができていません。
成長できる人とできない人の差は、シンプルかつ些細なものです。ぜひこのポイントをおさえて、他の人よりも一歩前に進んでください。