全くの初心者が500時間プログラミング学習したら?
はじめに
最近、プログラミング学習時間(Web開発)が累計500時間を超過しました。そこで今回の記事では「HTML & CSSも知らないような初心者が愚直にプログラミングを勉強したらどのぐらいのレベルになるのか」を紹介したいと思います。
始めた頃の僕の状態
- ブラインドタッチはできた。
- 学生の頃、iPhoneを脱獄したりして技術には興味があった。
- HTML & CSSは「なんかウェブページを作るのに使うということは知っているけど、読んだことも書いたことも無い」という感じ。
- JavaScriptとJavaは同じ言語だと思っていた。
というプログラミングに関して全く知識の無いただの「タイピングが速い完全初心者」でした(今もそうかもしれない…)。
始めた頃は何をしていいのか全くわからなったので、まずは情報収集から始めました。
そもそもプログラミングって何
「そもそもプログラミングって何?」という疑問を持って色々ググってみました。調べると、アセンブリ言語、C言語、Ruby, Python, JavaScript ,Go ,Reactなど聞いたこともないアルファベットが永遠に出てきて混乱したのを覚えています。同時に「プログラミング言語それぞれには得意・不得意としている領域があって、プログラマーは目的によって言語を使い分ける」ということを知りました。
冷蔵庫や洗濯機などの家電にもプログラミングが施されており、それら所謂「組み込み系」といわれるものにはC言語などが使われ、機械学習やAIにはPythonが人気、手っ取り早くウェブサイトを作りたいならRuby on Railsを学ぼう!みたいなことをいろんな記事で読みました。
現在日本ではプログラミングスクールが乱立し、エンジニアブームと言われていますが、そういった「スクールでプログラミングを学ぶ」ということは「Web制作・開発を学ぶ」ということだということを理解しました。
まずはProgate
2021年において、プログラマーに「プログラミングを勉強したいです。なにすればいいですか」と聞くと、ほとんどの人がProgateしろ、と言います。ですので僕も素直にそれに従いました。HTMLとCSS, JS, Node.js, Ruby, Ruby on Rails, MySQLなどをProgateが進めるコースをひたすら2週間かけてこなしました。
しかし途中から「こんなにいろんな言語の表面だけ掬うように勉強して意味あるのかな」と思いはじめました。今考えればJavaScriptのconst
とlet
の違いもよくわかっていないのにNode.jsを理解できるわけがないのに。そんな感じで、一つの言語をしっかり学んでみようと思いProgateは早々に卒業しました。
Progateは素晴らしいサービスだと思います。しかしこれからプログラミングを学びたいと言う方は別にプロゲートじゃなくても、UdemyでもYouTubeでも色々いい教材がありますし、そこから始めるのもアリだと思います。やる気さえあれば、そこらへんはあまり関係ないと個人的には思います。
どの言語を学ぶか
Web開発初心者は
- フロントエンドとバックエンドどちらをやりたいのか
- バックエンドやるならどの言語やるの
という2つの決断を割と早い段階で迫られます。
ネットを調べると「ほとんどのプログラミングスクールはRubyを教える」だとか「Web開発初学者はとりあえずRubyやっとけ」というのを多く目にしました。反対に英語で調べてみると、PythonやMERNスタックが人気で「Rubyは下火だからやめとけ」という意見が目立ちました。
悩んだ結果、「フロントエンド・バックエンドでも両方使えるというJSをできるようにしといて損はないだろう」ということでJSを深く学ぶことにしました。それから今までの4ヶ月間、僕はJS関連の技術の勉強しかしていません。
どう学ぶのか
僕にはスクールに通うという選択肢はありませんでしたので、「Udemyで基本を攫って、あとはググって補完する」という戦略で学び始めました。 Udemyでは
- HTML & CSS
- JavaScript
- Node.js
- React
のコースを終わらせました。正直この500時間のうち半分以上はUdemyに費やしたと思います。それが正しい判断だったかどうかはわかりませんが、チュートリアルをやりまくることのメリットとして「プログラミングのボキャブラリーが増える」というのがあると思います。
ZennやQittaの記事を見ていても、あぁこれはXXのこの分野の技術の話をしているんだな。ということがわかるようになりました。所謂「チュートリアル地獄」は時間を費やしますが、その分基本が身に付くのでその恩恵は割と遅れてやってくるのかなと思ってます。
初心者が500時間プログラミング学習したらどうなるのか
結論になりますが、全くの初心者がプログラミングを500時間勉強すると「このブログぐらいのものなら簡単に作れるようになり」ます。というのも、完全オリジナルのポートフォリオが現在このブログぐらいしか無く、客観的に僕の実力を証明するのはこれぐらいしか無いのです。もちろん、もし500時間をRubyやPythonの学習に当てていたらもっと違う領域のスキルが伸びていたでしょう。
僕の主観で今の僕の実力を測るのなら、一般的なプログラミングスクールの卒業生が作るようなポートフォリオを見て「これなら多分頑張れば僕でも作れるだろう」と調子に乗るレベルです。
他には今 Chingu というサービスで、世界中からエンジニアを目指している人たちと一緒にプロジェクトを行っているのですが、その中でも特に技術的には問題なくやれています。
Chinguの参加者を見ていると「長い期間勉強すればするほど実力は伸びる」という感じでもないように思います。数ヶ月しか勉強していないのにすごくできる人もいれば、2年やっているけど基本的なことを理解していない人もいます。そこあたりもまた記事にしたいと思います。
1000時間を目指して
プログラミングの学習を始めるにあたり僕は「ある程度できるようになるのに1000時間ほどはかかるだろうな」ということは考えていました。〇〇時間という具体的な指標が欲しかったのです。「1000時間勉強した後に、これぐらいはできるようになりたい」と想像している自分がいて、今はそのような自分になれるように日々淡々と積み重ねています。
これからも、たまにこうやってチェックポイント毎にふりかえって、成長を実感していきたいと思います。