こんにちは。じゅんです。
ようやくニートを脱出することが決まりました。
本当に「ようやく」です!
私のことを知らない人がほとんどだと思うので、軽く自分の状況を説明すると、
私は新卒で入った会社を半年弱で辞めて、起業するも失敗し、2017年の8月頃からニートをしていました。
履歴書は空白だらけ。一般的に見たら「やばい」状況でした。
そんな状況になってから既に10ヶ月が経ちました。
この10ヶ月間は毎日のようにプログラミングをしていました。(プログラミングの勉強記録はこのブログに毎月書いています。)
そして先日どうにかニートからの脱出が決まりました。
6月からニートを脱してエンジニア見習いになります。
せっかくの機会なので、
・この10ヶ月間独学でどうやってプログラミングを勉強してきたのか
・ニートから脱出するために工夫したこと
・再就職活動のこと
・感じたこと
などを詳しく書いていこうと思います。
自分と同じような状況にいる人(ニートとか、職歴に空白ある人)や、未経験からエンジニアを目指している人に読んでもらいたいです。
ただ、かなり文量が多くなってしまうと思うので、時間がない人は適当に読み飛ばしてください!
半分ぐらいは備忘録のつもりで書くので、色々読み辛いところやツッコミどころ等あると思いますが、温かい気持ちで読んでいただけると助かります。すみません。
なぜプログラミングを始めたのか
まず最初に、なぜ私がプログラミングを始めたのかについてですが、「ニートを脱出するため」ではありませんでした。
起業していた頃にHTMLとCSSに触れる機会があり、その際に「あれ、プログラミング面白いかも」と思ったのが直接的なきっかけです。
私は小説を書くのが好きなのですが、プログラミングはそれと似たところがあるような感じがしました。
小説もプログラミングも、ゼロから何かを生み出すことができます。(もちろんプログラミングの場合は他の人が開発してきたフレームワーク等を使用しますが、、)
純粋に趣味としても楽しそうだなあ、と思いプログラミングの勉強を本格的に始めることにしました。
ちなみにこれがちょうど10ヶ月前の2017年8月頃です。
ニートを開始した頃とプログラミングの勉強を始めたのはちょうど同じ頃の話です。
どうやって独学でプログラミングを勉強したのか
プログラミングの勉強を始めようと決めた際に、まずは色々プログラミング言語について調べました。
プログラミング言語と一口に言っても、様々な種類があります。
闇雲に勉強していたら効率が悪いのはいうまでもありません。
私はとりあえず自分ひとりでWebアプリケーションを作ってみたいという目標がありました。
また、後々はエンジニアになってみたいなと思ったので、それも考慮する必要がありました。
色々調べると、Webアプリケーションを作るにはRuby、PHP、Python、Javaなどの言語があるのを知りました。
データサイエンスや人工知能の領域で使われているPythonにまずは興味を持ちましたが、最終的にはRubyを選択しました。
その理由はRuby on Railsというフレームワークの存在です。
PHPにもPythonにも同様のフレームワークはありますが、日本語の情報が一番多いのがRuby on Railsでした。
また、日本のスタートアップ企業でRuby on Railsが多く使われていることもRubyを選んだ理由の一つです。
今思うと、日本語の情報が多いことは長期的にみたらそんなにメリットではありませんでした。
確かに最初のうちは日本語の情報が多いと分かりやすくて有り難いですが、結局しばらくすると英語の情報に当たることが多くなります。
なので、英語に超苦手意識を持っているのでなければ、Pythonを選んでおいても良かったのかもしれないなあと少しだけ思いました。
ですが、基本的にはRubyを選んだことに後悔はしていません。というよりかなり満足しています。
他の言語をほとんどやったことがないので比較はできませんが、Rubyは書いていて楽しいです。
また、ちゃんと最低限の目標(個人でWebアプリを作ることと就職)は達成できたので、その点でもRubyを選んで良かったなと思っています。
(もちろんこれはPythonを選んでいようがPHPを選んでいようが同じだったと思います。)
で、肝心の勉強方法ですが、まずは「Progate」というサービスを使いました。
Progateがなければ挫折していたと思うので、Progateには本当に感謝しています。
Progateでは色々な言語を学ぶことができますが、Railsで開発するのであればRuby on RailsとHTMLとCSS、余裕があればRubyとSQLをやれば十分だと思います。
他の色々な言語も学んでみたくなる気持ちは分かりますが、個人的にはまずは必要最低限だけやればいいのかなあと思います。
そっちの方が効率よく学べると思いますし、早く自分で動くものを作ることでモチベーションも保ちやすいと思います。
Progateを終えた後は、二冊ほどRailsの本を読みました。
「Ruby on Rails5 超入門」という本と「Ruby on Rails5 アプリケーションプログラミング」という本をやりました。
今思うとこれは一冊目だけで十分だったと思います。二冊目はリファレンス的な本です。
これらの本を読み終わった後は、Railsチュートリアルをやりました。
Railsチュートリアル。これも本当に本当に本当に素晴らしい教材です!
かなり量はありましたが、これのおかげで最低限のWebアプリケーションなら作れるようになりました。
Rubyを選んで良かった理由はいくつかありますが、このRailsチュートリアルの存在はかなり大きかった気がします。
ProgateとRailsチュートリアルには感謝してもしきれません。
もしRubyやRailsを勉強しようと考えている人がいればこの二つをお勧めしたいです。
全くの初心者であればまずはProgateから学び始めることをお勧めしたいです。
私はProgate、本二冊、Railsチュートリアルを約2ヶ月ほどで終わらせました。
そして3ヶ月目からはひたすらWebアプリケーションを作ってきました。
10月の終わり頃に初めて自分で作ったWebサービス「ショートショート」を公開しました。
それから11月に2つ、12月に2つ、1月に2つ、2月に1つのWebアプリケーションを作成しました。
そのうちほとんどはユーザーがつかずに、既に非公開となっています。
今のところかろうじてユーザーの方に使ってもらっているのは一番最初に作った「ショートショート」と「MyProQ」という質問箱によく似たWebサービスです。
「MyProQ」に関してはユーザーのほぼ100%が台湾の方です。笑
(追記:MyProQも閉鎖しました。笑)
話をプログラミングの勉強方法に戻します。
3ヶ月目以降はWebアプリケーションを量産しながら勉強をしました。
自分でWebアプリケーションを作ってみると、色々分からないことが出てきます。
「カテゴリー機能ってどうやってつけるの?」「画像生成機能は?」「管理者としての機能は?」「サーバーは何を使う?」「テストは?」「ステージング環境って何?」などなど、分からないことは尽きません。
これらをとにかくググりながら解決する。これが3ヶ月目以降の勉強方法です。
ググる際に気をつけたことは、Qiitaなどを参考にしながらも、可能なら公式ドキュメントを見るようにしていました。
例えばとあるGemの使い方で迷ったら、まずはGemのRead meの部分を読んでみたりしました。
公式ドキュメントを見た方が結果的に早く問題が解決できることが多かったですし、より確実です。
また、エラーが出た際にちゃんと考えるようにしています。
闇雲にググってたらもしかしたら解決できるかもかもしれませんが、それではプログラミング能力はあまり上がらないと思います。
まずエラーが出たらちゃんとエラー文を読んで、そして実際にソースコードを読みながら処理の流れを追ってみるということをかなり意識してやりました。
これができればエラーが出てもどうにか解決できるようになります。
(もちろんどうにもならない時もあります!笑)
オリジナルのWebサービスを作ることで、勉強にもなりましたし、同時にすごく楽しかったです。一石二鳥でした。
結果的にこれが就職にもつながったので一石三鳥と言えるかもしれません。
本当はこれでマネタイズもできていればもっと良かったのかもしれませんが、そこまでは残念ながら達成できませんでした。
また、オリジナルのWebサービスを作りながらも、技術書を読んでインプットすることは欠かさないようにしていました。
3ヶ月目でどうにかオリジナルのWebサービスを作れましたが、当時はプログラミングの基礎がほとんど身についていませんでした。それをカバーするために本を読みました。
Rubyに関しては「プロを目指す人のためのRuby入門」が分かりやすくて良かったです!
あと、途中でSwiftの勉強をしてみたり、Tensorflowに触れてみたり、Reactをやってみたりなど、多少脱線をしていました。Oculus Go買ってDMMをVRで見たのは社会勉強。
とにかく、こんな感じでプログラミングの勉強を進めてきました。
まとめると、、
1、Progate
2、本二冊
3、Railsチュートリアル
4、ググりながらとにかくオリジナルWebサービスを開発
この順番で勉強しました。
独学でプログラミングの勉強をする際に意識したことは、
1、可能なら公式のドキュメントを見る
2、エラーが出たらちゃんと考えて、処理の流れを掴む
以上が勉強方法についてです。
勉強方法は人によって全然違うと思うので、参考にならない部分も多いかと思いますが、とにかくこんな感じで10ヶ月プログラミングの勉強を進めてきました。
ニートが未経験からエンジニアになるために採った戦略
続いて、ニートが未経験からエンジニアになるためにどのような戦略を採ったのかについて書いていきます。
職歴に空白期間のない人であれば、普通にプログラミングを勉強して、自分でサービスを一つ作って、それを見せれば未経験でもエンジニアになることは可能だと思います。
しかし、私は会社を半年弱で辞め、さらに空白期間もあります。
普通の方法だとなかなか社会に復帰することは難しいと思ったので、いくつか意識してやってきたことがあります。
まず一つ目が情報を発信することです。
情報を発信すれば、誰か一人ぐらいが自分の存在に気づいてくれるのではないか、誰か一人ぐらいが私を拾ってくれるのではないか、、、そう思ってブログでプログラミングの勉強記録を書きました。
(現在進行系で月に一回書いています。)
また、12月の終わり頃からはツイッターも使うようにしました。
ツイッターでは、プログラミングに関係ないことは極力呟かないようにしています。
と言っても若干は個人的なこともつぶやいています。笑
あと、つらいなあ、消えたいなあ、と思うことがあっても呟かないようにしていました。笑
ツイッターの使い方は人それぞれなので、他の人がどのようなつぶやきをしていても全然気になりませんし、むしろ綺麗事ではなく個人の気持ち等を素直につぶやいているのを見る方が好きではありますが、就活のために使うのであれば色々気をつけた方がいいのかなあと個人的には思います。
特にニートの私が「つらい、消えたい」と呟いてしまったらそれはもう色々やばいです!笑
またツイッターは情報発信という面だけでなく、エンジニアの方と繋がることができるという面でも非常に良いツールだと思いました。
ニートだと全然人と知り合う機会なんてなく、ましてやエンジニアの方と交流する機会なんて全くないので、この点では非常にありがたかったです。
モチベーションを保つのにも役立ちました。
意識していたことの2つ目は、「質より量」です。
普通に一つWebサービスを作るだけでは、ニートのマイナスを消し去ることができないと思ったので、できるだけ短期間でWebサービスを量産しようという覚悟でプログラミングをしていました。
採用をする側から考えると、
①ニートでWebサービスを1個作った人間
②働きながらWebサービスを1個作った人間
この二つの選択肢があれば間違いなく②を選ぶと思います。
ですが、
①ニートでWebサービスを5個作った人間
②働きながらWebサービスを1個作った人間
この二つの選択肢があれば、もしかしたら20%ぐらいの人が①を選ぶかもしれません。
私はこの20%の確率に賭けてWebサービスを量産しました。(20%はもちろん仮定の数字です。)
また、何度もWebサービスを作ることで、基礎的な部分は何度も繰り返すことになり、これも勉強になって良かったです。
まとめると、
1、情報を発信する
2、Webサービスを量産する
この二つを意識しました。
具体的な再就職活動の方法
続いて、具体的にどのようにニート・未経験の人間がエンジニアとして就職することに至ったのか、その方法や経過を書いていきます。
まず、再就職活動を始めたのは2018年の3月の中旬頃でしたが、2018年の1月頃にはツイッターでちょこちょこ「うちで働かない?」という声がかかるようになっていました。
これも情報を発信していたからだと思います。
1月時点ではまだ色々自分で作りたかったので就活はしませんでしたが、そろそろチーム開発の経験もしたいし、多くのユーザーに使ってもらえるようなサービスの開発に携わりたいという思いが強くなってきたので、3月から本格的に就活を始めました。
就活には色々な方法があります。知人の紹介、転職エージェントに頼る、エンジニアを採用している会社に片っ端からエントリーする、などの方法が思いつきます。
私の場合は、それらの方法ではなく、まずはツイッターを利用して就活をしました。
具体的には、まずWantedlyに登録し、そこに自分の経歴や作ったものを載せ、それをツイッターでシェアしました。
ちなみにその時のツイートはこんな感じです。
Wantedlyに経歴や今まで作ったもの等を載せました。
使っている言語はRubyとRailsです。
Webエンジニアになりたいのですが、どなたかWebエンジニアを必要としている方がいましたら声を掛けていただけると嬉しいです!
来週末まで東京にいます!https://t.co/VvKrOVZ0B0— じゅん 独学でプログラミング勉強中 (@BoNingennnN) March 14, 2018
ありがたいことに、優しいフォロワーの方がリツイートやいいねをしてくださり、そのおかげでいくつかの会社から声がかかりました。
3月の終わりにそれらの会社の方と面談等を行い、すごくラッキーなことにいくつか内定を頂けました。
どの会社もすごく魅力的で、非常に迷いましたが、4月には2社でインターンをさせてもらいました。
(この2社は内定を出すかどうかはインターン後、という形でした。)
1社は早い段階で声をかけていただいていたのと、そのCEOの方の情熱的な何かに魅かれたからで、もう一社に関しては完全にCTOの方に一目惚れしました。
一目惚れと言ってももちろん恋愛的な一目惚れではなく(そもそも同性です)、表現が難しいですが、この人のもとで働きたい、この人のもとでエンジニアとして成長したいと直感で強く思いました。(今も思っています。)
しかし、結果的にはどちらでも働くことにはなりませんでした。
一つは私の力不足でインターン後に内定の結果は来ず、もう一つに関しては週7で働く環境に自分が合わないと思ってしまったからです。
私はニートですし、選べるような状況にないのはわかっていますが、やはり休日は個人でWebサービスを開発したり、他にも色々やりたいことがあるので、休みが欲しいなあと思いインターンの途中で辞退しました。
迷惑をかけてしまって、この点は本当に反省しています。
この時点で、4月末でした。
一度内定を断ってしまった会社に「やっぱり働かせてください」と言うこともできず、、、5月に入り改めて就職活動を開始することにしました。
もう一度ツイッターを使おうかとも思いましたが、 「またあいつかよ」と思われる気がしたので、今度はWantedlyなどを使って気になる会社にアタックしてみました。
また、これはびっくりしたことですが、wantedlyをプレミアコース的なのにしてみたら、企業からスカウトという形の面談招待のメッセージが来るようになりました。笑
確か一週間は無料でプレミアコース的なのに変更できるので、ここぞという時に使ってみてください!笑
そして結果的にいくつか内定を頂けました。一応これで再就職活動は終了です。
これまでずっと自社サービスを開発している企業で働きたい、という思いで就活をしていました。
実際に今まで受けた企業のうち、1つを除いて全ての企業が自社サービスを開発している会社でした。
しかし最終的に、唯一1つだけ受けた受託開発の会社で働くことに決めました。
なぜ自社サービスではなく受託開発の会社で働くことにしたのかにはもちろん理由があります。
4月に自社サービスを開発している会社でインターンをした際に、ほんの短い期間でしたが、今まで自分では実装したことのない機能などを実装したりする機会があり、非常に楽しく且つ勉強になりました。
もし受託開発の会社であれば、3ヶ月で1つぐらいのペースで色々な企業の色々なサービスの開発ができるので、忙しいとしてもかなり勉強になるんじゃないか、、、という風に思うようになりました。
(多くの方には自社サービス開発の方が絶対にいいぞ、と止められましたが、、笑)
個人で開発をしていると、どうしても自分のできる範囲内でものを作ってしまいます。
ですが、エンジニアとして成長するには自分の中の引き出しを多く持っておく必要があります。
受託開発の会社であればこの引き出しを多く作れるのではないか、、、と思い、非常に迷いましたが受託開発の会社で拾ってもらうことになりました。
まずは頑張って修行します。
それに加え、純粋にその企業の自由な雰囲気が好きだったというのももちろんあります!笑
働いている人も面白い人ばかりだったのも、ここで働こうと思った決め手となりました。
給料の面で言うと、多分非常に低いです。
当分はお金なさすぎて部屋が借りれそうにないので、東京の知り合いの部屋に居候するつもりです!笑
内定をいただいた他の会社の中には、なんと年収500万円出してくれるという会社もありました。
ですが、私は基本的に食欲や物欲がないのでお金がかからないこと、それとお金に関しては次転職をする機会(2,3年後?)に上がればいいや、、という楽観的な考えから、お金のことは一切考えずに働く場所を決めました。
また、今回働くことになった会社は最近人が増えたようで、もし2ヶ月以内に新しい案件が増えなかったら仕事がないから首だよーと言われたので、もしかしたら2ヶ月後にまたニートに戻るかもしれません!笑
こればっかりは完全に運なので、新しい案件が増えることを祈りながら働きます。
面倒臭いですが、もし案件増えずにクビになったらまた再就職活動するので誰か声をかけてください!笑
就職活動で感じたことや気づいた点
再就職活動を通して色々感じたことや気づいたことがあります。
まず、私のようなニートであっても、職歴がやばい人間であっても、ちゃんと動くものを作って熱意を見せれば未経験からでもエンジニアになれます。
またニートだと、時間だけはあるので、逆に未経験からエンジニアになる際に若干有利なんじゃないかという気さえしました。
というのも、社会人が働きながらプログラミングを勉強する場合、平日に1時間、休日に8時間ずつぐらいしか勉強できないと思いますが、ニートであれば平日であろうが休日であろうがずっとプログラミングできます。
実際私は楽しかったので食事の時間や寝る時間を削ってずっとプログラミングしていました。
移動する必要もなければ、徹夜でプログラミングをして風邪を引いてしまったとしても問題ありません。
(私も徹夜でwebサービス作って何度も体調壊していました。)
働きながら勉強するのと、ニートをしながら勉強するのではその勉強時間に圧倒的な差があります。
ニートの半年は、もしかしたら働きながらの人の2年分ぐらいかもしれません。
ここで大事なのは、採用する企業側の人間はその時間の差に注意を払っていない点です。
多分ですが、「半年間独学でプログラミングをやりました」と言われた場合、「この人はニートだから普通の人の4倍ほど勉強時間が取れたはずで、だから4倍の成果物がないとおかしいぞ」とは思わないはずです。
純粋に「半年でこんなに成果物があるのか!」とびっくりしてくれると思います。
これはニートにとってはチャンスだと思います!笑
なので、もし私と同じような状況にある人でエンジニアになりたい人がいたら、とにかく全ての時間をプログラミングに注いでみてください!
あと、未経験からエンジニアに転職したい人は情報をツイッター等で発信することをお勧めします。
履歴書がわりにもなりますし、就活が比較的楽に進むと思います。
それにプラスして、やっぱり個人で少なくとも一つはWebサービスを開発してから転職活動をした方がいいかなあと思います。
当たり前のことですが、「未経験からエンジニアになりたいです!Webサービス作りたいです!」と言っても何も作っていなかったら「その熱意って本当?」と思われてしまいます。
また、可能なら一つではなく二つ開発すると、より他の人と差別化できるかなあとも思います。
反省点もいくつかあります。
一番大きな反省点は、これまでの話と若干矛盾しますが、もっと一つのWebサービスを深掘りするべきだったことです。
私はとにかく質より量を重視しましたが、これは良い面も悪い面もありました。
確かに単純なものであれば素早く作れるようにはなりましたし、そのおかげもあってどうにか働く場所は見つけることができましたが、技術力という面でみると「質より量」というのはマイナスが大きいです。
多くのWebサービスを短時間で作るには、どうしても自分のできる範囲のことで作ってしまいがちです。
ですが、これだとエンジニアとしての技術力はそんなに伸びません。
いくつか作ったWebサービスのうちの少なくとも一つは、もっと深掘りするべきだったなあと思います。
これは就活を通して何人かのエンジニアの方にも言われました。
あと、就活を通して色々なエンジニアの方やCEOの方と話していると、自分の考えがどんどん整理されていきました。
自分はどんなエンジニアになっていきたいのか。これはよく話題に上がりました。
技術を極めるのか、それともサービスを伸ばす方により力を入れたいのか。
もちろん両方でしょ、と答えたくなりますが、どちらかを選ばないといけないのであれば、自分はどちらかというと後者な気がします。
RubyやRailsを極めてコミッターになりたいかと言われたらそうではありません。もちろん憧れはありますが、私の場合はむしろ自分の携わるサービスでいかにユーザーに喜んでもらうか、という方に興味があります。
これに気づけただけでも、就活をして良かったのかなあと思いました。
5年、10年後ぐらいに、どこかの企業でCTOとして働けるようなエンジニアになることを目標にこれから頑張ります。
もっと短期的なことを言えば、1、2年後に転職するとなった時に「あの人欲しい」と言ってもらえるエンジニアになれるように日々精進していきます。
それと同時に、今後も時間のあるときに個人開発は続けていきます。
これからは就活のことを考える必要がないので、じっくり開発していきます!笑
最後に言いたいこと
どうにかニートから独学でエンジンニアになることはできましたが、まだスタート時点に立っただけです。
技術力は非常に低く、初心者のレベルをまだ脱していません。
ですが、今後はお金をもらって働くことになるので、ちゃんともらう給料以上のバリューは出していきたいです。
あと、仕事でプログラミングをするとしても、楽しさの部分は忘れないでやっていきたいです。
最後に、かなり長い文章になってしまってごめんなさい。ここまで読んでいただきありがとうございます。
何か意見やコメントなどがあればツイッターでお願いします。
そして、できればこの文章を、10ヶ月前の自分と同じ状況にある人に読んでもらいたいです。