見出し画像

文系でプログラマーになったけど色々失敗して3年半で会社を辞めた話

このnoteをすべてのインターネット探索者(Internet Explorer)達に捧げる。


2018年12月31日、新卒入社して3年半勤めた会社を辞めた。東京の八重洲にある、フリーペーパーやWebサービスを作る会社で働いていた。いわゆる「文系プログラマー」というやつで、文系学部を卒業後、会社に入ってからプログラミングを覚えた。現在は退職してフリーランスになり、個人で開発しつつ、ずっと漫画を描いている。

3年半のあいだ、大きく分けて2つの失敗をした。

1. プログラミング入門の仕方に失敗した
2. プログラミングを覚えてから何をすればいいかわからなかった

前者の失敗の結果、プログラミングを投げ出して京都に逃亡した。後者の失敗では精神を病み、3ヶ月休職をすることになった。前者は笑い話だが、後者は人生に暗い影しか落とさない。これからプログラミングを始めようと考えている人には同じような失敗を避けてほしい。そういう願いも込めてこの文章を書いている。

※「文系プログラマー」という表現は適切ではない。仕事をしていく上で「文系なので…」という予防線は不信感しか与えないし、プログラミングができないことは文系の定義とイコールではない(人文系でも統計やシミュレーションのためにプログラムを書く)。ただ、自分と同じような境遇の人は困ったときに「文系 プログラマー」等でググると思ったので載せている。

入社とプログラミング入門(入社1年目春〜夏)

(入社したときに育てていた植物。のちにすべて枯れた)

「なんで文系なのにプログラマーになったの?」とよく聞かれる。答えは「会社の金でプログラミング研修してくれるって言ったから…」だった。全く知識がなくても数ヶ月の研修さえ受ければプログラマーになれると思っていた。

プログラミングに興味があったのは「なにか面白いものが作れそうだから」。『攻殻機動隊』の影響が大きい。漫画やアニメが好きだったので本当は絵を描いたり物語を作ったりする仕事をしたかったが、現実的ではないと諦めた。

同期は100人ほどで、6割はエンジニア、4割はWebマーケターやデザイナーだった。入社後の研修内容は「Ruby on Railsでinstagramみたいなサービスを作ってみましょう!」くらいのものだった(言語はJavaだった)。

(つよくなるために研修中は毎日食べていた)

「Ruby on Railsでinstagramみたいなサービスを作ってみましょう!」というような研修は、初心者向けにしては結構なボリュームになる。プログラミングスクールで学ぼうとすると何十万円か取られるかもしれない。しかし「それでプログラマーとして働けるか」というと話は別である。もし自分が面接官だとして、「Ruby on Railsでinstagramみたいなサービスを作ってみましょう!」を終えて来た学生を採用するかといったらかなり迷う(『ソフトウェア開発』は『プログラミング』そのもの以外の知識もたくさん必要である)。

しかし当時の私はその温度感が分からなかった。研修を終えて本当に「プログラマー」になったつもりでいた。私は調子に乗って「少数精鋭のチームが良いです」などと人事に配属先の要望を出していた(『攻殻機動隊』の影響)。結果、本当に優秀なエンジニアしかいないチームに配属されることになった。地獄の始まりだった

配属先のチームの人達は私のような素人がやってくることなど知らないし、そういう人間を育てていく準備もなかった。配属先は海外向けサービスの会員認証基盤を作るプロジェクトだったが、「Ruby on Railsでinstagramみたいなサービスを作ってみましょう!」程度の知識の人間がJavaでOAuth2.0の各機能を実装をするのはハードルが高すぎた。また、Dockerを用いてテストの自動化などを命じられたが、「 黒い画面でlsって押すとファイル名が出てくる」程度の人間にはコンテナ技術など到底理解できなかった。あっという間に私は心が折れてしまった。

(正直今も権限周りは分からない)

