プログラミングの取得までの学習時間についてくわしく解説してきます。
これがなぜかというとプログラマとして転職をする場合
- 実務3年以上
- 3年以上の業界経験
などという条件を目にすることが多いからです。
これは決して差別というわけではなく、「即戦力となる一人前のプログラマを急募している」という意味です。
実際に1つの言語を習得しつつ、Webページやアプリで汎用的に使えるようになるまで最低でもそれだけの期間が必要になるからです。
プログラマ同士の会話では
自分は独学で言語を習得したね
1ヶ月勉強したらそこそこできるようになっていたよ
という言葉をよく耳にします。
しかし、この会話は「ある程度の基礎」が出来ていて、「プログラミングのノウハウ」を知っているからこそできるものです。
では、プログラミングの知識もない「まったくの未経験」の状態から「転職にも困らないプロのエンジニア」になるにはどれだけの学習期間が必要になるのでしょうか。
ここからは
- 全くの未経験からプロのエンジニアになれるまでの学習時間
- プログラミング学習で挫折しない考え方
- 最短で学習するコツ
などについて解説していきます。
プログラミング習得までのスクールで学んだ場合の学習時間(学習期間)
プログラミングスクールでの学習だと、早い人で2、3回の講義で「簡単な画面に文字や画像を表示する」レベルのプログラムでを作ることができます。
文系出身者で「プログラミングを全くやったことがない」という人であっても、2、3ヶ月で実務レベルのプログラムがある程度は組めるようになります。
簡単な「データ登録用のアプリ」を作ったり、条件によって「ボタンの表示を変更する」くらいのアプリなら作ることは可能ですよ。
もちろん、若手プログラマに対して難易度の高いことや複雑な業務はやらせません。
大体は「簡単な画面」や「アプリを2、3個」作った後で少し複雑に条件が合うものを制作することが大半です。
プログラミングの基礎を抑える入門レベルになるまでの目安は200時間
基礎を理解し、スタートラインに立つまでは200時間かかります。
200時間は適当な数字ではなく、きちんと根拠のある数字です。
プログラマはほぼ毎日
- プログラミングの勉強
- トレンド情報収集
- 市場の調査
を自主的にやっています。
個人差はありますが、伸びが早い人は短くとも1週間に15時間以上は勉強しています。
会社の研修でも平日は1日2時間、週末は1日4時間は勉強してほしいとよくいわれます
先述したようにゼロからプログラミングを学び、実務レベルまで使えるようになるまで「最低2、3ヶ月」かかるといいました。
これを「プログラミング習得までのスクールで学んだ場合の学習時間(学習期間)」
の期間に当てはめると
- 平日2(時間)×5(日)+週末4(時間)×2(日))×8(週間)=144時間
- 平日2(時間)×5(日)+週末4(時間)×2(日))×12(週間)=216時間
となります。
しかし、これはあくまでも「入門レベルに至るまで」ということに注意してください。
プログラミング初級者になる学習時間の目安は2700時間
入門の次の「プログラミング初級者」になるまでは約2700時間の時間を要します。
基礎を抑えてある程度習得しただけでは「プログラミング初級者」ではありません。
プログラミング初級者(見積では「初級プログラマ」と記載するケースもあります)は以下のスキルが必要になります。
- プログラミング言語を習得している(入門レベル)
- Webページ、アプリであっても一定の開発品質を備えている
- 簡単なものであれば機能の提案ができる
- 担当する機能の設計書が書ける
- 担当する機能の細分化が出来て、ある程度の開発期間が見積れる
ここまで出来ると「中級プログラマ」だと思いますよね?しかし、これはあくまで「初級プログラマ」のレベルです。
ここから中級以上になるにはさらに多くの経験や学習時間を要します。
エンジニア転職(就職)できるレベルになる学習時間は約2700~7000時間
エンジニアとして転職(就職)できるレベルになるまでには個人差はありますが約2700~7000時間の時間が必要になります。
この数字はエンジニア転職するためには、最低でも1年の業界経験があることが望ましいです。
上記の学習時間を考慮すると「約2700~7000時間」という数字になります。
ただ、これはあくまでも「現場に配属されるレベル」「プロジェクトに入れるレベル」に入れるレベルになります。
未経験でも積極採用をしているところは多くある。
ここまでエンジニアとして仕事にするにはとても長い経験や学習時間を必要と述べてきましたが最近は未経験でも採用している会社もあります。
というのも近年はエンジニアが全般的に枯渇しており、少しでも経験のあるエンジニアはみんな大手企業に入ります。
そのため、中小企業や関連企業までエンジニアが不足しているが現状です。
最初の1年はシステムのテストをしながら業界経験を積んで仕事を覚えさせるという会社も最近は増えてきています。
スマホ開発(To Do リスト作成)ができるようになるまでの学習時間
To Doリストの作成をするアプリを開発できるようになるには、1ヶ月程度の学習でできるようになります。
最もオーソドックスなTo Doリスト開発のステップは
- To Doリストの入力ページの作成
- 入力したデータの登録
- 期日の登録
- 期日が近くなったら通知する機能
の4ステップになります。
いずれも「簡単なデータ入力」や「データ呼出し」でできるようになるので参考書でも比較的序盤で出てくる内容です。
独学で学んだ場合のエンジニア転職までの学習時間はおよそ10000時間
完全独学で勉強した場合、「現場に配属されるレベル」になるには4年、学習時間にして10000時間はかかるとみていいでしょう。
筆者は業界経験者であり、独学で色々な言語を勉強してきました。
なかでも当時最先端の一つであった言語の「Perl」は4年間勉強してきました。
しかし面接ではことごとく落とされたり、中には書類選考で門前払いもされました。
独学だとそういった「業界の動向」についても疎くなってしまうので、
- ある程度どの言語が伸びるかの予想を立ててその言語を習得する
- 安全のために現在市場が安定している言語(javaやC#など)も同時に習得する
など2つの対策をする必要があります。
その読みの正確性や運も問われるのでなかなか「何年でエンジニアになる」という結論を出すのは難しいものがあります。
ただ、1つの言語を習得するためには経験上独学では1年~1年半かかります。
3つの言語を習得することが望ましいことを考えるとやはり4年はかかるのではないかと結論付けました。
『プログラミング習得』の定義は人によって様々
「プログラミング習得」と一言で言っても「誰を」対象とするか、「誰が」判断しているかによって大きく異なります。
例えば大学や専門学校の講師だと、「単位が取れればOK」とするでしょう。
スクールの講師だと「ある程度基礎ができて、独力でプログラムが組めるようになればOK」と判断します。
それは「教える側」が「教わる側」に対してのそれぞれの職責があるからです。
そして筆者のような「右も左も解らないような駆け出し」からシニアチーフエンジニア(最高技術責任者)に上り詰めた立場から言うと、本当の意味での「習得」は永遠に有り得ません。
勉強をすればするほど「自分が解っていなかった」という現実を突きつけられるからです。
そのため、「基礎を理解している」で一旦習得したという風にしています。
一つのプログラミング言語を身に着ける(習得するまで)の基準となる時間はどれくらいか
1つのプログラミング言語を身に着けて、現場レベルまで昇華させるためには最低でも1年はかかります。
新人にも「簡単な開発」はさせてもらえますが、ベテランが担当する機能や画面とは難易度が大幅に異なります。
そこからその言語で不自由なくお金を稼げるようになるには3年はかかると思っていただいて結構です。
3年経ってようやく「なんとなく中核となるような機能を作れるようになった」レベルに達します。
webサービスエンジニアとして働くまでのHTMLやCSSの学習期間
webサービスエンジニアとして働けるようになるには半年間の学習期間は必要となります。
「webサービス」というと結構範囲が広くなってしまいます。
これはあくまでもHTMLによる「webページの開発」、「ASP.Net」や「JSP」などの画面描画側のエンジニアに特化した話になります。
また、ブラウザによってもHTMLやCSSの挙動が異なるため、「一定の基礎」を積んだらそれ以降は独学や実際に仕事をしながら経験を積んだほうが良いでしょう。
Pythonの基礎を習得するまでの学習期間
Pythonの基礎を習得し、簡単なアプリケーションを作れるようになるまでの期間は一般的に200時間~300時間といわれています。
もちろん個人差はあります。
しかしPythonの特徴として
- あらかじめ必要な機能が備わっている
- シンプルなコードで初心者にも手を出しやすい
という点も踏まえて学習が遅い人でも「500時間」程度あれば習得できる言語です。
人工知能などを高度なものを作るには他の言語同様に「何千時間」と掛かります。
現在スマホで普及しているタップゲームの簡易版や数当てゲーム、ハングマンであれば早い人なら「100時間勉強する」とそれらしきものは作れるようになります。
Javaを習得するまでの学習期間
Javaを習得するまでには年単位で時間がかかります。
単純に「javaが書けるようになる」には300時間程度の学習で大丈夫です。
Javaの中でもStrutsと呼ばれる開発基盤(フレームワークと呼びます)やSpring、MVCなど数多くのフレームワークが存在します。
また一般的に使われている開発ツールでeclipseというものがあります。
この「eclipse」を使って「javaが組めるレベルの基礎力」を身に着けるには最低でも1年の時間がかかってしまいます。
ただし、javaの市場は安定しているため、サンプルプログラムが掲載されているサイトやノウハウが掲載されているサイトも数多くあります。
したがってプログラミング未経験者でも「javaが書けるようになる」レベルになるためにはそこまで苦労はしません。
しかし、そこから先は使うツールや目的によって求められる学習期間が異なってくるということを覚えておいてください。
プログラミングのレベル:どの程度のレベルでエンジニア転職できるのか
採用やプロジェクト配属にも関与している筆者の観点でお話すると最低でも「初級プログラマ」レベルは欲しいところです。
ただ、勘違いをして頂きたくないのは「プログラマになることがゴール」ではなく、「プログラマになることがスタート地点」ということです。
20代であれば吸収力も早く、市場の動向にも敏感になり今後のキャリアパスの選択肢はたくさんあります。
しかし、30代を過ぎると「何かの技術に特化した」エンジニア像が求められます。
プログラミングを最短で習得する方法
プログラミングの学習方法は
- 独学
- スクール
- OJT(研修)
などあり、その人によって効率というものは異なってきます。
ここではプログラミングの学習で挫折をしないために、いくつかアドバイスをさせていただきます。
『成長曲線』を理解して基礎をじっくりと身につけよう
成長曲線とは「自分の成長度合い」を可視化したものです。
システム開発をするということは「数千行~数十万行」のプログラムを書くことになります。
挫折する人の大半はその膨大なプログラムに押しつぶされ、「自分にはここまで書けない」と思い込んでしまうことが主たる原因です。
つまり基礎を理解し、「自分の理解度」を成長曲線にして表せば以前読めなかったプログラムがいつの間にか読めるようになります。
そしてさらに勉強をすることで「読める」から「書ける」に変わります。
社会で活躍していたり、高い知識を持っているプログラマはその長い経験で
- 基礎から発展させた組み合わせ方
- 効率のよいプログラミングの方法
などを模索し、徐々に仕様に対するプログラムの引き出しを増やしています。
どんなに優秀なプログラマであっても必ず躓くことはあるのです。
その時に自分が過去に勉強していた基礎に立ち戻って見直すことをやっています。
勉強するときは基礎に一番時間をかけてください。
学習を習慣化しよう
いきなり厳しい言い方をしますが、学習が習慣化していない人はプログラマとして仕事をしていくには厳しいと言えます。
先述でもお伝えした通り、「プログラマになることはゴール」ではありません。
むしろプログラマになってから勉強することが増えます。
それは若手だけではなく、業界に10年以上いるプログラマも必ず何かしらの勉強はしています。
引き出しを増やすためには
- 反復学習
- その日の反省点のまとめ
- 自分の苦手分野の勉強
などをして知識を身に着ける必要があります。
勉強で基礎を理解し、プログラマになって上のステップを目指すときに、「プログラムを理解していないことが理解できた」という第二の挫折ポイントに必ず当たるときが来ます。
そうした時に「学習を習慣化」していたら以前と同じ成長曲線を書くことでスランプを抜け出しやすくなるのです。
なるべく短期間で取得したいならプログラミングスクールで学ぶ
やはり短期間でプログラミング習得するためにはプログラミングスクールに通うことをお勧めします。
プログラミングスクールでは
- 講義を受ける
- 実際に手を動かしてプログラミングをする
- 生徒同士や講師にアドバイスを貰う
など一つのプログラムに対しても色々な側面から学習にアプローチすることが出来ます。
つまり、それだけの多くの引き出しを作ることができます。
スクールだと「皆がプログラミングができるようになる」を方針としていることがあり、極力挫折者を出さないようなカリキュラムになっています。
しかし、独学の場合は自分のペースになってしまうため、よほどストイックな意思がないと妥協を覚えてしまいます。
独学で学ぶと時間がかかる
独学でプログラミング言語を習得することは可能ですが、膨大な時間がかかります。
その理由としては
- 妥協してしまう
- 自分の立ち位置が解らない
- 得手不得手が客観的に見抜けない
- アドバイスをしてくれる人がいない
- 間違えて理解してもそれを正すことができない
という点が上げられます。
また、勘違いされやすいところで「参考書を読んで内容を覚えるとプログラミングができるようになる」というものがあります。
今まで何百人という若手を見てきましたが「座学」でプログラマになれることは100%ありません。
それは「読んで理解できる」(インプット)しかなく「実際に書ける」(アウトプット)がないからです。
日本人の傾向として「インプット」を重要視します。
プログラミングを学習するなら、人に教えてもらえる環境を整えながら、アウトプット中心の学習をしましょう。
プログラミング学習は『実践』ありき
プログラミング学習は「量」で勉強するのではなく、「実践」で勉強していただきたいのです。
学生時代に「一夜漬け」など詰め込んで受験勉強ををした記憶はありませんか?
受験やテストでそれが通用するのは「試験に出題される範囲が決まっている」からです。
「プログラミングの現場」ではそのような勉強は通用しません。
求められることはプロジェクトや顧客によって様々で「何を勉強すればできる」というものは存在しないからです。
そして独学で勉強する人の大半はこれに陥ってしまいます。
独学で悩んだら一度スクールに行ってみてください。
学校みたいに講師から生徒への一方通行の教育はしていません。
必ずアウトプットが求められるはずです。
プログラミングを始めようか迷っていませんか?
プログラミングを始めてみようと思っても学習で挫折しないか
職業として生計を立てていけるか不安ですよね。
プログラミングジャパンでは全くの初心者でも最速で安定した収入を得るプログラマーになる為に必要なステップをLINE@で配信しています。