プログラミングを学ぶうえで大事にしている3つのこと
はじめに
私は学生時代に独学でプログラミングを初めてから何度も挫折しかけながら今日まできました。その中でもっとはやく意識しておきたかったこと、大事だと感じたことから、私が普段プログラミングを学ぶ上で大切にしていることを3つにまとめました。
今回の記事はあくまで私の考える持論であり、人によっては意見が違うことを理解しております。こんな考えの人がいるんだな程度に読んでいただけると幸いです。内容としてはプログラミング初学者に向けたものとなります。
「IT業界はとにかく流れがはやい」
この言葉を今までにいろんな人の口から聞いてきました。
確かにIT業界で仕事をし、プログラミングを学んでいると特に感じます。
日々GitHubのトレンドが変化し、数年前に流行ったフレームワークがより新しい技術によって淘汰される、拮抗する技術同士で論争になるなど。
このような変化を体感する中で、IT業界は他の業界に比べて情報の変化が激しい為、常に勉強し続ける姿勢がとくに大事だと日々感じております。
今回はそんな私が変化の激しいIT業界に身をおくなか大切にしていることを過去の反省を振り返りながらまとめていきます。
私がプログラミングに興味を持ち勉強を開始したのは2016年のことでした。
当時、学生だった私はドットインストールというサービスを知り、毎日のようにHTMLやJavaScriptの動画を見ながらひたすら写経していたのを覚えています。
プログラミング学習サービスとしてよく名前が挙げられるProgateも後々にアカウントを登録して使いました。どちらのサービスも無料と有料のプランに分かれており基礎的なことは無料プランでも十分にカバーできるのがよかったです。
しかしここで私はプログラミング初学者が陥りがちな罠にハマりました。
自信過剰という罠
ドットインストールの動画を見て写経してアプリを作ってみる。これはプログラミングを勉強する上で大切な要素でもあると感じます。しかし、このプロセスを得る中で、インプットしたという満足感と優越感に襲われて1回きりの学習で理解しきったという錯覚を覚えることも多々ありました。これはインプットに比重をおいてしまっている故に起こることです。
プログラミングに限らず、学習においてインプットだけでなく、アウトプットすることが特に大切です。
インプットだけで満足して理解した気になり自信過剰なまま、学習続けた結果として壁にぶつかりプライドを折られてしまい結果的に挫折するといったことに繋がりかねないのです。
過去の私がそうでした。ドットインストールからのステップアップとして分厚い技術書を何冊か購入しましたが、読みすすめることなく積ん読になったりなど数えたらきりがありません。
ある程度学習を進めた段階でステップアップしていく必要があると感じたのはここ数年だったのでもっとはやくアウトプット中心の学習に切り替えるべきだったと少し後悔しています。Progateやドットインストールで作成したWebベースのサンプルアプリを自分の使いやすいように処理を追加してみる、デザインが気になったらBootstrapを導入して見栄えをよくにしてみるなど。これも立派なアウトプットです。
プログラミングにおいて基礎部分のインプットも大切ですが、ある程度理解したあとはアウトプットに比重をおいた学習にシフトしてこそ技術力は磨かれていきます。
私が大事にしていること
とりあえず調べる・やってみようという姿勢【インプット】
IT業界では毎日のようにトレンドが激しく変わり、また新しいツールやサービスがどこかでエンジニアに生み出され続けています。
学習をすすめる中で正しい情報をうまく取り入れ、学んでいくことは大切です。アウトプットが大切といってもインプットなしではアウトプットできません。土台作りとしてのインプットも大切となります。
「この技術は今後使いことないだろう」などと食わず嫌いをせず、気になった技術があったらとりあえず公式ドキュメントを覗いてみる、環境構築して触ってみることも大事です。技術に触ったことがあるとないでは、情報の受け取り方が大きく変わってきます。
私は過去の経験から自分の勉強している分野に関係ないと食わず嫌いせずに、知識として身につけておくように意識しています。多様な技術を知っていることで開発のとき、比較しながら技術選定を進められるなどの柔軟に対応できると感じます。
「百聞は一見に如かず」
とりあえず挑戦してみようという精神を大事にして学習を進めてみましょう。
最初から完璧に理解しようと思わない
完璧に理解しようとして、挫折してしまうのはもったいないと感じます。
私は、プログラミングは1回の学習だけで理解しきれるものでは無いと考えています。たくさんの複雑な要素が絡み合っていることが多く、たった1つのコマンドを覚えるだけでもその意味を理解するのが大変など、使えるようになるまで時間がかかる技術もあります。
完璧に理解しようという姿勢は悪くないのですが、完璧に固執しすぎると逆に時間の配分を誤ったり遠回りをしてしまうことにも繋がりかねません。
勉強をしていく中で点と点がつながるように理解できるタイミングは存在します。まずは、幅広く知識を身に着けながら技術を組み合わせるのがいいかと感じます。最初に学習してよく分からないと感じた部分でも、他の技術を学習した後に見直すとすんなり頭に入ることも多いです。
目的を明確にして、どのような技術が必要なのか、学習コストはどのくらいかなどを考えて学習することで学習は進めやすくなります。
Web開発を学ぶとき、どのような技術を学習すればいいのかを調べるときはChromeの拡張機能である"Wappalyzer"がおすすめです。
この拡張機能を導入することでWebサイトやWebアプリを構成している技術を分析できます。
いつも使っているサービスの構成が可視化されることで新しい発見あり見ているだけでも面白いです。
実際にモノを作ってみる【アウトプット】
最後に、よくプログラミングを学習する中で言われることが多いことですが、受け身の姿勢で勉強するだけでなく能動的になにか動くものを作って公開してみることも大事です。書籍や動画など今はプログラミングを学ぶ手段は多様化してきています。プログラミング言語、CLI、IDEなどの開発ツールなど世の中には優秀な先人たちが作った便利なツールや学習教材がありふれています。インプットするのにはとても十分すぎるほどに学習教材が充実している中でいかにアウトプットして技術を自分のものにできるかが大事になります。
人間は忘れる生き物なので学んだことを使わなければ、やがて忘れてしまいます。しかし短期間に何回も使われた情報、つまりアウトプットされたは脳が大事だと認識し長期的な記憶にとどめておこうという脳の仕組みがあるそうです。そのことからアウトプットする習慣をつけることのメリットは計り知れないものがあると感じます。
今持っている知識を活用してWebサイトやアプリケーションを実際に作ってみることが大切です。
開発をする中で試行錯誤しつまずいたら教材を見返す。この繰り返しで少しずつでもプログラミングを理解していくことが大切です。
HerokuやNetlify、Vercelなどといったホスティングサービスも充実しており、Webアプリのデプロイもかなりハードルが下がったように感じます。ホスティングサービスで自分の作ったアプリ、サービスを公開して誰かに見てもらう、技術選定で意識したことや苦労した部分を技術記事として公開してみること気づくことも多くあります。
特に、自分で作ったサイト、アプリケーション、サービスは愛着が湧きます。自分が作成したものをどんどん使いやすく改善していこうという姿勢は今後の学習モチベーションの維持にも繋がっていきます。勇気を出して発信してみましょう。
さいごに
長くなりましたが、今回は私の考えるプログラミングの勉強方法について語ってみました。初めてポエムのような記事を書きました。
ZennのTech記事とidea記事の分類によって自分の意見や考えたことを気軽に投稿できるのはとても便利だと改めて感じました。
今は、ここZennやQiita、noteなど個人がアウトプットできるコミュニティサイトは多く存在しています。学んだことを誰かに伝える目的で使うのはもちろんですが、備忘録として明日の自分に向けて発信することで、さらに学びを加速させていきましょう。
私も日々新しい技術を学習しているため、今後の学習においても初心を忘れることなく継続してアウトプットをしていきたいです。
最後まで読んでいただきありがとうございました。
Discussion