こんにちは、お元気でしょうか。桜がもうすぐ咲きますね
今回はプログラミング学習におけるアウトプットの重要性についての話です
プログラミング初心者はどうしてもインプットばかりをしがちです
良質なインプットはプログラミングスキル向上のために不可欠ですが、インプットだけではだめです。必ずセットでアウトプットする必要があります
その理由やアウトプットする際に意識すべきことについてお伝えします
記事構成は以下のようになっています
- プログラミング学習でアウトプットするべき4つの理由
- 知っているとできるは全く違う
- 調べる力を鍛える
- ばらばらの知識を結びつける
- 差を知る
- アウトプットする際に意識すべきこと
- エラーを避けない
- 動作を確認する
- 調べまくる
- 一歩先のスキルを得る
- 誰かに見せる
1.プログラミング学習でアウトプットするべき4つの理由
理解の穴を埋めよう!知っているとできるは全く違う
プログラミング初心者が学習を進めると新しい知識がどんどん出てきます
例えばProgateの教材はとても分かりやすく進めやすいので、一日で何十個もの個別の知識を知るということもあると思います
この「個別の知識を知る」ということは絶対に必要な学習の過程ですが、ここで満足してしまうと次のステップへ進めません
なぜなら知っているということとできるということは全く違うからです
個別の知識を知った後は実際に使ってみましょう
すると必ず思わぬところでエラーが出たり、思った通りの動作を実現できないといったことが起きます。
こういったことの原因は自分の誤解や知識の抜け落ちである場合が多いです。アウトプットしてみることでそうした不完全な理解をしている部分が特定できます
このアウトプットを通して不完全な理解を補完して、完全な理解に近づけることでグッと実力が上がります
勉強できない人がやる典型的な行動は教科書を読んで理解した気になって問題を解かないことです。なお、Progateは簡単すぎるので教科書を読んだだけと同じです(道場コースは除く)
とてつもなく超絶に頭が良ければそれも可能でしょうが、普通に頭が良い程度では絶対に無理です。必ず理解に穴があります
問題を解くとその穴が分かるので、埋めてあげればどんどん完璧な理解に近づくのに、その手間を惜しむことで理解した気になっている状態に陥ってしまいます
沢山インプットしたらアウトプットで理解の穴を埋めましょう。エラーや不具合は自分の成長の余白です
調べる力を鍛える。ついでにもっと知る
上の話から続きますが、アウトプットしていると想定外の現象が沢山起きて、それに対処する必要が生じます
なので、アウトプットしてると否が応でも調べ物をする必要が出てきます
簡単に見つかる情報もあれば、なかなかたどり着けない情報もあります。情報が見つからず、ストレスに感じることも少なくないです
しかし調べ物を何度も繰り返していくと、調べ物が上手くなってきます
例えば、検索ワードの選び方や情報がまとまっているサイトが分かってきます
プログラミングにおいて調べ物をすることは常について回ります (スマホアプリ開発メインの会社のエンジニアの友達は調べものするときは20件くらいはページを見ると言っていました)
だからこの「自分の欲しい情報を調べる」という行為は今後プログラミング学習を続けていく中で必ず役に立ちます。遠ざけないで挑んでいきましょう
また、調べ物をする副次的な効果として、思ってもみなかった知識を吸収できるというのがあります
例えば、railsの何かのメソッドの使い方を調べたら、使用可能なオプションがずらっと紹介されていて、その中に知らなかったオプションがあった、といったことはよく起きます
ブックマークしておけば後であのオプション使いたい!って時にすぐ使えますね
このように調べ物をすることで、欲しい情報だけでなく、その近傍の使える情報にまで思わずアクセスしてしまうことで学習が加速します
ばらばらの知識を結びつける(=応用する)
アウトプットを作り上げる際に、個別の知識を単純に足し合わせただけでは上手くいかないでしょう
アウトプットを作り上げるには個別の知識を絡め合わせる(連携させる)ことが必要です
例えば何かしらの処理を実装する際に、ループ処理の中に条件分岐があって、その中でさらにいくつかのメソッドが使用されるみたいなケースはざらにありますよね
このように個々の知識を結びつけて使えるようになる(簡単に言えば応用すること)ことは非常に大事です。というかそれこそがプログラミングですからね
僕はプログラミングを始めたころは上手く知識を応用できないので非効率なコード(長くて分かりづらい無駄が多い)を量産していました(笑)
後で見返すと辟易としてしまうような代物です
しかし学習とアウトプットを重ねるうちに、だんだんと応用が上手くなってきて、以前に比べれば分かりやすい簡潔なコードを書けるようになってきました
インプットだけでは知識の応用はできませんので、アウトプットを通して鍛えましょう
実用サービスとの差を知る
自分でアウトプットすると自分が今できることの範囲が明確になります
この機能なら実装できるけど、現状これはできないといった風にですね
一方、ネット上には様々なすごい機能を持ったWebサービスがあります。卑下する必要は1ミリもありませんが、そういった実用サービスと自分のアウトプットを比べてみましょう
できれば自分のアウトプットの延長線上にありそうな実用サービスが良いです
すると、現状の自分のスキルと実用サービスの差が分かります
その差はきっととても大きいでしょう。でも少し勉強したら自分でもできそうという機能が比較した実用サービス中に多分あります
こうした差、言い換えれば現状の一歩先のスキルを知り獲得すればおのずとスキルは上がっていきます
いきなり何歩も先のスキルに手を出せば挫折したり時間が無駄にかかったりしてしまいますが、一歩先のスキルならスモールステップで進んでいけます
アウトプットをすることで、このように次に得るべき技術が見えてくるので効率的に学習していけます
2.アウトプットする際に意識すべきこと
1.プログラミング学習でアウトプットするべき4つの理由を踏まえたうえで、アウトプットする際に意識したほうが良いことをまとめます
エラーや不具合を避けない
エラーや不具合は理解が十分でない証ですが、言い換えれば成長の余白です。アウトプットではそういった余白(理解が不十分な部分)を埋めていくことを意識しましょう
なのでエラーや不具合が起きてもいきなり別の方法に逃げずに、まずは真正面から立ち向かって修正を試みてくださいね
動作を確認する
当たり前ですが、プログラミングでは自分が書いたコードの通りに動作が起きます
アウトプットする際はコードと動作の因果関係を意識しましょう
「こう書くとこうなる」と理解できれば、その知識を応用できるようになります
調べまくる
分からないことは調べまくりましょう
エラーや不具合が乗じている部分はもちろんですが、上手く動作している部分でも上手く動く理由が分からない場合は調べて理解をクリアにしましょう
プログラミングを始めたばかりのころはどうしても呪文的に決まった言葉を使う場面が多いですが、だんだんと言葉の意味を理解することが大切です
調べ物に時間がかかって何も進まないという日があるかもしれませんが、みんな経験しているので気にしないでください。アウトプットの進捗はなくても良質な学習体験になっているはずです
一歩先のスキルを得る
自分のアウトプットを周囲の成果物と比べると、足りない部分が見えてきます
「この機能があったらもっとよくなる」という部分の改善に取り組むだけで成長します
誰かに見せる
最後にこれは意外と大事なのですが、アウトプットは誰かに見せましょう。褒めてくれそうな人がよいです
アウトプットを褒めてもらうとものすごく嬉しいです。これは強力な学習のモチベーションになります
また、人に見せる意識で作るとあまり手を抜けなくなるので、おのずと努力するようになりますからね
以上でこの記事は終わりです。最後までお読みいただきありがとうございます!
なお、初心者でもチーム開発でアウトプットを作っちゃう方法はこちら
https://ichitasu.com/2020/03/15/waytostudywithoutschool/