30歳からのプログラミング

30歳無職から独学でプログラミングを開始した人間の記録。

プログラミングを勉強するために 30 代半ばの 2 年間を無職として過ごした話

2019 年の夏に前職を辞め、そのまま無職として過ごし今年の 10 月にようやく再就職して働き始めた。
何か事情があって働けなかったわけではなく、プログラミングの能力を伸ばすために敢えて就職しなかった。

自分にとってそれなりに重要な期間だったと思うので、記録を残しておく。

予め断っておくが、何か「すごいこと」を成し遂げたわけではない。「すごくないプログラマ」が少しでもすごくなりたくて勉強していた話に過ぎない。
「すごいプログラマ」が「すごいこと」をした話を読みたければ、以下の記事などがよいと思う。

予防線を張ったところで、本題に入る。

背景や動機

プログラミングの勉強をするために前職を辞めたわけではなく、退職の理由は別にある。
そのため、転職をするかしばらく無職として過ごすのかの二択だったので、後者を選んだ。

今の自分が転職活動しても満足の行く成果は得られないだろうなと思っていた。プログラミングを始めたのが遅かったためスキル不足は否めず、転職市場で評価されるような華々しい経歴も持っていない。
実際、試しに使ってみた転職ドラフトでも、魅力を感じるオファーはもらえなかった。

この、「プログラミングを始めるのが遅かった」「プログラマとしてのスキルが低い」という自己評価や劣等感が、根底にある。
とにかくこれをどうにかしたいという切迫感があった。
このままだと「スキルが低い -> スキル不足でも出来る仕事しか得られない -> 成長できず相変わらずスキルが低い」という悪循環に陥るように思えたので、何とかここでこのループを断ち切りたかった。
スタートの遅さをカバーするために、集中的に勉強して一気にショートカットしたかった。プログラミングを始めたのが 30 歳である以上、悠長に構えてのんびりやっているわけにはいかない。

概ね上記のようなモチベーションで無職生活に突入したが、無職になること自体には何の抵抗もなく、何か思い切った決断をした感覚もなかった。
そもそも最初にプログラマとして就職する前も、一年間無職として過ごしてプログラミングを勉強していた。新卒で入った信用金庫を辞めたあとも何もせずフラフラしていた。10 代のときは高校を中退して引きこもりをやっていた。
社会からドロップアウトするのは自分にとって「いつものこと」であり、今更どうでもよかった。

実際にどんな風に過ごしたか

フリーランスとして短期の仕事を請けて生活費を稼ぐ、というようなことも一切せず、本当に無職として過ごしていた。
それまでの仕事が高給だったわけではないが、酒もタバコもギャンブルもしないしインターネット以外にこれといった趣味もないので、貯金はあった。
普通の人が車などを買うように、数百万円で無職生活を買った、という感覚。

具体的に何か作りたいものや習得したいスキルがあったわけではなく、「技術力を上げたい」という漠然としたモチベーションだったので、とにかく興味のあること、知りたいことを学んでいった。
学んだことの全てをブログでアウトプットしているわけではもちろんないが、このブログの記事一覧を見ることで、いつ頃に何をしていたのかは概ね分かるはず。

基本的には、いわゆるフロントエンドと呼ばれる領域を中心にやっていた。これには理由があって、就職活動を意識した結果、こうなった。
ずっと無職を続けていくことは望んでいないし、そもそも不可能。どこかで就職することになる。だから、就職活動がこの無職生活の「出口」になる。そのため就職活動はどうしても意識せざるを得ない。より具体的には、就職活動で評価されるかどうかを意識することになる。
その結果、フロントエンドが中心になった。自分の場合、フロントエンドしか実務経験がない。だから例えばバックエンドに投資した場合、「バックエンドについては最新の知識を持っているし自信もあるが、実務経験はフロントエンドしかない」という中途半端な人材になってしまう。これではアピールしにくいし、「自分がどういうプログラマなのか」がぼやけてしまう。コンピュータサイエンスにも興味はあったが、ちょっと学んだくらいでは評価されないだろうなと考え、時間を割く勇気を持てなかった。
後述するが、この読みは当たっていたと思う。

やってみてどうだったか

