実践型プログラミング学習を勧める3つの理由

f:id:frruuun:20200830163921j:plain

プログラマになる人に向けて学習方法を提案します。勉強は基礎を学んでから応用を学ぶというのが一般的になっていますが、今回紹介する方法は応用を勉強しながら基礎を身につけるという方法です。具体的には、実際にモノを作るということをして、その過程で基礎を少しずつ学んでいくという方法です。基礎→応用といった従来の勉強法と異なるので違和感がある方も多いと思いますが、新人プログラマとして入社して研修が終了したら、番はじめにする業務の大半は誰かが作ったもののカスタマイズです。つまり、基礎を理解していてゼロからプログラムを作ることよりも、設計書に従って既に作られたものに手を加えるという業務の方が多いです。実際に基礎より実践を重視している Web サービスもあるので参考にしてみるのも良いかもしれません。

基礎より実践

 

f:id:frruuun:20200915135633j:plain

プログラマに必要な能力
プログラマは何でもゼロから作りあげていると思っている方も多いのではないでしょうか?現代においてゼロからプログラミングすることは滅多にありません。会社に勤めるにしても、個人で起業するにしても同じです。ゼロから作ると非常に時間が掛かるので、オープンソース(一般公開されているコード)や過去に作ったコードを流用して作ることが大半です。だから他人の書いたコードをカスタマイズする能力というのが非常に重要になりますし、逆にそれができないとなるとかなり大変です。ゼロから作る機会はほとんどないので、サンプルを真似てモノを作る方式の実践型プログラミング学習を推奨します。

そもそも、一般公開されているコードの採用や既存のコードを流用する理由は

  1. 実績がある
  2. 洗練され、無駄の少ないものが多い
  3. 汎用的に作られていて自分のコードに組み込みやすい(既に自社で似たようなものがあるならば修正が少なく済む)

というメリットをもっている場合が多いからです。特に「実績」というのは非常に重要な要因です。安定かつ安価にシステムを作るためにオープンソースをベースに開発する企業も多いです。また、プログラマはお客様の要望に応える必要があります。そのために、ときには先端技術やマニアックな技術を取り入れることもあります。その技術を勉強しなければなりませんが、使用人口の少ない技術は基礎的なことが書かれている文献がほとんどありません(あっても英語とか・・・)。ゆえに、その技術がどういうものかネット検索してサンプルコードを参考にして覚えていきます(体験談)。結局、他人のコードから学ぶ以外の術がないという状態に陥ることもあるのです。こういった理由からも実践型で学習した方がよいと考えています。

 

■モチベーションを維持しやすい
Web アプリなど、なにかモノを作りたいから勉強をするというのが一般的です。一方で、思い描くモノを作れるようになるまでには相当な知識が必要になってきます。基礎から順を追って勉強する場合、自分の作りたいモノを作るまでの道のりが長すぎて、モチベーションを維持できずに挫折するというケースも多いです。そのため、なにを作るかを定め、はじめからモノを作り出すことでモチベーションの維持が見込めます。


■自分に向いてるかわかる
プログラマとして就職することを前提で考えた場合、本当に自分がプログラマに向いているかどうかわからないという方も多いと思います。プログラマとしてどこかの企業に入社できれば向いてるというわけでもありません。多くの企業はコミュニケーション能力と勉強に対する意欲を見て判断するので、実務が思っていた内容と違って辞めるケースも多いです。私が思うに、向いているか向いていないかは実際にやってみるしかないと思います。やってみるしかないということは、やはり実践型プログラミング学習が良いのではないかと思います。

余談ですが、新人としてチームに配属されるならば、慌ただしい所に行く確率は低いです。慌ただしいところは時間が無いのです(当たり前)。ゆえに、それなりのスキルがないと仕事になりません。つまり、企業は即戦力でもない限りスキルを見て採用することはないです。「一応知ってる」だけだとほとんどプラスにならないです。ならば会社に入ってから勉強すればいいのでは?と思われたかもしれません。一切勉強しなくて採用してもらえる企業もあるかもしれませんが、そういう企業の方が少ないと思います。一般に、興味があるのに何も調べてないの?って思われるからです。なので即戦力という目的でなく、業務内容の理解という意味合いで事前にある程度勉強しておくということが重要です。それを理解するために、実際にモノを作って見ることがよいのではないかと思います。