プログラミングの具体的な学習方法
非IT企業や非ITエンジニアの方には、「エンジニア=オタク」というイメージを持っている方が多いようです。私も個人的な感想としては、やや多いかなぁ~と言う印象です(汗)。
自分がオタクだと思っている方には、良い業界かもしれませんね。私自身もオタク気質があります(笑)。
プログラミングの学習法
今回は、プログラミングの学習方法について解説させていただきます。プログラミングの学習といっても、「コードを書く」「本を読む」「セミナーに行く」など、いろいろありますが、「コードを書く」のがもっとも、力がつく方法です。
野球でいうと、投げ方や打ち方について、お手本を示してもらうことは重要ですが、自分でプレーをしなければ上手くなりません。プログラミングも当たり前ですが、「自分でコードを書く」というのがもっとも力がつきます。
その上で、本を読んだり、セミナー受講して、自分の知らない方法を取り入れるのが、非常に良いと思います。
具体的な学習法とは
全くの未経験の方にとって、大事だと思う点を挙げると、下記のような点かなと思います。
なるべく簡単な言語を選ぶこと(具体的には、PHPやRuby)
- 最初は、基本書のコピペ+値を少し変えるぐらいでOK!
- 最初から全てを理解しなくてイイ(慣れることが大事)
- 成果物(自作Webアプリ)を作る
- 勉強記録を残す
- 完全な独学は避けた方が無難
最初の言語は、PHPがベター!?
プログラミングを全くやったことがない方には、私はPHPをお勧めします。(「無料PHPスクール」をやっているからではありません!むしろ、その逆です。)
ただこれには、当然、前提条件があります。
- なるべく早く、習得したい!
- 長期間(概ね3ヶ月以上毎日)の研修、授業などがない
PHPは様々な問題もあり、プログラミング熟練者の中には、嫌う方も多々います。
それであっても、私がお勧めする理由は「他言語と比べると身につけるまでの時間が圧倒的に少ない」ことです。
後述しますが、プログラミングは独学、あるいは、それに近い環境の方が、身につけようとする場合、非常に大変です。
多くの方はわからないことや、上手く進まないことから挫折してしまいます。(私もその一人ですし、そういう方をものすごく、たくさん見てきました・・・)
最初は、なるべくハードルを低くすることが大切です。
Rubyも、同じような理由で良いのですが、RubyでのWeb開発 = Ruby on Railsの学習になり、最初は少し学習コストが高く、最初からフレームワークをやるのがややデメリットだと思い、PHPの方がいいかなと思っています。(需要もPHPの方が、圧倒的に多いですしね。)
逆に、学校や会社で、3ヶ月〜半年間の研修があるような場合は、プログラミングの基礎を覚えるという点で、Javaが適していると思います。
最初はコピペでOK!
学習は、書籍や無料動画サイトのものをコピペ(書き写し)するのが良いと思います。慣れてきたら、値を少し変えてみたり、自分なりの処理を入れてみる、など、カスタマイズしてみてください。
そして、全て完全に理解しようとしないようにしましょう!真面目な方ですと、「概念」を一生懸命理解しようとして、熱心に質問される方がいらっしゃいます。
とても素晴らしいのですが、よほど天才的な頭脳の方を除くと、未経験でプログラミングを最初から、全て理解できる方は稀です。とりあえず、この場合は、このように書く、前もこのように書いたから、今回もこのように書くというような、ある意味「いいかげん」な手法が大切です。
就職後は、これだけではダメですが、最初のうちはこれでOKです。そして、ある程度、色々なケースを見ることによって、初めてどんな意味なのかが「わかる」ようになってきます。
「わかるから、できる」のではなく、「できるから、わかる」が正しい順番です。
成果物(自作Webアプリ)作成が必須
書籍や無料動画サイトで、一通り学習したら、必ず自分なりに作りたいアプリ(成果物)を作るようにしましょう。
プログラミングは「この機能を実現するためには何が必要なんだろう?」とウンウン唸って、考えることが一番、力がつきます。
書籍や無料動画サイトを写しただけでは(それは大切ですが)、力がつきません。そのために形になるアプリを作るのがベストです。
私は、今でも新しい言語を覚えるときはアプリを実際に作ります。またアプリは面接にも活用できます。
真面目な企業であれば、就職時には、書いたコードや実際のアプリを見せてくれというところがほとんどです。アプリは、自分が興味あるものがベストですが、どんなものを作ればいいかという方もいるでしょうし、未経験者ができるものには限界もあります。
現実的には、会員制掲示板などがお勧めです。
理由としては
- ログイン機能
- DB連携
- 一覧、新規作成、編集、削除
といった、Webアプリに必要な基礎的な知識が身につきやすいからです。
勉強記録を残そう
勉強していて分からないことや、新しく出てきたことは記録しておきましょう。エンジニアには、次から次へと新しいことが出てくるので、記録しておかないと、忘れてしまいます(汗)。
自分がやりやすければ、なんでもいいのですが、ブログやQiitaなどがあると、単純に就活にも役立ちます。(提出を求める企業もあります。)
できれば、完全な独学は避けた方がイイ!?
ここまで、
- 簡単な言語(PHP)を選ぶ
- 最初は、書籍や無料動画サイトでコピペ程度の学習
- 成果物(自作Webアプリ)作り
ということを説明してきましたが、プログラミング自体全く初めてという方は独学は極力選択肢から外したほうがイイです。
対面で、実際にエンジニアが横にいる環境で勉強した方がベターです。理由として、・プログラミングの完全な未経験者・対面以外の学習のみ
の方で、就職可能なレベルまでプログラミングを身につけられた方は、ほとんどいないからです。
上記の条件で、プログラミングを身につけられるのは、おそらく5%以下だと思います。これは、私の考えというより、実際に未経験者を数百人、指導した上で、上記の結論に達しました。
「独学で、プログラミングを勉強し、就職した」という方のほとんどは、
- エンジニアではないが、IT企業に勤めていた
- IT企業で、エンジニアに近い仕事をしていた
- 周りに少しではあるが、聞ける存在(友人)がいた
- 学校(あるいはそれに近い環境)で少しやっていた
というような方がほとんどで、私の定義からすると「未経験」「独学」ではないです。
そういった意味で、プログラミングにおいて、完全な独学は極力避けた方が良いと、私は思います。これは、私がITスクールの講師ではなかった頃から、一貫して変わっていません。
実際に学習すれば、分かりますが、分からないことや、エラーの嵐で、ほとんど、まともに、学習が進みません。経験者であれば、10分で分かることを未経験者は、何日も悩むことになります。(何日も悩んで、解決できれば、まだイイ方ですが・・・。)
まとめ
学習方法について、書きましたが、おそらく、特段珍しいものではなく、一般的な指導者であれば、詳細は違えど、似たようなことを言うのではないかと思っています。プログラミングの学習は、初期段階ではある程度「正解」が決まっていますので、あとは「やるだけ(行動するだけ)」ですね。