Photo by digitonin
こんにちは。倉内です。
最近はpaizaラーニングのようにWebブラウザ上でプログラミングを学べるサービスも多く、興味を持った人は誰でもすぐにプログラミングを始めることができます。
ただ、すでに学習中の方は分かると思いますが、プログラミング学習を継続するというのは思った以上に大変です。分からないこともたくさん出てきますし、思うようにいかないことだらけです。
それでも自分でコードを書いて何かを作ることは、とても楽しく達成感も得られるものなので、せっかく始めたのにその前に挫折してしまうのはもったいないと感じます。
そこで今回はプログラミング初心者が学習を継続するためにはどんなことを心得るべきかをお伝えします。
学習やモチベーション維持の方法は人それぞれだと思いますが、先人たちの知識と経験から「初心者が覚えておくといいかもしれないこと」というのは結構共通しているので、よさそうなものがあったら実践してみてください。
学習方法編
まず学ぶ対象の全体像を把握する
プログラミングの勉強ってなんとなく最初はプログラミング言語を習得することにしか目がいかないと思うんですが、プログラミング言語の習得は英語でいうと単語や文法を覚える段階です。
プログラミング言語の基礎文法は学んだけど「このあと何すればいいんだっけ…?」とならないためにもなんとなくの道筋やゴールは見据えておいたほうがいいです。
また、たとえばWebアプリケーションを作るときも、「どんな画面にしよう」とか「どんな機能を実装しよう」とかはよく考えますが、システムの全体構成についてはあまり考えないことが多いのではないでしょうか。
もちろん勉強し始めのころに、ひとつひとつの技術や仕組みの詳細を理解する必要はありませんが、全体像はふわっとでも把握しておいたほうがいいです。
こちらの記事で紹介している「Web技術入門編」では、そのあたりの仕組みを動画で分かりやすく解説しているのでチェックしてみてください。
自分が学ぶのは(学んでいるのは)どのあたりなのか、どう影響しているのか・どう関係しているのか、ひとつ学び終えたら次は何をしたらいいのかを明確にすることで学習の次の目標を立てることができます。
自分にあった学習方法・教材を選ぶ
私は書籍で勉強するのが苦手で、paizaラーニングが合っていましたが(動画を見ながら適度に演習が入るのがちょうどいい)、人によっては動画はもう1回見たいところまで戻すのが不便だなと思ったり、書籍のほうがじっくり取り組めていいなと思ったりすることもあります。
それぞれに適したやり方があるので、「自分はどうやって勉強すれば継続できるのか?」をいろいろ試しながら見つけていってください。もちろん書籍とオンライン学習サービスとの合わせ技などもよいと思います。
ただ、書籍って本当にたくさん出ているので(言語や技術にもよりますが)「どれを買ったらいいんだろう…」と悩むかもしれません。
まずはネットでおすすめ書籍まとめ記事を探してみて、それを参考に書店へ行ってパラパラと中をめくってみて「これなら読み進められそう」と感じたものでいいです。おすすめNo.1の本だったとしても自分に合わなかったら意味がないので。
以下の記事では、プログラミングの学習法やおすすめの書籍・学習サービスを紹介していますのでよければ参考にしてみてください。
サンプルやチュートリアルの改変から始める
「Hello Worldが出力できた!」というところから「アプリ作ろう!」というところまでは結構な道のりです。
なのでプログラミング言語の基礎文法はだいたい習得したという状態であれば、まずは書籍やWeb上にあるサンプルコードを動かしたりチュートリアルをやったりして、それから自分のオリジナル要素を入れて改変してみるとよいでしょう。最初はごく簡単な改変でもいいです。
paizaラーニングではWebアプリケーション開発入門講座というのがあって、たとえばその中の「Webアプリ開発入門 Django編」では「ランチマップアプリ」を作るんですが、これ結構改造しがいがありそうですよね。
ランチができるお店一覧を居酒屋一覧にしてみるとか、画面表示をテキストでのリスト表示からサムネイルつけてちょっとリッチな感じにしてみるとか…。
そんな感じで自分のアイデアを取り入れて、オリジナルアプリを作ってみてください。
はじめから完璧に理解することを目指さない
学習していると分からない内容にぶつかるときがよくあります。そういうときはまず調べてみてください。でも初心者のうちはうまく答えにたどりつけないことも多いので解決しない場合もあります。
そうなったらもういったん諦めて置いておくというのも一つの手です。「今の自分では理解するのは難しいんだな…」という自覚をするのも学びです。
ちなみにベテランエンジニアも別に100%理解してるとか暗記してるとかそんなことはなく、そのつど、ググったり書籍で調べたりしています。たくさん調べているうちによく使うものは覚えますし、検索の精度も上がってきます。
エンジニアが普段どのように疑問点を解決しているかなどを紹介している、以下の動画講座もぜひ参考にしてみてください。
もし周囲に分からないところを質問できる人がいるなら聞いて解決というのもありです。そんな人いないという場合は、インターネットを利用して聞いてみると意外と答えてくれる人はいます。
分からないことから逃げない(でも深追いしすぎない)
完璧を目指すなと言っておきながらちょっと矛盾してるかもしれませんが…。
業務となるとそうは言ってられない場面にぶつかるので「自分では分からない。どうやったら解決できるか?」を考える癖はつけておきたいところです。(とにかくググってみるのか、書籍を見るのか、公式ドキュメントをあたるのか、先輩に聞くのか…とか)
初めは難しいかもしれませんが、エラーが出たときはデバッグできると格段に解決に近づくので、余裕があればデバッグ方法を調べる(デバッグツールを使う)ことにもチャレンジしてみてください。
また、技術情報については、英語のほうが情報が早い&多いので英語から逃げないほうがいいかなと思います。私も苦しみながら公式から出てるバグ報告を読んだり同じエラーで悩んでる人いないかなとフォーラムを読みあさったりした記憶があります。そうやって解決できたことももちろんあります。
ただし、「分かるまでやる!」と言って深追いしすぎると「もう嫌だプログラミングなんて辞める!」となりかねないので、考え方を少し変えてみることも必要です。
たとえばAという機能は今の自分では実装できなそうだけど、もう少し簡単にしてBという機能で代替できないか?を考えてみるとか。一旦Aは置いておいて、C機能から取り掛かってみるとか。
初心者がプログラミング学習でつまずいた場合、どのように解決していくとよいかは以下の記事でも紹介しています。
成果を短期で求めない(長期的な目線で見る)
効率のいい学習方法を模索するのはいいことですが、結局は毎日コツコツ継続するのが近道であることが多いです。
プログラミング学習は短期間で劇的な成果を上げるのは難しいものです…。ただ、手を動かした分だけ返ってくるとも言えます。
このとき気をつけたいのは、学校や仕事しながら勉強する場合、「1日5時間必ずやる」みたいな無謀な目標を決めるとつらくなってくるので、無理なく続けられるスケジュールを考えてみてください。
私はプログラミング学習は継続したいけどどうしてもやる気が起きん…というようなときはpaizaのスキルチェックのDランク問題解くとか、動画講座のチャプター1つだけは見るとかやって1日に1回はやったぞ感を出して乗り切ってました。
ちなみにスキルチェックとは、難易度別のプログラミング問題を時間制限内に解いて自分のプログラミングスキルを測れるサービスです。詳しくはこちら
マインド編
他人からのアドバイスやWeb情報は参考程度にする
適したやり方というのは人それぞれです。もちろん自分が選んだものが絶対的に正しい保証はないのですが、同時に他人のアドバイスが絶対正しいということもありません。アドバイスは取り入れてみて「イマイチだな」と思ったら捨ててもいいです。
インターネットでは心無い言葉をかけてくる人もいるでしょう。プログラミング学習が思うように進んでいなかったり、エンジニアになったものの業務が大変で心が疲れていたり…そういう状況だと思わぬ大ダメージを受けることもあります。
でも所詮他人なので気にする必要はないですし、心無い言葉を言う人はあなたの人生を助けてはくれないので受け流しておきましょう。
あと「書籍は絶対正しい!」と思いがちですが、誤った内容が書かれている場合もあります。(公式サイトに正誤表が出ていたりします)本は情報が古くなるので特に中古で購入する際などは気をつけてください。
他人と比べて落ち込みすぎない
切磋琢磨し合えるような存在ならいいのですが、息をするようにプログラミングができる超人と比べて落ち込んでも仕方ありません。
特にインターネットにはキラキラした優秀な人・すごい人に目がいきがちです。現実世界はそんな人ばかりではありません。確かに天才的な人も存在はしますが、だいたいすごい人もそこに至るまで非常に勉強してきた(勉強している)人も多いです。
他人と比べてどうと悩んでいる時間はもったいないので、自己目標を持って過去の自分に比べてどれだけプログラミングスキルを身につけられたかに着目してプログラミングを学んでいきましょう。
自分が楽しいと思えることを大事にする
仕事だと苦手な分野にも手をつけなければならないときが来るかもしれませんが、最初のうちはとにかく興味を持てること・やってて楽しいことから進めていきましょう。
あとは実際にやってみて「これはなんかスッと入ってくる」とか「自分に合ってる気がする」と感じるものを選んだほうがいい気がします。
初心者のうちにあれこれ同時に手を出して学ぼうとすると結構厳しいかもしれませんが、自分にはこれだというのを見つけるまではつまみ食い的にやってみるのはいいと思います。
まとめ
プログラミング学習を始めたばかりの人が、学習を続けていくためにはどうすればよいかということをお伝えしてきました。
私も大学の授業で初めて本格的にプログラミング(C言語)をやったとき「自分が何を分かってないのかが分からない」レベルで嫌になったこともありました。
なので偉そうに言えた立場ではないのですが今はいろいろな情報があって「プログラミング学習を始めたころに、こういうことを知っていたらな~」と思うこともたくさんあります。逆に情報が多すぎて惑わされることもあるので、うまく取捨選択していきましょう。
ここまで述べてきたものの中で少しでも役に立ちそうだなと思ったものがあれば幸いです。
プログラミングが動画で学べる「paizaラーニング」はこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら