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