これ読んでて、自分はどういう風に勉強したのかなと思って独学してた頃のtweetやブログ記事を元にまとめてみた。
独学以前
ちゃんと勉強を始める前にもコードを書いた経験があった。これがどれくらい影響しているかは分からないが、「やってみたらそこまで大変じゃないな」という感覚はここで得られたと思う。
大学時代(2006年~2009年)
- C言語の授業でHelloWorldからbubble sortの実装ぐらいまでをやった。農学部なのになぜか必修だった。
- 卒業前の暇な頃に基本情報の勉強のために「独習C」を最初から半分ぐらい写経した。
- 何か作りたかった訳じゃないが「SEとして働くための勉強」という目的があったためかそんなに苦ではなかった。
新人SE研修時代(2009年4月~7月)
- VB.NETで簡単なフォームを作る方法とDBに接続してクエリを発行する方法だけ教わった。
- 文法の説明はなかったのでサンプルコードを写しまくってあとはカンで書いてた。
php独学時代
2010年2月~
- 2010年の2月か3月ぐらいからこの本(の古い版)を買って、自宅のwindowsマシンで夜な夜な勉強し始める。
- 当時のモチベーションはtwitterやmixiみたいなBtoC系のwebサービスを作れるスキルを身につけてweb系に転職したい、だった。
- きっかけは伊藤直也氏の講演を聞いたことだったはずなのに、なぜかperlではなくphpを選んだのはphpが当時流行ってたからだと思う。
- windowsで開発するのがつらいということにしばらくして気づいて、VMware PlayerにCentOS入れて仮想linux環境上でvimで開発するようになる。
まだLAMP環境だとサンプルコードに毛が生えた程度のものしか作れないけど、日中は見積書作ったりして、夜はPHPいじる毎日を過ごしてて思うのは、自分の願いは「作っていたい」ということ。技術で飯が食えるようになりたい。「何かを作る」技術をベースに自分のキャリアを広げたい。
— Kazuhiro Serizawa (@seri_k) 2010, 5月 29
- 調子に乗って何も作れないクセにこんなことをつぶやき始める。
プログラミングの向き・不向きっていうのは、論理的思考がどうとか言う以前に外国語を学ぶように辞書を引きながら文章(コード)を書く・読む事が苦であるかどうかという点にあると思う。
— Kazuhiro Serizawa (@seri_k) 2010, 9月 26
俺の場合は設計やコードを書いてる時間よりもWEBや書籍を調べてる時間の方が多い。ただ、この段階で「どう調べていいか分からない」となって止まってしまう人が意外なほど多い。これはどういう事なんだろう?今ならエラーコード一つからググればいくらでも解答が見つかるのに・・
— Kazuhiro Serizawa (@seri_k) 2010, 9月 26
2010年10月
Finallyとreturnの関係 - seri::diary
2010年11月
初めて自分で書いたコードを公開する。(とは言っても外部ライブラリ叩いてるだけだけど)
この頃になると
json
とかcurl
とかの用語を普通に使うようになる。仕事(SI)では一切使っていない技術要素をググって勝手に覚えられるようになってきた。
@Enochbot もっかい。大丈夫か?
— Kazuhiro Serizawa (@seri_k) 2010, 10月 30
全然内容わからなかったけど関東php勉強会とかにも顔を出し始めた。
そろそろweb画面も作らなきゃな、ということでhtml, javascript, cssの勉強も始める。
俺「土日暇だから最近覚えたjQueryのvalidateプラグインの使い方をもっと勉強しよう」 同僚「土日暇だから放射線の勉強をしよう。」 何この俺の浮きっぷり
— Kazuhiro Serizawa (@seri_k) 2011, 3月 18
2011年5月
- twitter APIいじりに飽きてしばらく間が空いた。
- この頃にCakePHP(1.x)で作ったtwitter likeの謎サービスを世の中に公開する。
- webサービス「すぐブロ」を公開しました - seri::diary
- サーバはさくらVPSの一番安いやつでドメインも年間500円ぐらいで使えるクソ安いやつだったが一通り揃えた。
- これをネタにアピールしてweb系企業に転職しようと試みるも面接で祈られまくって挫折する。
- この頃になるとphp、html、js、cssを一通りいじってwebアプリケーションをラクに作れるようになる。
2011年12月
- SIerを退職して某制作会社に入社し、コードを書くエンジニアとして働き始める。
考察
今にして思うと、周りに誰もphp書ける人がいない、技術に興味がある人もいない、という状況から独学で勉強できた理由としては2点あると思っている。
「ググればわかる」ということを早い段階で理解していた
「ネットに情報は落ちている」ということをかなり早い段階で知っていた。コードは書かなかったにせよ、SIerの現場で先輩社員が一生懸命ググって調べ物をしていたのを見て、「ITってのはググればだいたいわかるんだ」ということを知ることができたのは大きいと思う。
独学初期にお世話になった媒体としてウノウラボというウノウの技術ブログがある。phpの情報そのものだけでなく、「こういう最新の技術情報をまとめたブログがネットにはたくさん存在する」「イケてるweb企業は技術ブログなるものを持っていてそれはとても参考になる」ということを知ることができたウノウラボには今でも感謝している。
作りたいものが明確だった
最初からwebサービスを作るためにプログラミングを始めた。そのため、勉強しなくてはいけない要素が明確にわかっていたのでそれを順々に学んでいくだけ、というレールを最初に設定できた。
これにより、
- 「基礎は覚えたけど次にどうすればいいか分からない」
- 「何に使うか分からない勉強をしてもモチベーションがわかない」
というプログラミング挫折者にありがちな問題をうまく回避することができていたのだと思う。
ちなみに、php独学時代に勉強したことをブレークダウンしてまとめるとこんな感じか。今だとgitとかdeploy toolとかCIとかAWSとかも入ってきて覚えることは当時より遥かに多いと思う。
今でも新しいことを勉強するときは、最初にゴールを設定してそこに行き着くための要素を細分化して各個撃破していくスタイルは変わっていない。趣味で特定の要素を深掘りしていくこともあるが(例えばdockerのファイルシステムの世代管理の仕組みが気になってUnion-type Filesystemを調べた、とか)、大体は何らかの目的を達成するために勉強しているので必要以上の深掘りはしないように気をつけている。