初心者が挫折しないプログラミング学習法
【宣伝】ChatGPTと学ぶPython入門
翔泳社さんより、ChatGPTに教えてもらいながら、Pythonを通して、プログラミングの基礎を学ぶことができる入門書を出版することになりました。
Pythonがやりたいことに直結しなくても、プログラミング自体の基礎を一気に学ぶ本として使えると思うので、プログラミング初心者の方、誰かに教える機会がある方、是非購入して読んでみてください!
挫折しないプログラミング学習法
結構主語の大きい単語を使ってしまいましたが、皆さんお察しの通り今回執筆した商業誌で学習することも手段のひとつなのですが、それだけだとここで記事が終わってしまうので、今回書籍で示した初心者向けの学習法以外の話にも言及していきたいと思います。
時間がない人向けまとめ
- 他者を巻き込んで挫折してはいけない理由を作る
- 勉強好きな人と実践好きな人は向いている学習法が違う
- 小さな成功体験を得るためにタスクを最小にしてクリアする
- 疑問は生まれた瞬間に調べる。検索とChatGPTは併用する
- 質問の仕方を覚える。情報整理はプログラミングの基本
この記事の目的
プログラミング初心者の人が挫折しないためのポイントを知ることで、挫折せずに自発的な学習が出来るようになるための記事です。
今回対象となる「プログラミング初心者」の定義
まずはこれを明確にしないと「そんなことはない」と言いたくなる人もいると思うので、この記事の対象となるプログラミング初心者の定義をしていきます。
プログラミング初心者がプログラミングを学ぶときに最もうまくいく可能性が高い環境としては 「教えてくれる人がいる」「一緒に学ぶ仲間がいる」「習得しなければならない理由がある」 とこのあたりが多いのではないのでしょうか?
楽しそうにプログラミングするコミュニティにいる人は、既にプログラミング初心者からレベルアップする準備が終わっているようなものです。もちろん努力は必要ですが、そのコミュニティの雰囲気に逆らわなければ楽しいことをしているだけで、プログラミング初心者を卒業していることでしょう。
しかし、多くの人はそんな都合の良いコミュニティに所属しておらず。無理やり入り込んだとしても受け入れられず邪険に扱われてしまう人もいることでしょう。
今回は、プログラミングをしている人が周りにおらず、最適なコミュニティにも入るのが難しい、プログラミングを勉強したいけどプログラミング習得に最適な環境ではない、と思っている人が対象だと仮定して話を進めます。
初心者が挫折する原因
続いて、何を解決出来るのかわからず活用できないと思うので、原因を明確にしていきます。
初心者はなぜ、プログラミング学習で挫折してしまうのでしょうか。パッと思いつく理由を書き出してみましょう。
- そもそもプログラミングを習得しないといけない強い理由がない
- 途中で飽きてしまった/他に優先度が高いものが出てきた
- 難しい/理解できない内容が出てきて挫折した
- 一度挫折したら再度頑張る気力が湧かなくなった
一度挫折したことのある人は覚えのある原因も多いのではないでしょうか。こうして書いている私も何度かプログラミングには飽きています。最初にC言語の分厚い本を手に取り、ゲームを作ると息巻いた中学生のときに、数ページ進めた後に出てきた理解できない内容に絶望したことを今でも忘れません。
私は偶然にもRPGツクールのフリー版のようなソフト「ウルフエディタ」を使うことでゲーム作りの手を止めなかったことで、プログラミングを諦めずにいられましたが、そこでプログラミング習得を挫折してしまうパターンも聞くので、みなさんはこのような事態を是非回避してください。
自分の学習タイプを見極める
今の原因を解決する方法はいくつかあります。しかし、どれが最適という素敵な解決策は実は存在しません。シンプルに得意な学習方法が人それぞれ異なることが理由です。
プログラミングを学習する際には、様々な学習タイプが存在します。初心者が効果的に学習を進めるためには、自分に最も合った学習法を見つけることが重要です。参考となる学習タイプをみてみましょう。
1. 教科書学習タイプ
書籍やオンラインの教材を使って系統的に学ぶことを好む。
わからない単語や概念はChatGPTに聞いて疑問を解消しましょう。
- 基礎から応用まで段階的に内容が記載されている書籍を利用する。
- プログラミングスクールやオンライン講義教材を利用する。
- 公式のドキュメントやチュートリアルを利用する。
2. 実践学習タイプ
実際のプロジェクトやサンプルコードをいじりながら学ぶことを好む。
ChatGPTにサンプルコード作成、コードレビューを依頼しましょう。
- 公式のサンプルコードや、他の人が作ったサンプルコードを修正する。
- プログラミングチャレンジやスキルチェックを試す。
- サンプルコードを組み合わせて自分のプロジェクトを作成する。
3. コミュニティ学習タイプ
他者との交流を通じて学習することを好む。
ChatGPTより人間に向き合ってください!!!
- プログラミング関連のフォーラムやコミュニティに参加する。
- 勉強会やもくもく会、セミナーに定期的に出席し、情報交換を行う。
- SNSで情報収集しながら、定期的な情報発信を行う。
ここには記載していないですが、理論やアルゴリズムが好きなタイプもいます。今回は私が詳しくないので言及しませんが、競技プログラミングの分野に進んだり、研究として向き合うなど、様々な学習方法があると思うので、この分野に関しては詳しい人に聞いてみてください。
ではどうやって挫折を防ぐのか
それぞれ異なる学習タイプであることを踏まえて、プログラミング初心者が挫折せずに学習を継続するための具体的な方法を考えてみましょう。
1. 挫折してはいけない理由を作る
「なぜ挫折してはいけないのか」 これが揺らぐと、人は勉強の手を止めてしまいます。挫折してはいけない理由を始める前に作っておきましょう。
もちろんモチベーションが高いときは不要な理由ですが、モチベーションが下がっても手を止めない理由は保険として重要です。未来の自分を信じすぎないこともプログラミングを扱う上で重要な考え方です。
個人的におすすめなのは 「他人を巻き込む」 です。自分で誤魔化せないという点で有効な手段です。例えば友人に「プログラミングでタイマーを作る」と小さな目標を宣言したりするのも良いですね。この時重要なのは否定的な人を選ばないことです。褒めてくれるけど報告しなくなったら「挫折したんだな」と思われて嫌だくらいがちょうどいいプレッシャーになると思います。
2. 小さな成功体験を積み重ねる
初心者が学習を続ける秘訣は、小さな成功体験を積み重ねることです。簡単なプログラムを書いてみて、それが期待通りに動作した時の達成感は学習の大きなモチベーションになります。
これを実現するためには、目の前の壁を小さなタスクに分解することが大切です。ざっくりしたタスクから、計測しやすく、達成しやすい小さなタスクを生み出すことを考えてみましょう。
例えば、「毎日プログラミングを勉強する」だと達成できたか曖昧で成功体験だと思えませんが、「毎日5分プログラミング学習する」「勉強記録に一行でも今日やったことを追加する」というタスクであれば、計測しやすく成功体験と感じやすくなります。
3. 分からないことはすぐに調べる
プログラミングを学ぶ上で、分からないことに直面するのは避けられません。そのたびに調べることで、自己解決能力が身につきます。また、そのプロセスでさらに多くの知識を吸収することができます。
これは真面目な人ほど陥る罠なのですが、わからないことを理解できないだけで、 「プログラミングに向いていない」 と考えてしまうことがあります。基本的にプログラミングは日常で使わない概念や単語が多いので、最初はみんな理解できないのが普通です。
わからない場合は考えるよりも先に検索してみてもいいくらい、検索は重要です。考えこんで進めなくなるくらいなら検索能力を上げる訓練も兼ねて、すぐに検索することをおすすめします。最近はChatGPTに適切に聞く能力も必要ですので、ChatGPTを併用しても良いでしょう。
4. 良い質問の仕方を学ぶ
プログラミングコミュニティでは質問が推奨されていますが、的確な質問をすることが求められます。自分が直面している問題を明確にし、何を試したのか、どんなエラーが出たのかを具体的に伝えることが大切です。
初心者のときは特に質問をする機会も多いでしょう。しかし、質問の仕方が冗長でわかりにくいと、質問に答える側が理解するために考えたり、追加で質問したり、調べる必要が生まれてしまいます。質問するときは知識を借りる側であることを認識し、答えやすい質問となるように情報を整理することが大切です。
これが出来ると質問だけでなく、要点を抑えた検索や、ChatGPTへの質問の精度も上がります。また、情報の整理が明確にできるということはプログラミングの設計や実装の精度を上げることにも繋がります。質問力はプログラミングの最も基本的な汎用的スキルと言えるのかもしれません。
5. サポートしてくれる存在を作る
上記でも不安であれば、メンターになってくれる人を探すのもオススメです。そして、今ならメンターはChatGPTで代用するのも良いでしょう。
しかし、いきなりChatGPTを駆使して学べと言われても難しいと思うのでそんなときは「ChatGPTと学ぶPython入門」というChatGPTにプログラミングを教えてもらう方法が詰まった私の著書を買って使いましょう!(宣伝)
もちろん、別の手段でサポートしてくれる存在を用意しても問題ありません。オンラインのプログラミング学習サービスもサービス化されたメンターと言えます。
このあたりはnoteに書いているのでそちらを参照してください。
最後に
今回紹介したのは私が「プログラミング初心者がこうすれば挫折しない」と考えている方法です。おそらく別の人に聞いたら別の答えが返ってくると思います。
しかし、それはどちらかが間違っているという話ではなく、見ている界隈や視点、人の違いによる部分が多く、それぞれのタイプの違いも影響して、見えている世界が違うという部分もあると思います。
このような学習方法やノウハウ、考え方の記事は、自分に似た思考やタイプの人の記事に従うほうが再現性が高いと思いますので、是非その選択肢の一つとして活用してもらえると嬉しいです。
書籍も頑張って書いたので是非購入してください!
X(Twitter):@noumi0k
Discussion