こんにちは!WEBエンジニアのやすおです!
プログラミングの学習方法は様々あります。例えばプログラミングスクールに行ったり、僕みたいに職業訓練に行ったり、あるいは独学したりと…
今あげたものの中で圧倒的に成功率が低いのは独学です!(言い切ります)
もちろん独学でエンジニアになった人たちは沢山いますし、これから独学でエンジニアになろうとしている人たちを否定するわけではありません。独学だったらPC代と教材費だけなので経済的ですもんね。
でもほとんどの方は独学の落とし罠に落ちて失敗していきます。かつての僕もそうでした。大学時代にC言語に手を出して見事に撃沈しました(笑)
それでは具体的にどんな罠があるか紹介していきます。
この記事はプロのエンジニアを目指す人を対象としています。趣味の方は独学でもいいと思います。
罠その1 環境構築ができない
沢山の知識が必要
環境構築とは、簡単に言うとプログラミングできるように環境を構築することですが、これには様々な知識が求められます。サーバー、ネットワークの知識も必要となります。
意外とハードルが高いのでこの時点で嫌になって辞めてしまう方もいるかと思います。
僕自身も大学時代C言語を学習しようと思ったのですが、コンパイラにPathを通す方法がわからず結局諦めてしまいました。
実は環境構築はプロでも難しい
プロが新しい現場で環境構築する場合ですが、新しい言語や仕様だった場合は丸一日かけて設定することもざらです。
最近ではクラウドの進化が進みAWSで簡単に設定できる現場もあるのですが、すべての現場でクラウドが採用されているわけではありません。
環境構築で詰まって辞めるというのはプログラミング学習あるあるです。
罠その2 聞ける人がいない
メンターの重要性
あまり聞きなれない言葉かもしれませんが、プログラミングの教育者、助言者のことを「メンター」といいます。
このメンターですが、プログラミング学習において非常に重要な存在です。なぜならほぼ100%に近い確率で初学者はプログラミングに躓くからです。
上記の環境構築や、エラーなどで躓いたときに解決に導いてくれるメンターの存在がなければプログラミング学習を進めていくのは困難になること間違いなしです。
僕自身も訓練校時代にメンターにかなりお世話になりました。僕が3時間悩んでたエラーを一瞬で解決してもらった時には「神様かな」と思いました(笑)
罠その3 エラーが解決できない
エラーは英語で表示される
エラーは「10行目に書いてある変数が初期化されてないので初期化してね。」みたいな感じで書かれません(当然ながら)。
大体は長文の英語で書かれるので、ある程度英語が理解できないと詰まります。
そこまで難しい英語が使われているわけではありませんが、場合によっては何ページにも渡る英語のエラー文が表示されることがあります。
初心者の段階でこのエラー文を読むのは結構、心が折れるんですよね。
エラーの解決方法がわからない
簡単なエラーだとエラー文をググってそれっぽい解決方法が載っているサイトを参照すれば何とかなります。しかし難しいエラーの場合はかなり長時間そのエラーに取り組むことになることは間違いないでしょう。
職場の先輩から聞いたことですが、エラーが全然取れず、解決するまで結局1週間かかったことがあるらしいです。こんな状態になったらほとんどの初学者はプログラミングを諦めてしまうと思います。(僕でも諦めます)
罠その4 悪い癖がつく
可読性
実務では重要なのに、普段の学習であまり意識されてないことの一つに可読性が挙げられます。特にインデントがそろってないコードをよく見かけます。
インデントとは簡単に言ってしまえば字下げのことです。プログラミングには「可読性」という概念があり、文字通り読みやすさのことを意味します。
開発現場では可読性が重視されるので、可読性が低いコードは嫌がられます。
僕自身もメンターに直してもらっていたのですが、独学だとその機会はありません。
駄目な例
for($i=1 ; $i < 100 ; $i++)
{
if($i % 2 == 0)
{
echo "偶数だよ";
}
else
{
echo "奇数だよ";
}
}
良い例
for($i=1 ; $i < 100 ; $i++)
{
if($i % 2 == 0)
{
echo "偶数だよ";
}
else
{
echo "奇数だよ";
}
}
構文
独学で「とりあえず動けばいいや」という考えのもとコードを書いてしまうと悪い癖がつきやすいです。誰にも見られていないと動くことが最優先になってしまうので成長しにくいんですよね。
僕自身もメンターにご指導いただき今では何とか、ましなコードが書けていると思います(多分)。
一時期、プログラミング未経験者のメンターをしていた時に生徒さんの中で一番面白かった良くないと思ったコードをご紹介します。
良くないコード
for($i = 0 ; $i < 100 ; $i++){
if($i == 1){ echo "1"}
else if($i == 1){ echo "1"}
else if($i == 2){ echo "2"}
else if($i == 3){ echo "fizz"}
else if($i == 4){ echo "4"}
else if($i == 5){ echo "buzz"}
else if($i == 6){ echo "6"}
else if($i == 5){ echo "7"} . . .
良いコード
for($i = 0 ; $i < 100 ; $i++)
{
if( i % 3 == 0)
{
echo "Fizz";
}
else if( i % 5 == 0)
{
echo "Buzz";
}
else if($i % 15 == 0)
{
echo "FizzBuzz";
}
else
{
echo $i;
}
}
罠その5 モチベーションが続かない
プログラミング学習において意外に大事なの事の一つとして「モチベーション管理」が挙げられます。
プログラミングは面白くなってくるまでにある程度の時間がかかります。にもかかわらず上記に挙げたようなことで、段々とモチベーションが下がっていきます。
仲間がいない
プログラミング学習において仲間の存在は重要です。時に励ましあい、時に切磋琢磨する存在は自分高めてくれます。プログラミングの悩みも共有しやすく精神を安定させてくれる存在でもあります。
プログラミングスクールに入ると必ず自分と同じくらいのレベルの人がいます。そういう人はいいライバルになるんですよね。
何か目標達成するためにライバルの存在は重要です。あいつにだけは負けたくないという気持ちが自分を成長させてくれます。
独学でも勉強会などに行けば出会えるのですが、毎回勉強会に同じ人が来るとは限りません。
また定期開催の勉強会は多くて週1回がほとんどなので会える確率は高くないんですよね。ここら辺が独学の辛いところです。
誘惑を断ち切れない
プログラミング学習をするときは大体自宅になると思うのですが自宅って誘惑だらけですよね?スマホの中には時間泥棒が沢山います。
私が通っていた訓練校は授業中に携帯電話を触ることが禁止されていたので、強制的にプログラミングをする環境が整っていました。
誘惑に弱い方は、独学で学ぶのはかなり辛いです。
時間がかかりすぎる
結局エラーの解決や環境構築、サーバーやネットワークの習得に独学だとかなり時間がかかってしまうんですよ。
極端に言えば、解決するのに3時間かかるエラーをメンターが3分で解決できれば60倍の速さで学習できることになります。
また、単純に体系化されていない勉強法より、カリキュラムに則った学習のほうが圧倒的に成果が出ます。
結論
- 独学での学習は大体挫折する。
- それでもやりたい人はメンターをつけよう
- 効率的なのはカリキュラムに沿った学習
RUNTEQ(ランテック)
実践型Webエンジニア養成プログラミングスクール(低価格です)
TechAcademy
最短4週間で未経験からプロを育てるオンライン完結のスクール
TECH::CAMP
スパルタ式プログラミングスクール!自分に甘い人はぜひ!
DMM WEBCAMP
転職を本気で考えている方向けのプログラミングスクール!
お仕事決まれば全額キャッシュバック!転職特化型Ruby実践研修
僕は元々Fラン大学出身で、ブラック企業の社畜だったのですが、30代前半でWEBエンジニアとしてIT企業に転職して人生が大きく変わりました。
WEBエンジニアは実務経験1年程度あれば月収50万円は稼ぐことが出来ますし、実務経験2~3年程度あれば年収1000万円稼ぐことも可能です。
もちろん稼ぐためには努力は必要です。しかし、逆を言えば「努力が必ず報われるのがエンジニア」という職業です。
エンジニアになって稼ぎたい!理想の働き方をしたい!と思っている方は「未経験からエンジニアになる方法」を読んで、ぜひ挑戦してみてください。