こんにちはTKGです。プログラミング素人の僕が習得するのにどのくらい時間がかかるか検証した結果を公開します.
プログラミング学習を始める上でかなりの人が気になると思うんですよね.今から初めてどのくらいでどのレベルになれるんだろうとか.漠然とした不安の中で学習をはじめるわけですよね.よーくわかります.
一説によるとプログラミング学習者の90%くらいが習得できずに挫折するそうです.漠然とした不安の中で学習をしているのですから無理もないと思います.
なので,いまからプログラミングを始めるぞ!という人に向けたアドバイスというと僭越ですが,僕の学習歴を紹介することで少しでも未来を明るく持っていただけたらと思います.
結論:半年〜1年半
結論から言うと約半年〜1年半程度です.
詳細は後で記述しますが,去年の9月ごろからはじめて仕事が忙しくなって11月に中断,次に再開したのが今年の9月中頃.かなり忘れていたので復習から入り,一気に学習を進めること2ヶ月ほど.入門が終わって初級程度の学習状況まで進んでいます.
初級といいますがここまでくれば,おおざっぱに書いてあるコードの構造などはわかるので,誰かが書いたコードを調べて理解したり,もう少しレベルの高いプログラミング(例えば,GUI開発,データ分析,画像処理など)に取り組む下地ができたというわけです.ここまで来れば勝ったようなものです.ここからがほんとうの意味での努力が必要になるのですが,やりたいことリストが実現するのを想像するとワクワクしますよね.
検証内容
言語:Python
学習前のレベル:大学の講義でCか何かをさわったことがある程度.
習得レベル: 入門〜初級程度
学習時間:360時間くらい?
学習間隔:3〜5日/週(1〜3時間/日)
学習方法:progate→Paiza→少し専門的な本とかUdemyのアドバンストなやつ
背景
まず,言語についてですが,色々と検討した結果Pythonを学ぶことに決めました.この記事を読んでいる人はすでに知っていると思いますが,プログラミングと一言で言っても多くの言語があります.調べてみるとその中でもPythonは近年よく使う言語ランキングなどで最も注目されているということと,いろいろなところでグルー言語としてPythonが使われているので非常に汎用性が高いこと,機械学習やデータ分析みたいなパワーワードに惹かれたというのもあります.最も決め手になったのは,学習コストが低いと言われていたことです.正直言ってどの言語でも,たいていのことは同じようにできルはずです.ただ,それがやりやすいかとか,反対に手間がかかるとかの違いがあるにせよ,その言語を使いこなせさえすればほとんど同じことができます.
ここで最も重要なのは,自分のやりたいことを最短で実現することだと考えます.いろいろなことを考えすぎてゼロのままでいるよりも,一つでも実現させて1にするほうがきっと人生にとって有益です.
なので,素人の僕がプログラミングを習得できる10%に入るためには,学習コストが低いと言われている言語を選ぶのが良いと考えたのです.
ちなみに実際学習してみて噂通りとても習得しやすいと感じています。
モチベーションを保つ方法
これが最も重要と思います.僕のおすすめは,まずどんなことをやりたいかをリストにすることからはじめました.身の回りの仕事の自動化とか便利ツールを作るとか簡単にできそうなものから,もっと高度な画像解析のツールとかとにかく簡単なものから難しいものまでをリストにします.
そのなかで最も簡単なものを最初のターゲットにします.僕の場合は,基本的にはデスクトップアプリ開発をしたかったので.まずはある空間内にある長方形の物体の大きさをきめたら,自動的にその空間内でその物体がどのくらい回転できるかを計算できるアプリ開発を目標にしました.一番簡単なものでも最初はかなりハードルが高く見えます.全体像もよくわかっていない状態であれば今自分がどこにいるのか,何をしなければならないのかもわからないことになります.暗闇の中を人に連れられて歩くようなものです.よほど信用している人であればついていけますが,普通は無理ですよね.
このときポイントは,とりあえず作って動かしてみるということです.ググれば似たようなことをしている人がかならずいます.全く同じでなくてもいいし,やりたいことの一部だけでもいいと思います.不完全でも全く問題ないです.とにかく動かしてみる.これが最も大事です.
素人の自分にとって書いたコード(ほとんどコピペだけど)が動くのはとても新鮮だし,刺激になります.なんかできそうな気になります.このできそうな気持ちがとても大事です.
座学の進捗状況にあわせて作りたいものの実装を進める.何がわかっていないのかを理解してそこを詰める.この繰り返しが,モチベーションを保つ秘訣だと僕は考えています.
学習時間について
条件に書いたとおり,やるときは少なくても週3日はやりました.仕事で徹夜のときとかは体力回復のためにやりませんでしたし,子供の世話の関係でできない日もありました.また,週5日とも書いてありますが,30分とか1時間しかやってない日もあります.が,何かで読んだんですが,学習を習慣化するためには少しでもいいからやるのがいいと.なんか三日坊主でもやったほうが良い。やらないでゼロよりその人の人生に影響がある。とかなんとか...そういう意味もあって1時間でもできれば学習に時間を使いました.
気張り過ぎず、でも習慣化するために少しでもやる。ゆるいやり方を厳しく?みたいな感じですね。
学習方法について
どんな学習でもそうですが,まずは簡単すぎると思うものから始めます.僕の場合はprogateです.これの画期的なところは,穴埋め問題みたいになっていてゲーム感覚でできるところです.とりあえずこれを一周やりました.不安なら二週くらいやればいいと思いますが,それ以上は無駄だと思うので次のステップに進むことをオススメします.Pythonだけであれば1週間とか2週間程度で基礎を終えることができるとおもいます.
その後は,Paizaに進みました.実を言うとUdemyにも手を出したのですが,当時の自分にはちょっとむずかったです.一方Paizaは、環境構築不要なので,何も考えずにすぐに学習が始められます.また,一本の動画が3〜5分程度なので一日に30分や1時間しか時間が取れない日でも動画見るくらいはできて,短い動画なので理解できるまで繰り返し見ることも容易です。演習は次の日でもいいです。復習に動画流して見てから演習をやるみたいなことも可能なので,つまり少ない時間であっても、たとえそれが非効率であっても、とにかくすすめることができるのが良いところです.最初は学習を習慣にするのが目的ですからね。
PaizaにはPythonの学習プログラムがいくつかあるので、それらをこなせばだいたい理解できると思います.重なっている内容もあるのですが復習にもなります.また,スキルチェックというものがあって学習の度合いをスキルレベルで表現してくれます.目標が立てやすいのでそういう意味でも便利です.
オンラインでの学習と合わせて書籍での学習もおすすめです。網羅的に説明されているもの便利と思いますし。少し実践的な内容の書籍でリアルに想像しながら学習するのも良いと思います。
まとめ
ここまで、参考までに僕の学習経験について述べましたが、もっと集中的にやって早くできる人もいると思うし、反対にもっと時間がかかる人もいると思います。あくまで参考と考えてください。
ただ、結局やってて思うのは、楽しいと感じることができればほとんど成功したようなものかなと感じています。自然にあれも試したいこれも試したいってなってくるんですよね。なので、プログラミングをとりあえず始めてみて楽しく続けられそうかというのがプログラミング習得の試金石になるかもしれませんね。