たとえば、プログラミングをノースキルから1年勉強したとしたら、どの程度のレベルまでいけますかね?
仕事するレベルまでいけますか? どんなプログラムが作れますか?
どんな勉強法が1番近道ですか?
こういった疑問に答えていきます。
プログラミングを始めようと思った時、どの位の期間勉強する事になるのかは、わりと気になる所ですよね。
途中で挫折しないためにも、ある程度の道筋というか、ゴールが分かっている状態で挑みたいものです。
そこで今回は、実体験を基にして『プログラミング独学1年でどこまでいけるのか』というテーマを真剣に考えていきたいと思います。
私はIT系の学校でプログラミングを学び、そのまま現場に入ったタイプで、実は独学でプログラミングの勉強を始めた時は一度、挫折しました。
なので、こんな記事を書こうとしながら思うのですが、『勉強って期間では測りにくい』と考えています。
ただ、そうは言っても目安が欲しいですよね。
以前にこんな記事を書いたことがあります。
Contents
参考プログラミングを独学するのに何時間必要かという疑問のための記事
続きを見る
これを基にして、『もしこれを1年間のスケジュールに落としたらどうなるか』という視点で考えていきます。
それでは、さっそく本編に進みましょう。
スポンサーリンク
プログラミング独学1年でどの位のレベルになれるか全力で考えてみる
まず、1年といってもどんな密度で勉強することになるかは分かりませんから、モデルケースを考えてみる事にします。
多くの人は、学校や会社など、何らかの団体に所属していると思います。
ということは、時間をフルタイムで投下することは難しいですよね。
そこで、毎日1時間勉強することを前提に考えてみます。
上記で参考にした記事では、360時間でプログラミングに対しての基礎的な理解を得て、その後400時間あたりでアプリケーションを開発していたと書いています。
- 学習開始から1〜360日あたりで基礎理解を得る
- 学習開始から361〜760日あたりでアプリ開発に着手する
毎日1時間の勉強だと大体こんな感じになる、ということです。
通り過ぎた道ではありますが、今から考えるとけっこう時間かかっていますね。
独学だと心折れずに継続するのは難しそうな……。
ともあれ、こういう結果になったので、詳しく見ていきます。
1.学習開始から1〜360日あたりで基礎理解を得る
まずは、基礎理解の部分です。この段階は、とにかくアルゴリズムを作ります。
データ構造・探索・整列(ソート)などのプログラムを実際に書きながら、プログラミングに慣れるのが目標です。
これを実践しても、特別何かが作れるというイメージは湧きません。
強いて言うなら、あれです。高校数学をやるために小学校の算数をやり直すみたいなイメージです。
ここは私も苦戦したところで、モチベーションを保つのが最も大変でした。
というのも、モノが形にならないんですよね。
誰かに使ってもらえる訳でもないものを、作り続ける。
たとえば学生時代に計算するのが好きだった方であれば、気に入る過程なのかもしれません。
ですが、私のようにせっかちで根気がない人間は駄目でした。
ただ、この基礎理解の部分を得るのは重要です。
何らかのプログラムを作ろうとなった時に、『外部からライブラリを持ち込む』のか、『自分で書く』のかという選択ができるようにならなければいけません。
基礎理解を得られないと、自分で書けるシンプルな部分の技術に乏しくなります。
すると、せっかく開発者の立場なのに『ソースコードが公開されていないものは作れない』という、ちょっと悲しいことになってしまいます。
なので苦戦した立場で言うのも何なんですが、重要な工程だったなと感じております。
ではどの程度書けるようになれば良いのかという話なんですが、前述の『探索・整列系』のアルゴリズムを自分の手で考えて書けるくらいの所まで行ければ、取り急ぎ問題は起こらないはずです。
少なくとも、これらを書く過程で『if〜elseをどう使っていくか』や、『ループ文をどう使い倒すか』という、最も基礎の部分は見なくても書けるレベルになります。
なお、この段階で2進数やコンピュータ上での文字列の取り扱いなど、知識として必要な部分も学習します。
これは基本情報技術者などの資格試験に出てくる内容なので、試験対策用の本を買えば多くを知ることができます。
2.学習開始から361〜760日あたりでアプリ開発に着手する
基本的な探索や整列などのアルゴリズムが書けるようになったら、実際のアプリ開発に着手します。
これは、高校数学と大学数学みたいな違いがあります。
実践を通して、今まで具体的に考えていた内容を、少しずつ抽象化していきます。
ここではこれまでに学んだ内容と違い、フレームワークやライブラリなどの『人が作ったルール』に基づいて、プログラムの知識を応用していく必要があります。
人が作ったものの中身は、もちろん自分は知りません。ここが『抽象化』の部分です。
なので、基礎理解を得てもアプリ開発までにはひとつ、大きなハードルがあるというイメージです。
ここで挫折する方も多く、私も一度は心が折れかけました。
でも、基本的なプログラミングやアルゴリズムの知識の上に、フレームワークやライブラリの使い方があるんです。
言ってしまえば、分からなくて当然。
挫折しそうになったのは、「プログラミングの基礎さえしっかりしていれば、基本的にはどんなアプリケーションでも作れるようになる」と考えていたからに他なりません。
まったく別物だと考えましょう。もう一度、1から勉強し直すつもりで。
この『基礎→応用』という図式が頭の中にできあがると、途端に色々なものの作り方が見えてきます。
第二次プログラミング革命の瞬間です。
これって個人的には初心者が脱初心者するためのステップだと思っているのですが、これといって良い学習書がないことに気付くと思います。
まずは自分が『こんなものを作りたい』というものを決めて、それを達成するための技術を探して学習する。
こんな手順で行くと、比較的迷路に迷い込むことなく、自分が手に入れたいスキルを得られるようになると思います。
プログラミング独学1年で目的のレベルに到達するために
さて、上記の内容で『プログラミング独学1年間で得られるスキル』については、ある程度の目安ができたのではないでしょうか。
もちろん、これは私の経験に基づく評価です。
我ながら物覚えが良い方だとは決して思えませんので、もっと呑み込みの早い方は、短い時間で到達できる事もあるかとは思います。
しかし、いかにできる方であっても、300時間→10時間のような、劇的な変化は見せないはずです。
そこで、実際にスケジュールとしてどう組んでいくか、気をつける事はあるかといった問題について言及していきます。
1日あたり2~3時間の学習を毎日続ける
前項までの内容だと、1日1時間必ず学習すると考えた時、アプリを作るイメージができるまでには2年ほどかかってしまいます。
1時間では実際、覚えられることはそんなに多くはありませんので、やはりここは1日あたりの学習時間を延長する方法で行くことになるかと思います。
2年を1年に縮めると考えると、大体1日あたり、2~3時間ですね。
休日はゆっくり休みたいという場合は、ざっくりもう少し多くなる計算です。
土日の4~6時間が平日にかかってきますので、1時間くらい上乗せすることになるでしょうか。
1日4時間。
さすがにここまで勉強できるなら、覚えられる事も多くなります。
ただ、1日4時間の学習を1年間、平日毎日続けるとなると、それなりのモチベーションが必要になってきます。
プログラミングを趣味にする勢いでないと達成できない事も出てくるかな、とは。
私の場合、モチベーションの維持には『ストックを作って、なるべく毎日やる』という事を意識しています。
毎日触れていると、少なからず熱量は上がっていきます。まとまった時間を作ることを努力するようになります。
でも長く続けていくと、必ず時間が割けない日というのが出てくるんです。
それを見越して、日々貯金を積み上げていくイメージですね。
「別にできない時は休みでも良いじゃないか」と思いがちなのですが、人は楽をする事が大好きです。
1日休んだ事によって、『休んでもいい』というのがどうしても、脳内にインプットされます。
1日休んだものは、2日休んでも仕方がない。こう考えるようになるんですよね。
なので私は、意地でも継続するために、貯金を毎日コツコツ作って非常時に備える、ということを意識しています。
必ずモノを作る
これは、プログラミング独学の記事ではわりと頻繁に書いている気がしますが、とにかく『モノを作る』ということを意識するのが大事です。
これをやらないと、1年の学習期間を使って、ほとんど何も進展がないという事になりかねません。
本で学習するのは、たしかに大事です。
でも、それと同じくらい、プログラミングの学習では『作る』ということが重要になってきます。
たとえば、学習本を読んでいると、変数宣言や数値の代入なんて、「こんなん書かなくてもわかるわ」と思ってしまいがちです。
過去に経験したので強く思うのですが、これは大きな間違いです。
確かに読めば意味は理解できるかもしれませんが、使えるレベルまで落ちていないんですよね。
よくやってしまうんですよ。ちょっとレベルの高い所から挑戦しようかなって。
実際に書くのは面倒なので、なるべく手間を省きたいという思考が働いてしまう。
しかし、プログラミングの世界では一見問題なく書ける内容のように思えても、実際書いてみるとうまく動かないという事がたくさんあります。
何せ、言語によってはセミコロン(;)が1つ抜けていただけでエラーを吐くような代物です。
初心者のうちは、100行書いたうちのどこのセミコロンが抜けているかなんて、ウォーリーをさがせみたいな話になってきます。
この時間のかかり具合が、学習者のモチベーションを大きく下げていきます。
どんな些細なことでも、本に書かれているコードはとりあえず書いてみる。
これを繰り返していくことで、プログラミングのイメージとエラーの対応力が自分の中に蓄積されていきます。
プログラムは、とにかく書いてみましょう。
今日を『プログラミング独学の1年』の最初の日にしよう
この記事を読んで、「なるほどやってみようかな」と思うようであれば、もう今すぐにでもやってみる事をおすすめします。
まずは言語選定ですね。手頃なものを手に取っていただければなと。
最近は記述の簡単さと対応力から、Pythonが人気です。とりあえずProgateで学べます。
何事も、初速が大事です。プログラミングの独学について調べているなら、とにかく環境を作ってプログラムを書いてみてください。
案ずるより産むが易しで、始めて見ることで得られるものが大きいです。
私も、新たなスキルの開拓にチャレンジしています。
共にがんばりましょう。