大学に入ってからプログラミングを学び始めた多くの学生が、他の学生に比べて自分の進捗が遅いと感じることがあるかと思います。
このブログでは、現役エンジニアがその原因を探り、進捗を早めるための具体的な方法やリソース、さらには学習意欲を高めるためのアドバイスをいたします。
効果的な学習方法とリソース
オンライン学習の活用
効果的な学習方法を取り入れることで、進捗を早めることができます。以下のリソースを活用してみてください。
YouTube
HTML、CSS、PHP、Pythonあたりならいくらでも学習コンテンツが転がっています。
教材を買う前に一度流し見してみることをお勧めします。
気に入ったYouTuberを見つけたら、その人が言っている通りにコーディングしてみるとより効率的に学習できるかと思います。
Udemy
有料ではありますが、かなり有益なオンライン学習コンテンツです。
「Udemyで学習している」という就活生がいたら、面接官を「おっ」と思わせることができるでしょう。
専門性が浅いものから深いものまで用意されているので、どの学習段階においても有益な学習リソースとして活用できることでしょう。
学習の進め方
効果的な学習方法を以下に紹介します。
まずは基礎から
基本的な文法や概念を理解することから始めましょう。
しかし、やりすぎは厳禁です。
6,7割頭に入ったら次のステップに進みましょう。
基礎というのは、学習ではなく実践によって固まるものです。
プロジェクトベースの学習
実際にプロジェクトを作成することで、実践的なスキルを身に付けることができます。
この手法はかなり効果的ですが、最初から難しいものを作るのは厳禁です。
作成、閲覧、更新、削除を備えた簡単なシステムを作ることから始めるのをお勧めします。
ちなみに、上記の4つの機能のことをCRUDと言います。
Create(作成)、Read(閲覧)、Update(更新)、Delete(削除)
復習と反復練習
一度学んだ内容を定期的に復習し、反復練習を行うことで知識を定着させましょう。
一つの学習目標を達成するとすぐ次の学習目標に移りがちですが、自分の脳に学んだ知識が本当に定着しているのかを、冷静に見直す時間を作りましょう。
この時のチェック観点として、下記を参考にしてください。
◯ => 何も見ずに同じことを達成できる
◯ => googleで検索しながらであれば、同じことを達成できる
✖️ => そもそも何をやればいいか忘れてしまっている
実際の開発現場には必ずネット環境があります。
google検索さえできれば学習目標を達成できるということであれば問題ありません。
あとは実践の中で知識を定着させましょう。
コーディングチャレンジとコミュニティ
毎日のコーディングチャレンジを取り入れることで、問題解決能力を鍛えることができます。
Paiza
PaizaのコーティングチャレンジはDからSまであり、Dランクは一番下のランクに位置付けられているものの論理的思考が必要なので、基礎の振り返りとは別に思考力を鍛えるのにも役立ちます。
その上、ランクが上がるとIT会社からオファーが届いたりするので、自分がどのレベルなのか知れるツールにもなり、結構面白いのでお勧めです。
学習進捗が遅れる原因の特定
自己分析と原因の特定
プログラミング学習の進捗が遅いと感じる原因は人それぞれです。以下のポイントをチェックして、自己分析を行いましょう。
学習環境の整備不足
静かで集中できる環境が整っているでしょうか?
騒がしい場所だと他のことに気を取られてしまうこともあるかと思います。
エンジニア業界でよく使われる言葉で「スイッチングコスト」というものがあります。
Aのタスクをやっている途中でBのタスクにスイッチして、再度Aのタスクにスイッチした際のコストのことです。
スイッチングコストは脳のメモリを大きく消費するため、集中力の継続時間を減少させる要因となります。
別のことに気を取られないようにすることも学習効率に関わる重要なファクターです。
基礎知識の不足
プログラミングの基本的な概念や文法を理解していないと、先に進むのが難しくなります。
基礎知識はしっかり頭に入れておきましょう。
とはいえ、応用をやる中で基礎が固まっていくというのも一つの事実。
基礎の丸暗記をやる必要はありません。
細かいところは案外覚える必要がなくて、この構文でこういうことができるという簡単な構図さえ覚えておけば問題ありません。
多言語を扱うようになれば、構文の細かい作法など簡単に忘れてしまいます。
そういうのは都度検索すればいいだけなので気負いすぎないようにしましょう。
学習計画の不備
具体的な目標や計画がないと、学習が非効率になりがちです。
私が会社員時代の研修でやったのは、「閲覧・投稿・編集・削除ができる掲示板の作成」を目標に設定されており、掲示板の作成に必要なHTML、CSS、PHPの知識をオンライン学習でインプットするという方法をとっておりました。
何かを達成するために、まず何をすればいいかを考えるというのは実際のエンジニアの業務の中でも日常的に行われるものなので、目標の設定と学習計画は常に意識するようにしましょう。
リソースの偏り
教材やリソースが適切でないと、理解が深まりません。
教材には合う合わないがあります。
私のおすすめは、実際にコードを書きながら学ぶタイプの教材です。
自己評価とフィードバック
自分の進捗を定期的に評価し、フィードバックを受けることが重要です。以下の方法を試してみてください。
自己評価
毎週、学んだ内容を振り返り、自分の理解度・達成度をチェックします。
チーム開発でよく行われるイベントとして、「スプリントの振り返り」というものがあります。
スプリントというのは、簡単にいうと開発における「区切り」です。
上述した目標と計画にも通じることで、ある一定期間(1週間だったり、2週間だったり)を1つのスプリントと定義し、その中でどこまで開発を進めるべきか、どう達成するかということを決めます。
「スプリントの振り返り」というのは、1スプリントの終了ごとに行うもので、内容としては開発がどこまで進んだかという進捗共有とスプリント内でどんな学び・発見があったかということを報告します。
開発で詰まったポイントやそれをどう解決したか、あるいは、こんな便利なメソッドがあったなど、多種多様な観点で前スプリントから自分がどんな成長を遂げたかをチームに共有します。
自己評価はエンジニアとしての寿命を考えた時にかなり重要になってくるので、定期的に行うようにしましょう。
惰性でやっていると、いつか地獄を見ます。
他者からのフィードバック
周りにコードレビューしてくれるような人がいるのであれば、積極的に協力を求めましょう。
コードレビューはする側もされる側も学びがあります。
チーム開発ともなると必ず発生するものなので、早めに経験しておくと就活を有利に進められるでしょう。
モチベーションを維持する方法
学習の習慣化
毎日少しずつでも学習を続けることで、習慣化することができます。以下の方法を試してみてください。
学習スケジュールの作成
毎日の学習時間を決めて、それを守るようにします。
どうしても時間がないという日もあるかとは思います。
しかし、そんな日でも机に向かって教材を開く、学習サイトにアクセスするという行動は必ず取るようにしましょう。
本当に時間がないのであれば、実際に勉強しなくても大丈夫。
そういった一見無駄な行動によって習慣というものは形成されます。
習慣化するにあたって一番の脅威は、割り込みタスクによる継続の崩壊です。
どれだけ忙しくても、学習する姿勢だけは崩さないようにしましょう。
小さな目標の設定
達成可能な小さな目標を設定し、達成するたびに自分を褒めましょう。
例えばHTMLを学ぶと一口に言ってもやることはたくさんあります。
テーブルを作れるようになる!だったり、リンクを貼れるようになる!だったり、小さい目標をチェックリストにしてみてください。
チェックリストを振り返ってみると、過去の自分より着実に成長していることを目視することで自己肯定感が高まります。
最後に
プログラミング学習の進捗が遅いと感じる大学生のために、原因の特定から効果的な学習方法、モチベーションの維持法などを包括的に解説しました。
この記事を参考にして自分に合った学習スタイルを見つけ、IT業界で活躍するための一歩を踏み出してください。
学習を適切に行なった後は、適切な企業選びが必要です。
自分一人の知識で企業選びを行うのは非常に危険なので、エージェントを頼りましょう。
私はユニゾンキャリアをお勧めしています。
フリーランスやフルリモート環境に興味がある方は、下記の記事をご参考ください。