私は「何がわからないのか分かっていない」状態であり、チームの先輩社員たちも「コイツが何がわからないのか分からない」と思っていた。実際、ある日メンター社員に「君が何が分からないのかわからないんだけど」と言われたことがあった。

自転車に乗れるようになってだいぶ経つ人間は、「自転車に乗れない」ということがもはやどういう状態なのかわからない。「今から自転車に乗れなくなってください」とお願いをされても実現できない(乗ったまま体を動かさずに倒れることはできる。それは「乗れる」人間だからできる技であり、「乗れない」人間はなんとかペダルを動かそうとしているうちにいつの間にか倒れている)。

自転車に乗れない人間も、自分には何が足りないのか理解できない。「乗れる」というのがどういうことなのか全く分かっていない。だから何を質問すれば良いのかがわからない。

(お互いにお互いが分からない)

上記の問題はどんな職業でも起こりうるだろう。ただ、ソフトウェア開発では技術の抽象度が高い場合が多く、問題が深刻化する。「継承って?」「インターフェースとクラスって何が違うの?」「認証と認可の違いは?」「ポートってなに?」「仮想化って?」といったことを一度理解した人間は、全く理解していない人間が「何をどう理解していないのか」を想像するのは難しい。

そういう意味で、熟練のエンジニアと素人の間には深く暗い川が横たわっている。此岸から彼岸に至るとき、もとの人間ではなくなっている。三途の川を挟んでの意思疎通はできない。だから熟練のエンジニアが素人を教えることはほとんど不可能だと思う。三輪車に乗っている人は補助輪つき自転車に乗る人に教えを請うべきだし、補助輪付きの人は補助輪を外して転びまくっている人に質問すべきである。

そういったことを2ヶ月ほど続けて、私はパンクした。1つ目の失敗である。ある日全く手が動いていない私を見たメンター社員が「連休明けたら会社辞めてた、なんてことないようにね」と冗談で言っていた。そうするつもりだった

※ 近年の幼児たちはSTRIDERというペダルのない二輪車を使って自転車に乗る練習をしている。足で地面を蹴って進むタイプの二輪車で、単に楽しいことに加え平衡感覚を養う効果がある。STRIDERに慣れると補助輪無しでいきなり自転車に乗れるようになるらしい。今流行っているプログラミング学習支援サービスはあくまで補助輪付き自転車に近いと思う。プログラミング教育におけるSTRIDERは、まだ登場していない。

京都への逃亡(入社1年目秋)

シルバーウィークに突入した私は、目黒の極めて安くて汚い居酒屋で、同じく外資系コンサルの激務に疲弊していた友人と、2留を決めて絶望していた友人とともに安酒を煽っていた。そこで発された「京都行かない?」という発言に盛り上がってしまった我々は、すぐさま品川で新幹線のチケットを取り、京都に向かった。2時間半立ちっぱなしだったが、心は躍っていた。

(その時のチケット。サンダルで駆け出したことがわかる)

京都についたのは深夜12時近くであった。我々は四条河原町の天下一品ラーメンに陣を敷き、野宿を避けるべく知り合いに電話をかけ続けた。電話をかけるたび自分たちの無鉄砲さを反省するということを繰り返していたが、楽しかった。

知り合いが京都のシェアハウスに滞在しており、そこなら泊まっても良いとの連絡を受けた。我々は鴨川に沿って歩きながら北上し、下鴨神社の裏にあるというシェアハウスを目指した。

鴨川の水面には四条河原町や出町柳の灯りがキラキラと浮かんでいた。初秋の気持ちいい夜風に送られながら我々は歩いた。すれ違うカップル、追い越していく散歩中の夫婦と犬、川辺のベンチで寝る酔っ払ったサラリーマン、そして人々を柔らかく照らす街灯。東京では見ることの出来ない光景だった。ずいぶんと遠くまで来たな、と思った。

(鴨川デルタで遊ぶ男たち)