「急激な成長」というのは実現できなかった。2 年はあくまでも 2 年であり、その分の成長しかできない。
とはいえ、ある程度の成果は得られたので、後悔は全くしていない。

上述した劣等感をだいぶ払拭できた。「自分はプログラマとしてものすごく劣っているのではないか」という根拠のない不安があったのだが、事実の積み重ねによってそれを克服できた。
確かに知らないことも多いが、それはただ単に今まで触れたことがないからであって、気にする必要はない。他のプログラマに比べて思考力や理解力が特段劣っているわけではない。そう思えるようになった。
「何も分からない」と感じる技術に取り組み、「記事やドキュメントを読んでも全く理解できない -> 糸口が掴めてきた -> 思考が整理されてきた -> 自分の中にメンタルモデルを構築できた」という一連の経験を得る。これを何度も繰り返すことで、自分の能力に対する自信が育っていった。

その一方で難しかったなと感じることもあり、そもそも独学では学ぶことが難しいスキルについては、どうしようもなかった。
例えばチーム開発については、その定義からして一人ではどうにもならない。他にも、運用やリリース周りの知識についても学習の難しさを感じた。一人での開発しかしないから、ただでさえ低かった Git 力も落ちたと思う。
それから、ベタな話だが、モチベーションの管理も難しかった。時間が豊富にある分、危機感が薄れてしまった。また、「勉強のための勉強」のようになってしまうとやる気が出ないので具体的な課題を設定したほうがいいのだが、適切な課題を設定するためには最低限の知識が必要になる。そのためどうしても、新しいことを学ぶ時は「つまらない勉強」をするフェーズを経ないといけない。この時期のやる気の保ち方が難しかった。

就職活動

2 つの時期に分けることができる。今年の 2 月くらいにあるキッカケがあって何となく始めてみて、思うような結果が出なかったのですぐに止めた。その後、そろそろ就職しないとお金が持たないなとなって、夏くらいから本格的に職探しをしていた。
友人やエージェント等に紹介してもらうことはなく、自分でネット上で探して応募していた。

就職活動は結局は相性、タイミング、運だと思うから、振り返りが難しい。しかも通り一遍のフィードバックしか得られないから、自分の主観的な感想にならざるを得ない。

全体的な感想としては、厳しかった。売り手市場だとは全く感じなかった。自分の年齢もあるのかもしれない。
この方とは状況が全く違うけど、年齢が上がれば上がるほど厳しくなっていくという傾向は、やはりあるのかもしれない。

2 年間独学したことに対する反応も、芳しくなかった。あまり評価されなかった。
現場の開発者レベルではそんなに反応は悪くなく、このブログについてもかなりポジティブな反応をもらうことが多くて、話が噛み合うと感じることも多かった。実際に選考の通過率も悪くなかった。
問題はそのあとで、非開発者にとってはブログとかどうでもよく、「年齢のわりに実務経験が少なすぎるし、直近 2 年間無職という得体の知れない人間」という感じだったのかもしれない。採否は複合的な要因で決まると思うが、少なくとも独学してきたことが評価されているような感覚はなかった。ただのビギナーとして扱われているような印象を抱いた。非開発者にスキルを理解してもらうためには、著名なテック企業で働いた経験、学位、世界的に使われている OSS、あたりが必要なのかもしれない。自分はどれも持っていなかった。

それから、実務経験が少ないと、話すネタがなくて困ることになる。現場の開発者の反応は悪くなかったと書いたが、あくまでもそれはそれであり、選考で求められるのは基本的には実務におけるエピソードである。

「働かずに一定の期間プログラミングを勉強すること」に関心がある人のために正直に書くと、短期的な転職市場での評価を考えるならば、働かずに独学するのは悪手だと思う。「独学」の内容にもよるが、よほど突出した成果を出さないと厳しい。もちろん人によってバックグラウンドというか前提条件が違いすぎるから、何とも言えないんだけれども。
自分は場合はそもそも経歴が滅茶苦茶だから、独学がどうという話ではないのかもしれない。書類選考が通らないことも多かった。信用金庫での外回りの仕事、ベンチャー企業でのバックオフィス、そして 30 歳過ぎてからのプログラマへの転身。さらに直近 2 年間は無職……。こうやって書いていると本当に滅茶苦茶だし、警戒されるのも無理ないのかもしれない。
ポジティブに捉えれば、珍しい経歴だから印象に残りやすいというのはあると思うが。

