実際に独学でプログラミングを始めようとすると、一体どのくらいで覚えられるようになるのか必要な期間が気になるところだと思います。
もちろん学ぶ言語や個人差、学習方法によってバラつきはありますし、プログラミングの勉強に終わりはないので中々一概には言えません。
しかし、ある程度の目安はあります。
そこで、今回は僕なりの経験則から独学でのプログラミング習熟期間についてお伝えします。
プログラミングの学習期間の考え方についての前提
これは英語の勉強期間なんかでもよく言われることですが、重要なのは日数ではなく時間で考えることです。
1日のうち勉強できる時間が1時間なのか、10時間なのかで同じ1ヶ月でもそのボリュームはまるで違います。
今回は平均して1日あたり3時間程度は勉強に当てられるという前提で考えてみます。
プログラミングに必要な知識
プログラミングを覚えるにあたって、基本的なPCの操作や用語は理解しているというのが前提になります。
例えばコピペを使える、ファイルの保存ができる、ある程度スムーズにブラインドタッチができるというレベルです。
さすがに『マウスの右クリックと左クリックの違いがわからない』『PCの終了の仕方がわからない』という状態からですとまずは基本的な使い方を覚えるのに時間が必要になってしまいます。
また、【ビット】や【メモリ】といった普段ネットを見ているだけだとあまり意識しない部分のコンピュータ内部の仕組みに関する知識も必要になります。
WEB系のシステム開発をしていきたい場合、さらに一般的なWEBの概念を理解する必要もあります。
これらの知識はプログラミングを覚えていく中で一緒に学んでいくことになります。
プログラミング言語の参考書ではこれらの基本的なコンピュータの概念については詳しく触れられていないことも多いので、それらは個別に学習していかないと途中で詰まってしまう可能性があるでしょう。
同様にプログラムを動かすための環境というものが必要になります。
(【開発環境】とか【実行環境】などと呼ばれます)
これが十分に揃っていない、やり方を間違っている為にエラーが発生することも多々あるので、この準備にかける時間も考慮する必要がありますね。
1つの言語を覚えるとだいたい応用がきく
世の中にはいくつものプログラミング言語がありますが、多くの言語は実は大半の部分が共通しているのです。
それはプログラムの概念的な考え方であったり、各種標準コマンドの名称であったりします。
例えばどんな言語でも変数や関数という概念はほぼ共通していますし、基本となる【条件分岐】【繰り返し】のif文、for文の使い方も概ね一緒です。
その為、汎用的なプログラミング言語を1つ覚えてしまえば、他の言語を習得することは比較的容易です。
したがって今回ははじめてのプログラミング言語を独学で覚える場合の時間の目安についてご説明します。
調べ方さえわかればOK。全て暗記する必要性はない
プログラミング言語においては非常に数多くの『API』とよばれる機能が標準で存在します。
これは簡単にいうと必要な材料を渡すと勝手に内部で処理してくれてその結果を返してくれるというものです。
例えるならば『豚肉と人参とタマネギとじゃがいも』という材料を【自動カレー作成機】に入れるだけですぐに完成品の『カレー』を作って返してくれるようなものです。
この様な【自動カレー作成機】のAPIがはじめから用意されているのです。
他にも【自動スープ作成機】や【自動チャーハン作成機】【自動シチュー作成機】など基本的なものは多くの言語で標準装備されているので、これらを組み合わせてオーダーされた献立を作っていくのがプログラミングです。
ただ、実際には【五穀米をつかったカレーが食べたい】とか【男性客はカレー、女性客はシチューを自動的にだしてほしい】のようなリクエストがほとんどなので、このプラスαの部分を独自に作り込んでいく必要があるわけです。
プロの料理人といえどあらゆる料理のレシピを暗記しているわけではないように、これらの標準のAPIは全て暗記する必要性はなく必要になったら使い方を調べればいいだけです。
実際の現場でも『コレって標準でできないかな?』って思えばそれをネットでググって、あればその使い方をチェックして利用する。というのは日常茶飯事です。
したがって『プログラミングができる』とは『何も見ないで0から全て作ることができる』ではなく『必要に応じて調べながら作ることができる』ことを指します。
初心者が独学で中級レベルに達するまでの学習期間の目安
これらを意識した上で、初心者がプログラミングができるようになるまでの学習時間をかんがえてみると【おおむね3ヶ月~4ヶ月程度】という期間が一つの目安になります。
時間すると大体300時間~350時間程度でしょうか。
内訳としては以下のようなイメージです。
では詳しい内訳を見てみましょう。
1.プログラミングの概念や基礎知識の習得(10時間)
まず最初にプログラミングとはなんぞやという概念や基礎的な知識を得る必要があります。
そもそもプログラミングって一体どんなことをするの?という場合はまずその仕組を知る必要がありますよね。
これは初心者向けの入門書やプログラミングの概念をイメージできるゲーム、アプリなんかで学ぶのが良いでしょう。
わかりやすい&とっつきやすい物が多いので楽しんでプログラミングの基礎が理解できると思います。
このときのイメージは意外と重要で、このステップで全体像がイメージできているとその後も進みやすくなります。
1冊の本を読み切る、あるいは1つのプログラミングゲームをクリアすると考えると目安として10時間程度になるでしょう。
2.プログラミングを始めるための環境準備と理解(20時間)
概念が理解できたら今度は実際にプログラムを組んでいくことになります。
その場合、最初に環境準備の為の時間が必要になります。
大抵のプログラミングの入門書には最初の章で環境構築の準備に関するページがあります。
必要なソフトをダウンロードするためのURLだったり、設定の流れが記載されているのでそのとおりにやれば最初のプログラム実行までは進めるでしょう。
しかし、この手のソフトウェアはすぐにバージョンアップされ設定画面のデザインや項目などもコロコロ変わります。
その為、参考書やサイトの説明と違っていたり、自分のPCのOSが非対応で思いがけずエラーになったりと意外と時間が取られるところでもあります。
すんなりいけば30分もかからなかったりするのですが、経験上30%位の確率ですんなりは行かないですね。
また、使いやすいように開発環境をカスタマイズしたり、外部の拡張データともいえるライブラリの設定など、中盤以降も色々と学ぶ機会はでてくるでしょう。
それらを合計するとそれなりの時間を費やすことになります。
いきなり全て理解するのは不可能なので、最初はとにかく手順通りにやってプログラムが動けばOK、という感覚でかまいません。
それ以外の部分は後から理解すればよいだけです。
※この辺りの環境に関する理解は実は結構難易度が高く、それなりの経験がある人でも実はよくわかっていないことも多いです。
3.プログラミング言語の基本構文の習得(80時間)
最低限の開発/実行環境がそろったらいよいよ本格的なプログラミングの勉強になります。
各プログラム言語の入門書にそって1つ1つ繰り返しながら理解を深めていきましょう。
大抵の場合、変数の概念→条件文→繰り返し文→標準入出力→APIや関数→・・・といった流れで進んでいきます。
おそらく参考書の半分くらいまではわりとすんなりとイメージしていけるのではないでしょうか。
この辺りがプログラミングの根幹とも言える部分であり、様々な言語の共通的な基礎になります。
完全に体に叩き込ませるべき部分なのでしっかりと理解できるまで手を動かす必要があります。
ここを疎かにすると、後半ですぐに詰まってしまいますよ!
4.プログラミング言語の応用技術の習得(140時間)
基礎が理解できたらは後は応用です。
環境構築の次に挫折するポイントはここでしょう。
参考書の後半部分にあたり、前半の基礎知識がしっかりと頭に叩き込まれていないと混乱しやすい部分です。
この応用部分を習得することでプログラミングで出来ることが一気に拡大します。
なにかプログラムで物を作るときにこの応用がどれだけイメージできるかでやれることの範囲が決まると言っても過言ではありません。
何度も反復練習をくりかえし、じっくりと学ぶべきところです。
参考書を読んだだけでは絶対にマスターできない領域です。
このときにどれだけ良質なインプットを得られるかで理解度に大きく差がでますので、1つの参考書にこだわらず様々な媒体を使って知識を得ましょう。
この応用知識がしっかりついているかどうかが1流と2流の境目といえるかもしれませんね。
わからなくて詰まってしまう壁が何度も訪れるです。独学プログラミングで知らないと絶対ハマる壁とのり越える為の4つのポイントも是非合わせて参考にしてみてください。
5.簡単なシステム開発の一連の流れを通しで実施(50時間)
ある程度応用知識も習得できた後にぜひやってほしいのが、実際に1つのシステムを1から作ってみることです。
お題はなんでもよいのでなるべく広範囲の知識が必要となるシステムを考えて、そのとおりに作成してみましょう。
個々の仕組みは理解していても、1から最後まで作ってみようとすると意外と手が止まってしまうものです。
また、何気なく考えた仕様でも実際にプログラミングで再現しようとすると予想以上に難しい場合もあるでしょう。
そういった壁を乗り越えてシステムを完成させることでさらなる応用力がつきます。
これをやると自分の中で不足している知識や弱点が明確になり、また実際の仕事でのシステム開発の流れがイメージできるので非常に効果的です。
最初に設計したシステムを実際に自分の手で作り上げることができれば大きな自信につながりますし、最後の総仕上げとして取り組んでほしいところです。
まとめ
というわけで実際にプログラミングを独学で学ぶ場合に必要になる学習期間についてまとめてみました。
もう一度いうと【1日3時間ペースで大体3~4ヶ月】というのが1つの目安です。
先程も言ったように様々なプログラミング言語で基本的な概念や考え方は共通のことが多いので、最初に学ぶ言語は正直何でも良いです。
今はJavaやRuby、PHPなどが需要が多く比較的スタンダードな言語なのでおすすめと言えるでしょう。
これらの言語であれば大体この期間で当てはまるはずです。
独学プログラミングを考えている人は是非参考にしてくださいね。