順調だった京都への逃避は、この後唐突に現実へと回帰する。たまたま向かったシェアハウスに、会社の同期社員が滞在していたのである。彼は連休を満喫すべくリーグオブレジェント(オンラインゲーム)をやっていた。会社から逃避してきた京都で会社を想起する人物に遭遇した私は、『猿の惑星』で自由の女神像を見つけてしまった主人公のように膝から崩れ落ちた(その後シェアハウスのメンバーの一人が弊社に入社予定ということもわかった)。新幹線の速度ですら現実を振り切ることは出来なかった。会社に戻ってちゃんと話をしようと思った。

(シェアハウスの皆さんありがとうございました)

JavaScript入門(入社1年目冬〜2年目)

連休が明けると上司に仕事を変えてほしい旨を伝えた。どう辛いのかを伝えるプレゼン資料まで作った。意外なほどすんなりと要求は通り、サーバーサイドの仕事から外されることになった。

私が泣きそうな顔で「いまが一番人生で大変かもしれません」と告白したときのメンター社員の「そんな…」という顔は今でも忘れられない。「そんなに追い込まれていると思わなかった」というのが周囲の反応だった。「言わなければ伝わらない」という当たり前のことを理解したのはその時である。

そのあと2人でランチを食べ、エレベーターを使わず非常階段をゆっくり降りた。初めてメンターが自分の弱さを語ってくれた。修論提出前にいかに追い込まれていたかという話だった。社内トップクラスに優秀で宇宙人のように思っていたメンターでも追い込まれることがあるんだなと思ったときに、この人も人間なんだなと思った。何かが許された気がした。

チームでは「書けばすぐ動くフロントエンドの仕事が良いのでは」ということになり、私はそれ以降JavaScriptを書くことが仕事になった。

最初にもらったアドバイスは「ジェイ・クエリーのドキュメントを読むとJavaScriptの勉強になるよ」だった。放心状態だった私はぼんやりと「香港人俳優みたいな名前だな」と思った。

jQuery《ジェイ・クエリー》はライブラリの名前であり(香港人俳優ではなかった)、非常に良く出来たライブラリだった。最初にやった仕事は今でも覚えている。フォームに絵文字を入れられるようにする仕事だ。フォームに4バイト文字が入ってもエラーにならないように正規表現を書き換えた。入力フォームに寿司(🍣)を大量に打ち込めるようになったときはオフィスで小躍りした。

(近所のバーガーキングで勉強していたりもした)

JavaScriptはブラウザで即座に実行される。それが何よりも嬉しかった。私に必要だったのは小さなステップと目に見える成果、そして自信だったのだろう。JavaとJavaScriptはメロンとメロンパンくらい違うと言われるが、確かに違った。私はJavaでなくJavaScriptから入るべきだった。「とりあえず動いて表示される」を繰り返すことが私にとっては必要だった。

入社して2年目になるとVue.jsを覚え、社員エンジニアとしては希少なWebフロントエンド専門という立ち位置を獲得し、それなりに毎日楽しくJavaScriptを書くことになった。エンジニアとしてのキャリアがスタートしたのを感じた。

キャリア迷子と休職(入社2年目〜3年目)

入社2年目に入り、徐々に仕事が回るようになってきたころから、「これからどうする?」という疑問が浮かび始めた。漠然と「プログラマーになりたい」と思う人は多いかもしれないが、「プログラマーになって10年、20年先に◯◯したい」まで考えている人は少ないと思う。統計をとっているわけではないが、ほとんどの人は「Hello, World!」を書く前に挫折するのではなく、書いてから挫折していると思う。「画面にHello, World! って出すのはできたけど、それでどうするの?」となってしまう。

(ラズパイを買ってLチカもしてみたが、もちろんLチカの先に進めなかった)

