プログラミング学習において、重要なことは何でしょうか?
学習を進めていて、中々身についてないと感じる方もいらっしゃるかもしれません。
これから始める方や中々成長を実感することが出来ていない方に向けて重要なポイントについて書きたいと思います。
先に結論を伝えますとプログラミング学習において、重要な事は「アウトプット」することです。
この記事では、アウトプットする重要性やどのようにアウトプットすれば良いかについて、記載したいと思います。
書籍や動画を見てインプットしているだけ
プログラミングを学びたいと思ったら、まずは書籍や動画などの教材を探して勉強するのが一般的です。
何事も基礎が大事ですので、それは正しいことです。
しかし、それだけではプログラミングのスキルは身につきません。
プログラミング学習のゴールを本を○冊読む、この動画講座を見終える、というような設定をしている方はいらっしゃいませんか?
それだけで、本当に学んだことが定着しているのかどうか判断することは出来るでしょうか。
プログラミングに限った話ではありませんが、アウトプットというプロセスを通して、学んだことを外に出すことで、知識や技術を定着させ、学習効率を高めることが出来ます。
ですので、必ず学習のプロセスでは、インプットとアウトプットをセットで考えることが重要になります。
アウトプットすることの重要性
アウトプットすることで、プログラミング学習においてどのようなメリットがあるのでしょうか?
まず、アウトプットすることで、インプットした知識を深く理解することができます。
例えば、システムを作るというアウトプットするときには、自分が何をやっているのか、どういう仕組みで動いているのか、どういう問題を解決しているのかなどを考えなければなりません。
その過程で、インプットした知識に対して疑問や矛盾を見つけたり、新たな発見や気づきを得たりすることがあります。
自分で学んだことをブログ等にまとめるというアウトプットをするかもしれません。
まとめるという過程を通して、学んだ内容を再認識し、より深く理解することに繋がります。
次に、アウトプットすることで、自分の弱点や課題を見つけることができます。
アウトプットするときには、慣れていない段階だと何かしらのエラーやバグに多く遭遇します。
それらを解決するためには、自分がどこで間違えたのか、どうすれば正しく動くのかを調べたり試行錯誤したりしなければなりません。
ブログに学んだことをまとめて書いてみたら、
この言葉はどう意味だっけ?
このサンプルプログラムの意味がわからない!
というようなことに気づくことがあります。
アウトプットの過程で、自分が知らなかったことや理解できていなかったことが把握でき、自分の弱点や課題を把握し、改善に繋げることができます。
最後に、アウトプットすることで、自信や達成感を得ることができます。
アウトプットするときには、自分が作りたいものや解決したい問題に取り組みます。
それらを完成させるときには、自分の力で何かを創造したり貢献したりしたという感覚を味わうことができます。
これによって、自信や達成感を得られます。
アウトプットをしないままでは、達成感や成長を感じることができないので、モチベーションがどうしても下がりやすいです。
最初は、大したものは作れないと思います。でも、チャレンジして、何とか完成すると思っていたよりも達成感を感じることが出来ます。
そして、もっと難しいことにチャレンジしたい、新しいことを学びたいという意欲に繋がります。
また、アウトプットしたものを他人に見せたり共有したりすることで、フィードバックや評価を得ることもできます。
これによって、さらに自信や達成感を高めることができます。
アウトプットの方法は何でも良い
アウトプットすることの重要性は分かったとしても、どのようにアウトプットすれば良いのでしょうか?
実は、アウトプットの方法は何でも良いのです。
アウトプットとは、インプットした知識を自分の言葉や行動で表現することです。
その表現の形式は、自分の目的や好みに合わせて選べば良いのです。例えば、以下のような方法があります。
- プログラミングの教材や参考書を読んだり、動画やオンライン講座を見たら、その内容を自分の言葉でまとめたり、ブログやノートに書いたりする。
- プログラミングの問題集やチャレンジサイトを解いたら、その解答を自分で説明したり、感想を呟いたり、他人に教えたりする。
- プログラミングのプロジェクトやコンテストに参加したら、その成果物をポートフォリオやGitHubに公開したり、発表したりする。
- プログラミングのコミュニティやSNSに参加したら、その場で質問したり回答したり、意見交換したりする。
- メンターが一緒に勉強している人がいれば、その人に共有する
これらの方法はどれもアウトプットの一種です。
ちなみに、私は、学習を始めた当初、とりあえずEvernoteに読んだ本の要約や学んだことのまとめをひたすら全てノートを作って書くことにしました。
当初IT界隈に大した知識が無く、ブログやSNSでアップするという発想も無く、そういった事を教えてもらえる環境でも無かったので、、、。
ただ、後から見返しても分かるように意識しながら書いたので、今でも見れますし、あとから何度も見返しましたし、とても助かりました。
また、書いた内容は、かなり頭の中に残っていて、とても重要なプロセスだったと思っています。
どれもインプットした知識を自分の言葉や行動で表現することになります。
どれもインプットした知識を深く理解したり、自分の弱点や課題を見つけたり、自信や達成感を得たりすることにつながります。
ですから、アウトプットの方法は何でも良いのです。自分がやりやすいものや楽しいものを選べば良いのです。
お勧めのアウトプット方法
さて、アウトプットの方法は何でも良いと言いましたが、それでも何から始めれば良いか迷う方もいるかもしれません。
まずは簡単に始められる方法としてブログがあります。
ブログには以下のようなメリットがあります。
- ブログは無料で簡単に始めることができます。ブログサービスに登録すればすぐに記事を書くことができます。
- ブログは自由に書くことができます。自分が学んだことや感じたことなどを自分の言葉で書くことができます。
- 自分の学習歴を把握することが出来ます。
- ブログは他人に見せることができます。ブログはインターネット上に公開されるため、他人に読んでもらい、同じ境遇の人や、現役エンジニアとの繋がれる可能性があります。
- ブログにはコメント機能やいいね機能などがあり、他人から意見や感想などをもらうことができるかもしれません。
- 選考でのアピールにも繋がる可能性があります。
これらのメリットからわかるように、ブログはアウトプットすることに最適な方法です。
ブログを書くことで、インプットした知識を深く理解したり、分かっているつもりが分かっていないかったことを把握できるようになります。
このブログを書くというアウトプットで、大事なことは、自分の学習を定着化させることです。
アクセス数や収益を発生させることが目的ではありません。
別に大してアクセスされなくても良いのです。
とにかく学んだことを自分の言葉にして、外に出すということが重要です。
内容としては、例えば、とある本の第一章を読み終えたら、その内容のまとめと感想、サンプルプログラムがあれば、それを実行した結果やエラーに遭遇したらその解消法を書く、というイメージです。
それが、大した内容ではないと思っても、もしかしたら誰かの為になるかもしれません。
メリットが沢山ありますので、試してみて欲しいと思います。
次に、ある程度学習が進んだら、是非自分で何かシステムを構築してほしいと思っています。
ポートフォリオにもなりますし、何より、実務に繋がる経験となります。
架空の映画サイトでも良いですし、飲食店の予約システムをイメージして作っても良いです。
何でも良いのですが、本や動画に載っているサンプルプログラムでは無く、自分で考えて構築するという点が重要です。
大体の方が、初めてやってみると想像以上に時間が掛かるし、エラーに何度も遭遇するし、作り方が全く思い浮かばい、というような状態になるかと思います。
慣れないうちは辛いと感じてしまうかもしれませんが、それらを乗り越える経験を通して、自分の足りない所を把握し、新たに学びたいことが明確になり、一気に学習速度が上がります。
また、完成すれば達成感が得られますし、その過程や、エラーの解消方法などを、ブログに載せれば、更にアウトプットを重ねて知識や技術の定着化を図れます。
GitHub等にコードを公開し、ポートフォリオとして選考にもアピールとして活用することが出来ます。
多くのメリットがありますので、学習のゴールの一つとして、是非取り組んでみて欲しいと思います。
<まとめ>
以上が、プログラミング学習において重要な事の内容になります。
とにかく、インプットとアウトプットをセットで考えること、これが重要になります。
学習の定着度上げる、効率良く進めるためには必要な要素になります。
また、アウトプットする内容のレベルを考えないようにしてください。
他者にとっては簡単なことかもしれませんし、恥ずかしいかもと思ってしまうかもしれません。
しかし、目的はあなたの学習の定着化させることが目的です。
そして、学んだことを活用できる力を身に付けることが目的です。
周りの目を気にしすぎず、チャレンジしてみて欲しいと思います。
もしオープンにすることに気乗りしなかったり、作ったものを見てもらいたいというご要望があれば、私で良ければ無料でメッセージの対応を行っておりますし、サービスも出品しております。
また、SNSやココナラ上などで沢山のエンジニアの方がいらっしゃいますので、是非利用してみて下さい!
誰かに相談したり、見てもらう事でモチベーションが上がることにも繋がるかと思います。
ありがとうございました。