余談だが、ここらへんのルールを守れていない企業があって辟易とした。

応募者の適性・能力に関係のない事柄について、応募用紙に記入させたり、面接で質問することなどによって把握しないようにすることが重要です。これらの事項は採用基準としないつもりでも、把握すれば結果としてどうしても採否決定に影響を与えることになってしまい、就職差別につながるおそれがあります

止めましょう。

現在

10 月から株式会社HERPで働いている。
BtoB の SaaS を提供している会社で、「採用」が対象領域。選考を受けた会社のなかにも、弊社サービスを使っている会社が複数あった。

入社した理由はいくつかあるが、組織に柔軟さがあって硬直化していなさそうだから、というのが大きかった。
プロジェクトを成功させるためには技術力だけでは不十分で、開発プロセスが上手く機能していないと破綻するんだと、前職で思い知らされた。そして、開発プロセスのさらに土台にある企業文化が健全でないと、開発プロセスを変えようとしても上手く行かないのだということも、思い知らされた。また、透明性が低い環境は精神衛生に悪いのだと学習した。

そういうことを考えながら就職活動をしていたタイミングで、以下の記事を読んだ。

note.com

LeSS やスクラムそのものではなく、自社の開発プロセスの問題を認識し、それに対してアクションを起こしていることに興味を持った。そういうことができる組織は健全だと思うし、ソフトウェアエンジニアがスクラムマスターになったのも面白かった。
話を聞いてみるとフラットな印象を受けたし、疑問や違和感を持ったときに発言でき、それをひとつの意見として尊重されるような雰囲気を感じた。

Haskell をプロダクトで使っているというのも面白そうだった。JavaScript や TypeScript 以外の言語についても実務経験を積みたいと思っていたが、どうせなら JS/TS とは毛色の違う言語をやって自分の幅を広げたいと考えており、Haskell はちょうどよかった。
そして単に Haskell が魅力的、というだけでなく、いい意味で思想や意見の強い開発者が多そうだった。

まだ入社して日が浅いが、今のところ上記の印象通りの会社だった。
頭のいい人が多いというか、言語化能力が高い人ばかりで、ロジカルにやり取りができる。そのため、自分の意見を表明することに躊躇いが生まれない。
オンボーディングもしっかりしており、今まで様々な会社(100 年以上の歴史を持つ「伝統的な」企業や、設立 1 年未満のベンチャー企業など)を転々としてきたが、一番力を入れていた。

最後に、個人的な話。
既に述べた通り自分は 30 歳からプログラミングを始めたことに強い切迫感や劣等感を持っていて、それをエネルギーにしてここまでやってきた。始めたのが遅いことを言い訳にしたくないというか、10 代の頃からプログラミングをやってきた人たちには負けたくない、追いつきたい、という気持ちをモチベーションにしてきた。具体的な誰かというわけではなく、「有名大学に通いながらメルカリ、はてな、サイバーエージェントあたりでインターンして、卒業後はメガベンチャーや勢いのあるスタートアップに就職」みたいな人たちに追いつきたいと、一人で猛っていた。
入社して知ったのだが、HERP の開発陣はそんな人ばかりだった。はてなインターン経験者何人いるんだよ。だから、もういいかなと思った。技術力はまだ遠く及ばないけど、同僚になったから、そういう意味では「肩を並べた」と言える。コンプレックスのおかげでここまでやってこれたけど、今後はもっと前向きで健全なモチベーションを見つけて、それでやっていこうかなと思っている。

We are Hiring!

そんな株式会社HERPは、シリーズBの資金調達も終え、積極採用中です。

careers.herp.co.jp culture.herp.co.jp

特にフロントエンドは、特設サイトを用意するくらいリソースが足りていません。

frontend-engineer-recruiting.herp.co.jp

興味のある方はぜひ上記の各種サイトを覗いてみてください。

Twitter で相互フォローになっている方は、私に DM を送って頂いても構いません。

よろしくお願いします。