プログラミングに関しては、「目的地」が抽象的だったり複雑だったりする場合が多い。ほとんどの人にとってプログラミングでどんなことができるのか?何をしたいのか?という想像をするのは難しい(これは最近流行りの機械学習やAIにも当てはまる)。現状のプログラミング学習支援サービスのほとんどは「Hello, World!」から「Ruby on Railsでinstagramっぽいサービスを作ってみましょう」までは手厚く支援してくれるが、その先で迷う人を増やしていると言っても過言ではないと思う。

(当時は迷走しすぎて脳波計で脳波を計測してみたりした)

私は「なんか面白そう」くらいの理由でプログラミングを始めてしまったので、アウトプットの方向性に迷った。ずっとWebアプリケーションを作るための技術を磨いてきたが、それを自分のアウトプットとして一生続けていきたいかと言うと才能や熱意の面で疑問符がついた。ずっと「絵を描きたいなー」と思いながら「でもこれで給料もらえてるし…」と思い直して会社に残り続けようとした。思えばこの時点で決心を固めて絵を描き始めればよかった。しかし私は自分をごまかし続けた。

上司も色々考えたのだろう、入社2年目の終わりには職域を広げるための異動が命じられた。もともとデザイン事務所でバイトしていたこともあり、デザイン業務をやってみようということになった。「UXも見れるエンジニア」という玉虫色の立ち位置になった私はチームを移動し、海外向けプロダクトでデザインと開発を担当することになった。上司に「絵が描きたいです」とは言えなかったし会社を辞めるわけにもいかなかったので新しい仕事に取り組んだ。

そしてその新プロダクトで開発を続け半年、うつ病になった。2つ目の失敗である。

「とりあえず自分でやってみて、わからないところがあったら相談して」スタイルで開発とUIデザインをすることになった私だったが、デザインのレビューがほとんど通らないくらいポンコツであったため、何度もリテイクが続いた。結局、リリース直前までデザインを大幅に変更し続け、それに合わせてコードも変更する、ということが続いた。

デザインについて上司から何度もリテイクをもらい、夜遅くまで他のデザイナーと相談しながら修正、翌日持っていくと全然違う方向からリテイクをもらう(以前と言っていることが矛盾していることが何度もあった)、ということを繰り返した。当然のように鬱病になった。積み上げては崩し、積み上げては崩し、賽の河原と同じ仕組みである

正式に医師から鬱の診断を受ける直前の出来事である。私は会社の休憩室でカップラーメンを作ろうと側面の作り方を眺めていたが、何度読んでも頭に入らなかった。気づけば、そのまま30分以上ボーっとしていた。似たようなことが頻発し始めた。日々症状は重くなり、コードを読むことはできなくなっていた。キーボードに手を置くと震えてしまい叩けなくなっていた。会社と逆の方向の電車に乗ってしまうことが続いた。

(休日は夕方に起き、伸びる影を追いかけて過ごした)

そして畳み掛けるように祖父が亡くなった。実家に向かう鈍行列車の車内は閑散としていたが、私は椅子に座ることができず、ずっとつり革にぶら下がっていた。均等に並ぶつり革の輪は、横から覗くとたくさんの輪が重なっており、その向こう側には車両の先頭の広告が見えた。電車が揺れるたびに輪は重なりを崩し、輪の内側から覗き見ることが出来た「向こう側」が押しつぶされて消えていった。葬儀後、人事と相談して休職に入った

(帰省の電車内はずっとこの体勢だった)

医者に診てもらうと病名がついた。その病名が書かれた紙を発行するために5000円以上かかるが、人事いわく休職にはその診断書が必要らしい。いわば現代の免罪符だ。精神疾患の病名がついた以上は大抵の生命保険には入れない(日本人の死因のベスト10には『自殺』が入るため)。色々な社会的不都合と5000円と引き換えに私は救済を得た。

休職後は毎日決まった時間に起きて、インスタントの味噌汁とご飯を用意すると、カーテンの隙間から差す光が味噌汁の湯気の水滴をひとつひとつ照らすのを確認しながら、ゆっくりと食べ、薬を服用した。

