「プログラミング学習を始めたけど中々身につかない」
「挑戦したいけど何から始めればいいかわからない」
プログラミング教育が始まるとともに、プログラミング学習のニーズも日々高まってきています。ですが、興味はあっても中々挑戦までは至らなかったり、始めたは良いものの現実は厳しく躓いてしまっている方も多いのではないでしょうか?
今回はそんな悩みを抱えている方達へ向け「プログラミングで躓く人必見!一人前になるためのSDC」について、学習する上で押さえておきたいポイントや注意すべきことをご紹介します。
入門書よりパソコン
学習を始めるにあたって、本屋へ立ち寄って入門書を買いあさり、読み始めることから学習をスタートさせる人がいますが、これはあまり効率が良くありません。
完全初心者向けの書籍は数多く存在していますが、プログラミングのように実践向きのスキルを身に付ける場合は、まず触って動かしてみることから始めなければ中々身につきません。そのためには、どんなスペックでも構いませんのでパソコンを買いましょう。
初心者にはパソコンを与えよ
もしご自宅に使えるものがあれば、わざわざ購入する必要はありません。ですが自分が自由な時間に使えるものがなければ、少し値が張ったとしても購入することをオススメします。知人に詳しい人がいれば、プログラミングをするのにどれぐらいのスペックが必要かどうか聞いてみると良いでしょう。
そういった友人や知人がいなければ、ネットで調べてみてください。もちろん紹介しているサイトによっては「メモリは重視」という人がいたり、「CPUは妥協しない」と言ったり様々な意見があります。色んな意見を参考にした上で自分で判断を下すのであれば、買ったものが失敗だとしても十分に「調べた」ということに価値があるので自信をもちましょう。
1つ注意しておきたいのは、家電量販店などの店頭で店員に相談するという方法です。もちろん意見を参考にするのは構いませんが、家電量販店で揃えているパソコンの種類は少なく、必ず現在販売しているものの中から提案をしてきます。また、必要のない付属ソフトをつけられたりと、余計な出費にも繋がりますので、その場での購入はやはりオススメできません。
これから学習をするというレベルであれば、ハイスペックなものは正直必要ありません。低スペックだったとしても、中古でなければ丁寧に扱っている限りは基本的に数年は使用でき、仕事用として使うことも可能です。なので、もし色んな人からの意見を伺ったとしても、最終的には自分で判断を下して購入する方が、これからの学習意欲にも繋がりますし、その成果にも反映されるので良いでしょう。
パソコンが整えば、まずはGoogleで調べながらプログラミングを始めてみてください。サンプルコードをコピペするだけでも構いません。最初は「Hello World」という文字を出力することから始めるケースが多いですが、それだけでも全く問題ありません。
サンプルコードを動かすようになれば、プログラミングでどんなことができるのかが少しづつ解ってきます。なので、やってみたいことはどんどん調べ、コピペで構いませんので動かしていきましょう。
理解したら書籍を読め
どんな入門書であろうとも、読み終わればプログラミングができるようになるなんてことはありません。そもそも、理解するのが難しいということがわかるはずです。
そのためにも、ある程度理解をした上で読むほうが効率良く学べ、吸収するスピードも早くなります。
ほとんどのプログラミング学習書では、実際にプログラムを動かしながら覚えていくような手順のものがほとんどです。書いている通りに開発環境を準備し、サンプルコードを真似しながら打ち込んでいきながら動きを覚えます。
ですがこの欠点は、作りたいという気持ちが先行しておらず、「どんな場面で役立つのか」という具体的なことから逸れてしまっているということです。
コピペで継ぎ接ぎのプログラミングができるようになっていれば、その言語ではどういったことができ、どうすればいいかが感覚的であったとしても少なからず頭に入っています。そういった最低限の言語知識がある状態で書籍を読めば、自分が知らなかった関数やその使い方が知れたり、何気なく組んでいたものの欠点がわかるようになります。そうなれば、本当に便利なものと、あまり活躍の機会がないものの選別ができるのです。
書籍を買う最大の理由は、知識の基盤を作るためではなく、すでにできている基盤をより強固なものにするということです。
学習時間にこだわらない
学習においてやっかいなのが「やった気分になる」ということです。
その自信や前向きな気持ちはプラスへ働くこともあるので全否定はしませんが、それに気づかず積み重ねてしまえば、長い時間を費やしたのに結果へ繋がらないということになってしまいます。
月間学習時間は成果に比例しない
1日にどれぐらいの学習をしたか、1ヶ月でどれぐらい積み上げたかという計算をしている人がいますが、これはあまりオススメしません。もちろん指標として残しておくことで、将来的に役立つことがあるかもしれませんが、数字とは時に残酷なもので、結果それが挫折するためのきっかけにもなってしまうからです。
「学習1ヶ月で案件獲得しました!」
「初めて3ヶ月で売上100万円達成!」
SNSでこういった投稿を良く目にします。これらがウソかホントかにこだわる必要は全くなく、自分には関係がないものです。
ですが、数字は通常では目に見えない差というものを人間が視覚できる情報として表してしまいます。そのため、全く意識をしていなかったとしても、自分と他人を比べてしまい、その期間で達成できていない自分に劣等感を抱いてしまうのです。
これがオンラインで面識のない人からの情報であれば簡単に割り切れる人もいますが、もし身近にいる人からの情報だった場合はいかがでしょうか?
同級生や同じ時期に始めた人であれば、よりそれは比較対象として明確になってしまいます。
人によって成長の度合いは異なりますし、その学習効率や学習時間の質をとっても全く同じにはなり得ません。だからこそ、そういった比較対象となる数字は、学習という面に置いてはあまり明確にすべきではないのです。
もし比較対象をとらなかったとしても、100時間、500時間と数字が増えていけばいくほど自らにプレッシャーを与えてしまいます。これを良いプレッシャーと捉えて学習意欲に働かせる人もいれば、そうでない人もいます。高校や大学受験とは異なり、リミットが見えづらいようなプログラミング学習においては、過度なプレッシャーは挫折に変わり、危機感は成果への執着以上に判断のタイミングを焦らせてしまうことになるのです。
ビジネスという面でみれば、数字は比較対象として分析して、より最適かつ理想を追い求めるものですが、学習というメンタル面の比重が大きいものに関しては、自らを崩してしまうためのきっかけとなる可能性があると考えておかなければなりません。
プログラミングスクールで意識すること
私は基本的にプログラミングスクールをオススメしていません。独学でも十分に習得可能ですし、現在私も独学で培ってきたスキルを使って独立、そして起業して収益をあげているからです。
ですが、転職のために会社を辞めるような大きな決断をしている人や、独学ではモチベーションが保てないという人もいるはずです。そういった方が、より確実性を上げるためにお金を払ってプログラミングスクールを利用するのは間違いではありません。むしろ、自らでその選択肢を選んだのであれば正解です。
ただし、プログラミングスクールを利用するにあたって大切なことは、それだけに比重を置いてしまわないということです。
スクールでは書籍と同じように手順に沿って進めていくため、サンプルコードを使って実際にコーディングをする機会が必ず出てきます。なので、できるかぎりスクールで使う時間は「作る」ということに対して価値を置くようにしておきましょう。
それと並行して書籍による読書学習を補助的に行い、余裕があれば課題分だけではなく自分でも同じようなサンプルコードを作ってみてください。そうすれば、プログラミングスクールでの学習が軸となり、より効率的に学習成果が見込めるはずです。
実践で役立つSDC
これはプログラミングだけに限りませんが、より実践的なスキルを速く身につけたい方はSDC(Search Destroy Create)を積極的に取り入れましょう。これは調べる、壊す、作るの各頭文字を取っています。
それぞれどう大切なのかを一つずつ見ていきましょう。
調べる(SEARCH)
プログラミングは受験のようにテスト形式で組んでいくわけではありません。また、会話で使う言語のように覚えていなければ成立しないものでもありません。
あくまで、パソコンに向かってコードを入力していく作業なので、その時点では知らないような関数やクラスだったとしても、調べた時点で理解できれば使いこなすことができます。使用頻度の少ないものであれば、その後頭から抜け落ちてしまっても、あまり支障ありません。
それは裏返せば、調べる能力が高ければ知識が例え劣っていたとしても高機能で高品質なプログラミングができるということです。特に人気な言語であれば、新しくライブラリが追加されたり、コードやフレームワークがアップデートされたり常に学習し続けなければなりません。ですが、その全てを更新されたタイミングで身につけることはほぼ不可能です。
だからこそ、常日頃から調べる能力を養い、必要となったタイミングで引き出すことができるようにしておき、汎用性の高いものや便利なものは知ったタイミングで身につけていけていかなければなりません。
もしプログラミング学習をこれから始める人で、知らないことをその場で調べるという癖がついていなければ、日常から得る些細な情報であっても調べるという癖付けをしてみることから始めてみても良いでしょう。
壊す(DESTROY)
理解を深めていくために、完成したコードを読むという学習方法があります。ですが、初心者の段階であれば、コードを読むだけでも大変ですし、そのほとんどが理解できないでしょう。
そこで役立つのが「壊して覚える」という方法です。
無料で公開されているようなサンプルコードでも、十分実用的な機能を備えたものは数多くあります。お問い合わせフォームや顧客管理機能などそれ単体で動くものもあるので、もし見つけた際は、ぜひ保存しておいて壊すための学習材料としましょう。
例えば顧客管理システムを壊していくことで何が得られるかを考えてみましょう。
コードのとある1行を削除すると、エラーが発生して画面が映らなくなりました。であれば、その1行はシステム全体に影響している可能性が高いですね。
もし、削除しても正常に動いているようであれば、
もともと不要な記述
閲覧時には動作していない機能
目に見えていない部分でエラーが出ている
その候補がいくつか挙げられます。
もし顧客の新規登録をしても問題なく動いていれば新規登録の機能には関係がない可能性が高いですが、顧客の削除でエラーが発生すれば、削除関連の処理で必要な記述だということがわかります。
このように、壊して確認をすることで、それが何の役割を担っているのかがより体感できるのです。
もし会社へ勤めているにしても個人で活動しているにしても、プログラミングを仕事にすれば、必ず他の人が書いた記述に触れなければならないタイミングが出てきます。
そんな時、自分の知識量では上手く読み取れないのであれば、まず壊すことから始めてみましょう。そうすれば、段階的に理解は深まっていきます。
注意しなければならないのは、必ずバックアップをとっておくということです。オリジナルを潰しながら確認してしまうと、取り返しがつかないことになってしまいかねません。
作る(CREATE)
何度も説明していますが、プログラミングを習得するためには作るという工程は欠かせません。そして多くの人が躓いてしまうポイントは「作る」ということに対してこだわり過ぎてしまうということです。
プログラミングで何かを作るという時、1からその全てを行なう必要はありません。調べて出てきたコードをコピペして動くのであれば、それも立派な作るという行為です。
メールを送るという機能を実装しようにも、フォームの仕組みを理解しなければなりませんし、配列やデータの受け渡し、メールの発行、バリデーションの仕方など様々なことを覚え、それを組み合わせることで初めて1から作るということが実現するのです。
プログラミング学習ですぐ躓いてしまう人は、作るというハードルを一度下げてみてください。そうすれば、作るという頻度は増やせるはずですし、それによって得られる達成感がモチベーションへと繋がります。学習段階ではもちろん、仕事としてプログラミングを取り組んでも、完成したという達成感が定期的に得られなければ楽しいとは思えませんし、継続に繋がりません。
習得するためにも、これからも続けていくためにも作るということは非常に重要だということです。
まとめ
いかがだったでしょうか。
今回は「プログラミングで躓く人必見!一人前になるためのSDC」について、学習のポイントや役立つノウハウをご紹介しました。
これから学習を始めようと考えている方、転職や独立でIT業界へ参入しようといった野望を抱いている方は、ぜひ参考にしてみてくださいね。