10年引きこもりニートしてた就職氷河期直撃アラフィフでも社会復帰してReactで成り上がれるよ
社会問題にもなっている就職氷河期直撃世代のえるきちです。クッソどうでもいい専門学校を出てから10年引きこもりニートしてました。
どん底(と言っても本当にどん底ではないかもしれない)からでも、普通に人生なんとかなるみたいな話です。あと、怪しげなサロンやスクールに通うくらいならN予備校に通う方がいいと思いますという話です。
ワナビー界隈だと年収公開したりするようなキラキラパリピが人気集めるんですって?わざわざ金の話をこれ見よがしに語る人、まっとうなエンジニアではないので気をつけた方がいいですよ。
年収は特に書きませんが、スタートアップに勤めて、同人誌書いたりしつつ、面白おかしく生きるのに問題無い金額は稼いでおります。
前提: 他の世代の人への補足
アラフィフ4x歳だったら、経験も豊富で金も一杯もらってんだろ当然だろみたいに考える人もいるかもしれませんが、それは必ずしもそうとはいえません。
たとえば、4x歳の人は確実に転職にはマイナスになります。日本が諸外国のように「雇うひとの年齢を聞かない。聞いてはいけない」ように法律が改正でもしない限りは、4x歳という年齢は足切り対象です。
これが、5x歳みたいにバブルを謳歌できた人たちはまだいいんですよ。貯金もあれば、いい会社で安定した雇用のもと生きられる。最悪でも退職金なんてものがある!バブルに滑り込めた人は良かった。
就職氷河期世代がなんで社会問題になるか?というと、正規雇用に入り込めなくて経験を得られず、ワーキングプアやNEETやその他があるし、転職や就職しようにも年齢で足切りされたりして、詰んでるからです。
追記: ちょうどタイムリーな話題が
2020年現在45歳以上の方々です。僭越ながらこのあたりの年齢の方々に対する風当たりが妙に厳しい。
この記事はそういった就職氷河期が直撃した僕の成り上がりストーリーですが、他の世代も含め、何かしら挑戦したい人に刺さればいいなと思って書いています。
パソ通にハマって高校をギリギリ卒業
どれくらいぎりぎりかというと、日数あと一日で留年。追試ギリギリみたいな。
ちなみにパソコンをはじめて購入したのが中学二年の頃で、プログラミング歴もそこから始まってます。それはさておき、高校三年だったかその頃に、パソコン通信という、インターネットの前身みたいなものに出会って廃人に。今でいうならTwitter廃人?一昔(?)前なら2ch廃人?Mixi廃人?そういう感じの。
学校のお勉強が嫌で嫌で仕方なかったときに、外(オンライン)にも世界があるんだって知ってしまって、学校行かない、学校行っても大抵寝てる、通信料金の下がる真夜中に活動。
当時はMSXというショボいホビーパソコンで、BASICやマシン語・アセンブラやC言語をやってたものの、まぁそんなレベルの高い人間でもなんでもなかった。他の人には「好奇心とプログラミングの好きさ」では負けない!!ってだけで、才能もスキルもほぼゼロ。
高校をギリギリで卒業したあとは、浪人と言いながら勉強を何もせずにパソ通とプログラミング三昧の1年間を無為にすごして、3年間専門学校に行って、でも結局学校いかずにパソ通とプログラミングをやり続けていた。
プログラミング歴5年以上とかでも、その頃の僕のレベルはほんとたいしたことない感じ。今の時代の人なら数ヶ月か半年くらいでぎゅーんと追い抜ける程度。
でも現代の人と違うのは、本がほぼ唯一の学習リソースだった時代なので、本を何回も何回も何十回も読み返した。大学生の人らが読んでるような本(コンピュータサイエンスって呼ばれるような本)とかをパソ通で教えてもらって、買って何回も何回も何十回も読み返した。TCP/IP覚えたりRFC読み始めたのもこの頃だったと思う。
卒業後10年間引きこもりニート
専門学校を卒業してからは10年間引きこもってNEETしてましたなー。
プログラミングしたりしてたから厳密にはNEETではないのでは?と突っ込まれるんですが、どっかで教育を受けてたわけでもないし、雇われてたわけではなく、税金すら掛からない程度しか金を稼いでなかったので、NEETで合ってるはず。たぶん。
ニート期間はC言語や、日本で流行り始めたRuby (not Ruby on Rails)をやってた。Ruby は C との相性がとても良い言語なので、Rubyを組み込んだり、Rubyの拡張モジュール書いたりするのが楽しい。
その頃の僕はFreeBSDを愛用してたのだけど、FreeBSDなどのUNIX系OSには vi と Emacs しか選択肢のない時代だったので、日本人のパソコンの世界では人気だったテキストエディタであるVzっぽい、コンソールで動くテキストエディタ(GitHub)作ったり(正確にはベースとなるソフトはあったので改造)、C+SDLでMSXエミュレータ作ったり、内輪で運用してたチャットアプリ(独自のバイナリプロトコルで、ファイル転送機能付きで、openssl使って暗号化はしてたかも。Win32 & X window system版アプリ&UNIXで動くサーバー)を作ったりしてた。
プログラミングは、どうなんだろう?レベル感がどれくらいなのか自分でも判断付かない。一応、前述のようなもの作ったり逆アセ解析したりパケット解析したり、WindowsでDLLフック書いたりできる程度には技術力(まぁそもそも技術力 is 何?)はあったのだとは思うが、あまり効率のいい開発をできてなかったのは間違いない。独学で得られるタイプの技術力と、実務で得られるタイプの技術力には違いがある。
当然のことながら親との関係も険悪になったり、メンタルを病み始めたり、アトピーがひどくなったり色々あった。
ボードゲームのサークルの例会が月一開催なんだけど、あまりに人と喋らないから、例会に行った日は脳がおかしくなる感じ。「あ、なんか会話司る脳の回路に血が巡ってる!!!!」みたいな独特の感覚。今の時代ならリモートワークとかでそういう感覚に陥る人もいるかも?
実際、今アラフィフあたりで就労経験無しっていう人は大量にいて、社会問題にもなってるわけで、僕もその中の一人だった(冒頭にも書いたけど)。
で、その絶望しかない、緩やかな死に怯える毎日に転機が訪れたきっかけがボカロだった。
2007年後半からボカロにハマって、2008年に引きこもりニートの日課としてニコ動を見てたら、バナー広告で「2ch採用」とかいうのをやってたのでそれに申し込んだ(ニコ動経由なのに2ch採用とはいかに)
2ch採用でドワンゴに入社
2ch採用っていう、特殊採用があった。
当時はまだコミュニティとして圧倒的だった 2ch でエンジニア採用をするっていう試みをしてたんですよね、当時のドワンゴ。
2ch採用は確か3回あって、僕がニコ動のバナーをクリックして受かったのが2008年春の3回目。職歴ゼロの3x歳が東証一部上場企業に務めるとか、なにそれっていうくらいの幸運。
「技術さえできるなら、それ以外はクソザコナメクジでもいいから来い。コミュニケーションなんて最低限でもいいぞ」という趣旨だった。
まぁ、実際には入社したあとにはコミュニケーション必須だよねーって感じで、配属先の都合なのかコミュニケーションに散々苦しめられた。
とは言え、就職氷河期世代のまっとうな就労経歴の無い、親が死んだら野垂れ死ぬことが確定してるような、死と隣り合わせの灰と中年みたいな僕を拾ってもらったのは確か。
ちなみに2ch採用だと、入社時に「スキな2chの板だったかスレッドはどれ?」みたいな質問をされたはずなんだけど、2chをあまりまともに読み書きしてなかったので「ろくごまるにスレです!!!」って書いた記憶。
ろくごまるにスレで「ばあさんや、春はまだかのう?(ろくごまるに先生の新刊発売予定が春って言われたけど、出なかった時期がありまして……)」とかひたすらしょうもない話をしたり「ばあさんや、夏はまだかのう?(ry」とかくらいしか、2chやってなかったんですよねー。「秋待ち」もあったような記憶。
ドワンゴ時代はほとんどバックエンドばかりやっていた。元々ドワンゴはPHPに並ならぬ執念を燃やしてた会社だったため、PHPやりはじめて、途中からエンジニアがキレだしてPHP以外も採用する会社になって、Scala, Java, Rails などもやってた。(あと趣味でHaskell, Go も一時期やってた)
SQL力は大分磨かれたと思うし、バックエンドの経験を積めたし、ソースコードのメンテナビリティの重要性とか、ソフトスキルとか、その他その他一杯経験値を得られた。たぶん論理的な思考力が一番成長したのがこのタイミングだったんだと思う。
ところが、無理してコミュニケーションを頑張ってたせいかメンタル病んだり、この頃に転職活動したら「おめー価値ねーから」扱い。年齢が厳しすぎるのと、アウトプットがゼロかつ、転職で何をアピールすればいいのかを全く分かってなかった。
あとは、メンタルを病むと能力値が圧倒的にダウンする。記憶力とか思考力とか体力とか全体的にガチで低下する。
ただ Electron をきっかけにフロントエンドを触り始めて「あ、これ絶対JavaScriptの時代が来るわ」って確信を得た。ちなみにいうと、この時点では JavaScript 経験はほぼゼロだった。
そもそも Electron をちゃんと触るまでは「あ?Win32 とか UNIX API とか X window system とかのネイティブが最強に決まってんだろが!!」とか言ってたけど、触ったとたんに「デスクトップアプリ開発するならネイティブとかいらねーわ。開発効率が違い過ぎるし、これからは Electron 最高 JavaScript最高!」って感じで一瞬で掌返し決めていた。
そのあとメンタルを完全に壊して休職して、退職して、リハビリ的にフリーランスっぽいサムシングしたり、ブログを書きまくったり、本を書いたり、スタートアップに入社したり、ひたすら React をやり続けた。
Reactが人生を変えた
僕も正確なタイミングを覚えてないんだけど、2014年か2015年頃に、JSの時代が来るって確信を得ていた。
実際、いまのウェブ開発ではフロントエンドの比重がとてもでかくなったし、なんならFirebaseだのクラウドサービス活用すれば、バックエンド開発なしでもサービスを立ち上げられるし、Next.jsとか Nuxt.js とかで、フロントエンドとバックエンドをユニバーサル開発できる時代が来ている。
なんで、その頃に確信を持てたのか?
・ CoffeeScript 及びその影響を受けまくった ECMAScript 2015 が、普通にプログラミング言語としてまっとうだったから
・ バックエンドJavaScript が実用的だったから
・ バックエンドの片手間で SPA なんて無理ゲーだから
フロントエンドが JavaScript(の言語仕様であるECMAScript)に縛られる以上、フロントエンドとバックエンドを言語統一出来る存在は、JavaScript(かAltJSと呼ばれる JavaScript に変換できる言語)以外にあり得ない。
今ならC#だのRustだのを WASM にっていう考え方もあるけど、今の SPA 開発シーン並に、実用に足るエコシステムとして成熟する為には、今からでも数年単位では厳しい。JS+WASMの世界線は普通にあると思ってるけど、それでも特定のライブラリだけがWASMで書かれている、既存のC/C++などのライブラリ資産をWASM化してるっていう状況だと思う。
当時のJavaScriptは、みんなまだ ES5 (2009年及び2011年に制定された規格)までの知識が大半で、多くのプログラマが「え?JavaScript ってオモチャでしょ?」「オブジェクト指向やるにもプロトタイプ指向で原始的な感じでしょ?」「バックエンドの片手間でやるんでしょ?」って認識しか存在していなかった。
これからJSの時代来るからJS一本でやっていくわとか言ったら「は?アホなの?バカなの?死ぬの?」みたいな扱いだった。
でも、CoffeeScript や ECMAScript2015 がそうじゃない言語だと知っていたし、なんならTypeScriptで静的型もあるということを知っていた(当時のバージョンのTypeScriptは凄いけど、面倒な言語だった)から、「JavaScript 一本に絞れば、この知識ギャップも含めて、圧倒的優位性を得られる」と確信できた。
もう一つ僕の人生を変えたのが React で、この記事が全ての始まりになった。
これは元々2016年4月11日に公開した記事で、1444LGTM(当時はスターだっけ?)を獲得したもの。まぁ中身は古すぎるので参考にする価値は、歴史的価値くらいしかない。
僕はもうこの React + Redux が世界の標準になるという予感しか持っていなかった。(※実際世界の標準になったけど、今は Redux は負の遺産と化してることに注意)
ちなみに今でこそ、僕はブログ、本などのアウトプットをするようになったけど、当時はまだアウトプットを色々試行錯誤してるときだった。
その一年後、2017年4月の技術書典2に初参加(正確には2016年4月の技術書典1で委託でElectron本を出してる)して以来、技術同人誌を書くようになった。
2018年秋に発表された React Hooks は React に感じた予感と全く同じタイプのもので「今後は Hooks のやり方が世界標準になる」という確信を持っていたので、βの頃から全ブッコな感じで React Hooks 最高!!!!って言い続けてた。
Reactはウェブでの支配的シェアを持つようになったし、なんなら SwiftUI とか Flutter のように GUI の広域に React のパラダイムシフトが影響を与えてるし、JavaScript/TypeScript も現代において、シェアは増え続けている。
ということで、JS 一本で生きていくわ!という考え方と React / React Hooks にブッコむという僕の人生設計は見事に的中した。
もし、僕に才能があるのだとすれば、たぶん2015年の時点でJSの時代が来る確信を持ってそれに全集中で生きたこと、2016年の時点でReactの時代が来る確信を持てたことと、2018年の時点で React Hooks の時代が来る確信を持てたことだと思ってる。あとは、ほどほどのタイミングで TypeScript に確信を持てたこと。
プログラマになりたい人へ
僕は学も無ければ、才能もなくて、結局エンジニアとして花開くまでに20年以上費やしたけど、今は知識の高速道路が整備されきってるので、道さえ間違えなければ、数年程度でも普通にやっていける時代です。
たぶん僕は、普通の転職エージェントから見れば転職弱者にしか見えないはずだし、そのままなら間違いなく親が死ぬ頃には、人生を終えていたことでしょう。でも、
1. 2ch採用でドワンゴに滑り込んで、実務経験をがっつり稼ぐ事ができた
2. JS/React 一本に絞り込むことで、完全に時代に適合できた
この二つにより、二段階で成り上がることができました。
僕が他の人と違ったのは、これは大切だと思った本を、何回も何回も何十回も読み返したことくらいですかね。才能が無くても、たったそれだけでなんとかなるもんです。
今の時代ならうさんくさいビジネス系のキラキラパリピではない、本物の優秀なエンジニア諸氏が、本当の良著を Twitter やブログでオススメしてたりするので、そういう本をボロボロになるまで読み返したらいいと思います。本の冊数よりも読んだ回数。それが一番近道です。いわゆる急がば回れです。
たとえばこれは、フロントエンドの第一人者が、初心者向けの学習方法について書いた記事です。
あとはもう、公式サイトを隅から隅まで読み返しまくること。
これらで得た知識を元に、ゲームかアプリかウェブサービスを一本でも仕上げるのが、一番手っ取り早く、かつ確実にプログラマになれます。(できれば、開発と並行して本を何度も読み返しましょう。開発を続ければ、その度に、本から新しい発見を得られます)
何かアプリ・サービス開発するときには、プロトタイピングが参考になると思います。試行錯誤の工程みたいなのが載ってます。78Pのお試し版とかサンプルコードのリポジトリもあります。
あとは、できる限りアウトプットを意識すること。ブログを書くことと、しょうもないものでも GitHub で公開すること。
これらの、サイクルを回すこと(本を読む、コードを書く、アウトプットをする)。とにかく手早くサイクルを回す。現代に整備されまくった知の高速道路を爆走するためにはサイクルを回すことが必須です。
給与を上げたいなら、転職を挟まないと難しいかもしれないけど、それはもうそういうバグなんで仕方ないです。
フリーランスやってくのもいいですけど、ぶっちゃけ「死ぬほどめんどくさい」です。税金との戦いです。書類との戦いです。手続きとの戦いです。会社員はマジ楽なんやで。
ビジネス系の意識高めたいなら、会社勤めしながら個人アプリ・サービスでいいんすよ。うまくいけば、大ヒットサービスをバイアウトなりできるだろうし(僕はその路線はあまり興味はないけど)。
個人的には、まずは初手 React でウェブサービス作ると手っ取り早いし、そこから TypeScript や Next.js に手を広げたりして、TS力やReact力を高めれば、引っ張りだこになるはずです。
理由として、新規でやる人なら、既存の人らが古いJSの引力に魂を引っ張られて苦戦してるのを横目に、知の高速道路をかっ飛ばして、いきなりモダンフロントエンドで追い抜けるからです。(JS界隈は歴史的経緯から、古くて有害な知識が多いので、今の時代では足を引っ張りがちです)
下手に少しでも HTML, CSS, JS を知ってる人より、HTML, CSS, JS をゼロベースで、今から覚える人の方が一気に成長できる可能性が高いです。
他のジャンルだとなかなかここまでうまくはいかないので、成り上がりたい初心者には TypeScript + React/Next.js をオススメしています。なんといっても、実際に動く物、アプリ・サービスを作れるのが良いです。(ちなみにNext.jsは、Reactの環境構築に苦労したくない人にとくにオススメです)
また、現状のソフトウェア開発業界では、TS力&React力が高い人がとても不足しています。Rails や PHP や Java ができる人はむちゃくちゃ一杯います。レッドオーシャンです。なので、ブルーオーシャンという意味でも React がオススメです。5年後にレッドオーシャンになってる可能性もありそうですが、今からでも5年間やり続ければ、遅れて参入する人よりは優位性を保てるでしょう。
もちろん、ゲームを作りたい人やモバイルやりたい人には、UnityなりC++なりiOSなりAndroidなりの別の道があるでしょう。ゲーム作るなら、最初はいっそ、ツクールでもいい。
自分が作りたい物、作ったら楽しそうな物を作ることが一番大切です。作りたいものや作って楽しそうなものがなさそうなら、自分を洗脳すれば良いのです。まずは作りたい物を決めつけてください。プログラミングに楽しさを見いだしてください。
自分を洗脳できなさそうなら、ソフトウェアエンジニア以外の道を探してもいいのではないでしょうか。
まとめ
・ アプリ・サービスなりを一本作り上げることが一番確実な近道(いわゆる個人開発)
・ ブログとか GitHub のアウトプットすべき
・ サイクル回すのがとても重要
・ プログラミング大好き、作りたい物作って幸せって自分を洗脳する
TypeScript / React / Next.js は今の時代、一番お得だと思ってます。もちろん別の選択肢を否定する気はまったくありませんが、僕が React のおかげで今の自分になれたのは事実です。
この記事が気に入ったらサポートをしてみませんか?