(当時の朝食。ご飯に何を載せるかだけが楽しみだった)

薬を飲むと不思議なほどに気分が明るくなった。淀んでいた思考がスムーズに流れた。脳内物質を少しコントロールするだけで、苦しんだ日々がウソのように感じられた。苦しみの果てに薬に頼らざるをえない状態になり、こんどは薬によって苦しみそのものが消えてしまった。もとの自分には戻れないところまで来てしまったのに、そこに至った理由すら取り上げられたような気がした。

休職時の記憶はほとんど思い出せないが、1年目のときメンターだった社員に話した内容は少しだけ覚えている。「脳が沸騰してしまった。タンパク質の変性のように、もう二度ともとの脳や意識には戻らない気がしている。なにか不可逆で、嫌な変化だった気がする」。

(当時通っていた近所のカフェ。今はもうない)

復職と平成最後の夏、そして退職(入社4年目)

復職後、思っていたよりもずっと簡単に仕事の勘は戻った。環境が全てというが、新しい部署では仕事に全く負担を感じなかった。自分が「普通」をやれているのだと安心した。月日は流れ、入社から4年目になっていた。

平成最後の夏、オフィスビルのブラインド越しには大きな入道雲が見えた。午後にはブラインドが自動で閉まるため、外の景色は見えなくなる。夕日は差し込まない。唐突に、「最後に夕日を見たのはいつだろう」という思いが首をもたげた。この入道雲はいつから浮かんでいたのだろう。入道雲が観測できるようになったのは何日前なのだろう。いったいいつ、梅雨は明けたのだろう。

(会社を早退した日、久しぶりに夕焼けを見て空の色に驚いた)

入社して以降3年間の記憶が急速に脳内を回転し始めた。仕事のために満員電車に乗り、仕事のために勉強をし、仕事のために休日を過ごしているような気がした。いつの間にか日々の生活が仕事のために均質に平坦に再構築されていた。ビルの中は一年中快適な温度で管理され、日が沈んでもオフィスは常に明るく、真夜中になっても煌々と輝いていた。

会社の休憩室で遠くを見ながらコーヒーを飲んだ。皇居の向こう側のビル群には黒い雲がかかり、ゲリラ豪雨が街と雲の境界を曖昧にしはじめていた。雨で立ちのぼる砂埃のにおいも、低気圧がぶつかったときの少し冷たい空気も、分厚いビルのガラスが遮って何も伝わってこなかった。なにか大切なことを見失っている気がした。なんで自分が働いているのかも、何をしたくて生きているのかも忘れているような気がした。この生活がずっと続くのだと思ったときにひどく怯えた。

会社を辞める決意をした。

これから(2019年~)

いつの間にか26歳になっていた。4年近いプログラミング歴を振り返ると、勉強会にも行かないし、OSSへのコミットもしないし、自分の知識をQiitaやブログで共有したこともない。エンジニアなのかと言われると微妙な立場にいると思う。しかしプログラミングそれ自体は面白いと思うし、今後も一生続けていく。計算機はすごい。

ずっと「なにか面白いものを作りたい」「絵や物語を作りたい」と思っていたのに、毎日満員電車に揺られ、季節感のない日々を送り、給料で飼いならされ、精神を壊すという生き方をしてしまっていた。その生活を反省し、フリーランスとなった今はほとんどリモートワークで仕事をしている。朝日で目覚めて、日が昇り切ったら仕事を始め、夕日が沈んだら仕事を止める。そして残りの時間でずっと絵を描いている。

結局は入社前にやりたかったことを、ボロボロになって会社を辞めた後にやっている。絵を描くのはプログラミングと同じくらい大変である。下手くそな絵しか描けない自分と向き合わなければならない。しかし、それでも毎日続けている。退職を決意してから絵を本格的に描き始め、コミックマーケットで同人誌を出してみたりもした。

