こんにちは、フリーエンジニアのてぃすです。
エンジニアの需要が拡大し、売り手市場となったことから、プログラミングを学習し始めた人、学習してみたいという人がかなり増えてきています。
これからの時代プログラミングを学習することは、豊かな人生を目指す上で非常に強力なスキルとなってきます。
今回はプログラミング初心者の方々に向けて、最も効率的なプログラミングの学習方法を解説していきます。
はじめに
この学習フローでは、遊びのメカニズムを利用して進めていきます。
どういうことでしょうか。説明していきます。
遊ぶ感覚というのは最も学習効率を高める
テレビゲームをやったことのある人なら分かりやすいと思いますが、RPGをやっていて必殺技の発動条件とか敵モンスターの弱点って、結構複雑なものでもすんなり覚えることができましたよね?
それらの知識って特に覚えようとして覚えたわけではなく、楽しんで取り組んでいく中で自然と覚えていったものだったと思います。
自分の中から湧いてくる探究心・好奇心を伴った行動は、嫌々机に座って勉強するときとは比較にならないほどの学習効率を引き出すのです。
この遊びのパワーを学習に上手く取り入れれば、学習効率の向上だけではなく、高いモチベーションをもって取り組むことが可能です。
そのことを頭に置いた上で今回紹介する学習フローを実践していただければ幸いです。
無理に楽しめというわけではない
今回の記事において1つ勘違いしないでおいて欲しいのが『無理に楽しまなければならない』というわけではない、ということです。
あくまで遊びのプロセスによって得られる学習効率を上手く活用すべきというだけですので、楽しいと感じられないから自分にはプログラミングは向いていないと考える必要はありません。
もちろん楽しんでやるに越したことはありませんが、効率的に稼ぐツールとして、あるいは必要にかられてプログラミングを学習を始める人でも使えるテクニックであると捉えていただければと思います。
ではこれから最も効率のよい学習フローをご紹介していきます。
作りたいものを選ぶ
いきなり学習本や学習サイトを利用し始めるのは効率的な手段ではありません。
まずはプログラミングを使って作りたいものを選んでください。
ワクワクするような完成品を考える
自分が作成すると考えるとワクワクするような完成品であればそれがベストです。ちょっとしたゲームのようなものでもいいですし、日常生活でちょっと役に立つようなアプリ・ツールなどでも構いません。
もしそれらを考えるのが難しい場合、SNSなどの身近なWebサービスでもよいでしょう。普段自分が触れているものを自分の手で作ることができるというのは、少なからずワクワクするものではないでしょうか。
ちなみにワクワクするもの、というのはあくまでオプションです。あれば良い程度のものですので、もし見つけられなかったとしても問題ありません。
一番重要なのは完成品を決めるということです。
学ぶ言語・技術を選ぶ
ここで実際に学習するプログラミング言語などを選択します。もし既に学習する対象が決まっていればスキップして構いません。
条件としては1で選んだ完成品を実現できる技術であることが好ましいですが、初心者の方にはそのあたりを判断することはちょっと難しいかも知れません。
簡単にジャンル毎によく使われるプログラミング言語を紹介しておきます。
- WEBサービス --- Ruby,Java,javascript,PHPなど
- スマホアプリ --- Swift,Kotolin,Javaなど
- 分析・人口知能 --- Python
- 業務システム --- Java,C#など
正直このプログラミング言語を選ぶ段階でそこまで悩む必要はないです。
プログラミング言語は一つ覚えれば他の言語も驚くほどスムーズに学習できるようになります。つまり仮に後ほど使わなくなったとしても無駄になるということはありません。
それにどっちにしろプログラマーとして働いていくことになった場合、当然のように複数のプログラミング言語を習得することとなります。
つまり、ここで迷っている時間があれば、その分学習を進めた方が効率的です。
個人的なオススメはRubyです。下記記事にてオススメの理由を書いていますので、是非ご覧になって判断材料としていただければ。
-
-
プログラミング初心者にRubyを強くオススメする理由
こんにちは、フリーエンジニアのてぃすです。 プログラミングを始めようと思った時にまず立ちはだかるのが、 どのプログラミング言語を選択するか という問題です。 Googleで『プログラミング おすすめ』 ...
学習対象の概要をざっくりと把握する
やっと本格的に学習に取りかかるわけですが、ここではプログラミング言語についてがっつり勉強する必要はありません。
完全にプログラミング初心者の方であれば、
- プログラミングがどういうものなのか
- 条件分岐、繰り返し処理とはどう書けばよいか
- 変数とは何か
くらいの概要がふんわり把握できた程度でとどめておくべきです。
それは何故か。ここで本格的に基礎学習を行うのは効率が悪いからです。
プログラミング初心者の方はよく教則本や入門書を、最初から最後まで読んで内容を理解しようと努めます。
でもその段階ってプログラミングにおいて何が重要かが分からないはずです。
そんな状態で本一冊を読破するのには時間がかかりますし、何より遊びとはかけ離れた行為です。下手したら「プログラミングってつまんねーな」となって諦めてしまう人すら現れます。
だからこの段階では思い切ってサラッと概要を把握する程度にとどめておくのがベストです。
遊びを例にすれば、テレビゲームを買ってきて、ゲームを始める前に取扱説明書を何日も読みこんでからゲームを始める人なんていませんよね。それと同じことです。
無料学習サイト
ちょっと前に比べるとプログラミングを勉強するための環境はかなり整っており、Progateやドットインストールなど実際に手を動かしながらプログラミングを学べる質の高いサービスがいくつも存在しております。
しかしこれらのサービスも今回紹介する学習フローにおいては軽く流す程度で済ませておく方が吉です。
これまたゲームを例に出すとProgateやドットインストールにおける学習は、操作を覚える為のチュートリアルのようなものです。
チュートリアルをずっとやってても面白みは薄いですし、実践の中で得ることのできる知識に比べると定着度はどうしても弱くなります。
ただし教材として優秀であることは間違いありませんので、知識を詰め込むというよりもプログラミングの感覚を掴むために活用すると効果的でしょう。
4.実際に作りたいものを作る
さあいよいよ学習本番。これまでの下準備が効果を発揮する段階です。
言葉にすれば簡単です。1で決めた作りたいモノを2で決めたプログラミング言語で作るだけです。
最初のうちは分からないことばかり
基礎学習をサラッと終わらせたわけで、最初は何をすればいいかがさっぱり分からないはずです。
そこで初めて教則本などを利用していきます。分からないことを都度調べながら作業を進めていくわけです。本に見つからなければインターネットで検索してください。
これって効率悪くないか?と思ってしまうかもしれませんが、実際は全くの逆です。
答えを見つけて達成することの重要さ
分からない部分があったときに調べることによって、疑問に対する答えを見つけた時の達成感というものを得ることができます。
この達成感というのは学習において大切なものであり、記憶への定着を強力にアシストしてくれます。
本やサイトとにらめっこして覚えたことって、覚えたつもりになっているだけで、実際に使うべきタイミングに思い出せないことがほとんどです。
ここで最初に話した遊びのメカニズムを思い出していただければ分かりやすいと思います。
自分の力でクエスト(難題)をクリアして次のステージ(プログラミングの機能)に進んでいくことによって、貴方の創造的で好奇心旺盛な部分を活用することができるのです。
手段を選ばず貪欲に
この段階では手段を選ばず、分からないことの答えを見つけてください。
プログラミングに心得のある知人がいれば頼り、エンジニア向けの質問サイトteratailなど使って具体的な質問をしてみるのもよいでしょう。
自分の言葉で疑問を解消するための言葉を選ぶことも良いトレーニングになります。
ひたむきに作りたいモノの完成を目指しましょう。機能を追加したり、発生したエラーを解消する中でテキストを読むだけじゃ得られない学びを得ることができます。
5.学んだことをアウトプットする
自分が学ぼうとしていることを他人に教えると、記憶しやすくなるのと同時に理解を深めることができます。
教えるまで行かなくても、整理して伝えようとするだけでもかなりの効果があります。
友人に話したり、ブログを書く、Qiitaなどのプログラマー交流サイトに投稿するなどで構いません。
ゲームで言えば、難しいステージについて友人と語らうことに通じるものがあります。
また学習が完了したときにではなく学習の最中にアウトプットすることが大事です。同じ箇所で苦しんでいる人を救ってあげることができるかもしれませんし、アウトプットを通じて得ることのできた理解が以降のステップにおいて役に立つことがよくあるからです。
まとめ
これまで書いたことを一言でまとめると、
能動的に行動を起こすということが、最も効率のよい学習方法である。
ということです。入門書や学習サイトを使った学習ではどうしても受動的な学習となりがちです。
何をやっているのかさえはっきりと分からない状態で、試す・探るなどの行動をとることによって、自然な探究心・好奇心が沸き出てきます。
それによって遊びの持つ学習効率を利用できるようになる、というわけです。
何度かテレビゲームの例えを持ち出しましたが整理すると以下のような形になります。
- サービス作成 → ゲームそのもの
- 教則本 → 取扱説明書
- 無料学習サービス → チュートリアル
- 公式ドキュメント、質問サイト → 攻略本
貴方がゲームで遊ぶとき、それぞれの道具をどのように扱うかを思い出して、プログラミング学習の手順に重ねてもらえると今回私が紹介した学習フローを把握しやすくなるのではないかと思います。
この記事を読んでくれた方々の充実したプログラミングライフを祈っております。
閲覧いただき、誠にありがとうございました。