いつか絵のスキルとプログラミングのスキルを交差させよう思っている。世の中には絵とプログラミングを組み合わせて楽しいことをしている人がたくさんいるので、今は彼らの背中を追いかけて走っている。今はとにかく毎日が楽しい。収入が減ったので不安もあるが、時間が増えて元気になったことは何よりもメリットだった。とにかく今年一年はやりたかったことをすべてやる予定である。そのことについては別の記事で書きたい。

プログラマーになるべきか?

さて、以上で振り返りは終わる。以降はプログラマーを目指す人向けのアドバイスとなる。

冒頭でも言ったとおり、私はこの3年半の間に2つの失敗をした。

1. プログラミング入門の仕方に失敗した
2. プログラミングを覚えてから何をすればいいかわからなかった

このうち、1.に関しては、世の中のプログラミング学習支援サービスが進化し続ければいずれ解決されるだろう。しかし2.が解決される日はなかなかやってこないと思う。

もしこれからプログラミングを学ぶことを考えている場合は、2.について真剣に考えてみてほしい。2.をあやふやにしたまま突き進むと、おそらく私のような悲惨な結末が待っているかもしれない。

そしてこれは2つの失敗に共通する話だが、「プログラマーになろうとしている時点で向いていない」という考えもある。一見するとトートロジーであるが、ほとんど真理だと思う。昔同じようなことを人に言われてムッとしたことがあるが、事実私は上記のような失敗をしているので、彼の忠告は正しかったことになる。

いわゆるプログラマー、ソフトウェアエンジニアというのはビジネスで言う「HOW」のプロである。実装方法がわからなかったり、見たことがないエラーが出たときに、根気強くドキュメントを調べて動くまで頑張る、というのが仕事の基本となる(もちろん仕事なので限度はある)。

つまり、「プログラマーになるには?」という質問をしている時点で、「調べて実装する」というスキルが不足している。先がだいぶ長い、ということを彼は言っていたのだろう。

たぶん業界で活躍しているようなエンジニアはほとんどが「気がついたらプログラミングしていた」タイプの人だと思う。彼らが人の何倍も手を動かしているのは間違いないが、彼らはそれを「努力」だとは思っていないだろう。一方、「努力してプログラミングしている」人たちは、彼らの領域に至るまでにさらなる精神的な追い込みをかけなければならない。

向いていないことに苦しみながら取り組むより別の道を選んだほうが良いことがある。ただ、これからプログラマーを目指そうとしている人が「目指そうとしている時点で向いていない」と言われたところで「はいそうですか」とは決してならない。私も「バカにしやがって」と反発し、プログラマーを目指し、痛い目にあった。両者が理解し合うのはかなり難しい。そういう意味で、「プログラマーになりたい人」と「いつのまにかなっていた人」の間にも深く暗い川が流れている。

おわりに

読む人を意識して人生を振り返ると、何度も推敲する内に記憶が劇的に脚色され、それが本当の記憶に置きかわることがある。そういうことを期待して文章を書いていた側面もある。退職エントリーらしくない内容だが、これを書くことで気がつけたことがたくさんある。また、これを読んだことで誰かが何かを得られれば幸いである。なにか質問や意見があればいつでも連絡をしていただきたい。

最後まで読んでくださったあなたへ。もしこの記事に何か感じるところがあったら、下の投げ銭フォームから100円でも送ってほしい。そうすると私は元気になるし、私はもう少し漫画を描いて生きていく生活が続けられる。私が生きていればかならず良い漫画を描くし、良い漫画が増えれば世の中はきっと良くなる。あなたがいつか何かの漫画で救われたように、私の漫画もどこかの誰かを救い、世界はより良くなる。あなたの100円をきっかけに。

サポートによって労働をせず済んだ時間だけ、漫画を描く時間が増えます。ありがとうございます。