【質問#151】プログラマーに転職したいと思っているのですが…

質問・悩み相談の回答です。

質問

25歳男性です。記事「プログラミング中級者に読んでほしい良いコードを書くための20箇条」に検索でたどり着きました。
質問内容は、「現在転職を考えておりプログラマー関係にかなり興味があるが、転職におけるタイミング・指標についてご意見をお聞きしたい」ということになります。

自分の状況です
国立大文学部卒で地方市役所の総合職採用(試験勉強が好きだったので1年半以上公務員試験勉強をしていました)
いわゆるガリ勉で受験勉強、資格試験の勉強が趣味
独学2か月で基本情報技術者試験に合格、現在応用技術者試験勉強中
ExcelVBAを独学で勉強し、脱初心者を名乗れるくらいにはなったかと思います(クラスモジュールを知識としては理解したけど、その便利さがいまいちピンと来てないレベル)
Pythonをここ1か月ほど勉強しています。本当に初心者です

転職を考えている理由
現在の部署の仕事でほとんど雑務をやらされていて、まったくやりがいがありません。お茶くみ、整理、生活用品の買い出しなど全くスキルを必要としないものばかりです。やる気も体力もあり、スキルが身につくのであれば、若いうちの苦労は買ってでもしたいと考えているくらいです。20代も後半に差し掛かり、若さの貴重さもわかっているつもりです(焦りと混同しているのかもしれませんが)ので、この部署であと数年を浪費することはかなり辛いです。
また、同期含め上司のほとんどに向上心がなく、公務員で安定の人生だと考えているようです。エクセルの電卓再計算など、ありえないような非効率な仕事が行われています。
その結果かどうかわかりませんが、自治体の財政状況が悪化し、早期退職や退職金・給与減額などが現実的に語られるようになってきました。昇進のペースも年功序列で非常に硬直的なため、私が意思決定に関わる役職になれる30年後には、自治体自体がなくなっているかもしれません。仮に40半ばで自治体が崩壊したときには何のスキルもないまま放り出されてしまいますし、崩壊まで行かずともかなり待遇の悪い勤務環境になる未来を想像しても言い過ぎではない状況です。

と、ここまで不満ばかり述べましたが、今の職場に入るのにもそれなりの時間を投資しましたし、現時点ではやりがいを除けば恵まれた待遇にいるということも感じますので、勢いで転職して自分の社会経験の無さを呪うのも怖いです。地方在住ですので再就職のしづらさもネックです。
私はコミュニケーション能力や創造力などは並みか平均以下位だと思いますが、コツコツと勉強をするのは得意な方ですし苦ではありません。「プログラマーはずっと勉強し続けなければならない」というような文章を見て自分に向いている職業かな、と思いますし応用情報技術者試験も楽しいです。
ただ、趣味のサンデープログラマーを数年続けても、やはりプロの方との圧倒的な差は全く埋まらないでしょうから、転職するなら早い方がいいかと焦ります。やはり優秀なプログラマーと呼ばれる方は早いうちから厳しい環境に身を置いて鍛錬を続けているのでしょうか
「安定を放棄して今すぐ転職してガンガン勉強してプログラマーとして一人前になる」or「やりがいはなくともそれなりの給料をもらって趣味でプログラミングを勉強する」の二択しかないのでしょうか。「○○歳を超えると一般には厳しい」とか「○○をやってみてそれを試金石にするとよい」などのアドバイスはありますか?

もちろん最終的に決めるのは自分ですよね。知り合いにプログラマーの方が全くおらず、全然話を聞くことができませんので、なにか羅針盤のようなものが欲しいと思っています。長文になってしまいましたが具体的に、真剣に書いたつもりです。もしお返事いただけたらとてもうれしいです。

回答

まず最初に、質問回答まで大幅に時間がかかってしまってすみません。他にも未回答の質問が溜まってしまっており、申し訳ないです。今後順次回答していきます。

質問者様はもしかしたらもう見ていないかも知れませんが、こういった質問への回答は第三者にとっても参考になるだろうと思い、回答してみます。

といっても、

もちろん最終的に決めるのは自分ですよね。

と書いてらっしゃるとおり、最終的には人生の重要な決断は自分でするしかありません。時々、でしゃばりな人がお前はこうすべき、みたいに語っているのを色んな所で見ますが、その人はその決定に関して何ら責任を取ってくれません。責任を取れるのは自分しかいません。なので、他の回答と同様、質問者様の判断の参考になりそうなことを色々と書いていきます。

また、いちいち書くべきではなく自明と思いますが、以降の回答では私の人生観・価値観・経験のバイアスがかかっていることをご承知おきください。これは、どんな人でも常にそうなってしまうという理由の他に、質問者様が特に私に質問をしてきてくれたから、という背景をも鑑みてこのようにしています。

ということで回答に入ります。

25歳男性です

まず年齢ですが、全然違う業界に転職するならば若ければ若いほど有利です。これは理由を説明するまでもないと思います。年を取ってから別の業界に鞍替えして成功した人ももちろんいますが、特に理由がなければ早いに越したことはないです。

続いて、現職では仕事にやりがいがない、つまらないとおっしゃっています。

お茶くみ、整理、生活用品の買い出しなど全くスキルを必要としないものばかりです。

エクセルの電卓再計算など、ありえないような非効率な仕事が行われています。

こんな状況では仕事へのやる気の無さが積もり重なって嫌気が差してくるのは当然のことと思います。ただ、過去の質問でも多かったのですが、これとよくセットで語られる悩みが

現時点ではやりがいを除けば恵まれた待遇にいるということも感じます

こちらです。「安定して食っていける職についているが、仕事はつまらないので転職を考えている」という悩みは非常に多く、かつ私もその一人でした。その悩みに対して私は思うことがあります。

「仕事がつまらない」というのをみんな楽観的に考え過ぎだと思います。もうちょっと危機感を持ったほうが良いのではないでしょうか。どういうことかというと、仕事してる時間というのは人生において大半を占めるわけです。

「めちゃつまらない仕事だけど、週3日しか働かなくて良いから余暇を充実させてバランスを取ってる」

とかならわかります。でも余暇というのは特に現代日本とかだと少ないわけですよね。大半を占める仕事の時間がつまらなくていいというのは、それは「私の人生の大半はつまらなくていい」と言っているに等しいです。それで本当にいいのですか?と私はみんなに問いたいのです。すると「そんなに人生は甘くない」という反論が必ずどこかから飛んでくるのですが、こんな意見はただ単にその人の人生経験から来る感想、お気持ちでしかないので聞くに値しません。甘い考えで大失敗したという経験を具体的に語るならまだわかりますが、畑村洋太郎先生の失敗学くらい系統的にまとまった体験でないとあんまり意味ないよねとも思います。

仮に40半ばで自治体が崩壊したときには何のスキルもないまま放り出されてしまいますし、崩壊まで行かずともかなり待遇の悪い勤務環境になる未来を想像しても言い過ぎではない状況です。

私も残念ながらこの見解には同意です。地方都市は残念ながら衰退の一途をたどるでしょう。私個人としては田舎生まれ田舎育ちで今でも田舎暮らしは好きなのですが、もう好き嫌いで語れるような世界ではなくなってきました。

そしていざ、お勤めの自治体が危機に直面した時、他の業界でもつぶしが利くようなスキルや知識が今の職場で得られるかと言うと、ご認識の通りそういうことは残念ながらなさそうです。このような状況で「待ち」という戦略は何らプラスに働きません。待っているだけでは成長もなければ新しい機会が勝手にやってくるわけでもないからです。ということで、現状だけを見ると、「転職したほうが良いよね」という意見に私は大きく傾くのですが、これがプログラマになりたい、という話になるとちょっと変わってきます。

まず、

ExcelVBAを独学で勉強し、脱初心者を名乗れるくらいにはなったかと思います(クラスモジュールを知識としては理解したけど、その便利さがいまいちピンと来てないレベル)
Pythonをここ1か月ほど勉強しています。本当に初心者です

と書かれていますが、これはご自身でも書いておられる通り、残念ながらプログラマとして必要なレベルには満たないと思います1。Excel VBAができる、という人はプログラマに限らずとも大企業であれば総務その他の非開発系の部門でもからなず一人や二人見ますのでそういうところでは重宝されるのかも知れませんが…。要するに、他の業務がメインで、プラスαの付加価値としてプログラミングと言うか、VBAで多少効率化出来る、みたいな感じですね。

Pythonをここ1か月ほど勉強しています

Pythonも今は注目を浴びている言語ではありますが、それは色んな処理をくっつけるためのグルー言語としての役割が大きいからです。PandasなりスクレイピングなりtensorflowなりOpenCVなりscikit-learnなり他の有名なライブラリ群を使えた上で、画像処理なり何なりの専門知識がないと、「Pythonができる」だけで勤まる仕事はほとんど無いと思います(しつこいですが、質問者様がそういった認識を持っていると決めつけてるわけではないです。他の読者に向けて書いています)。

なので、

趣味のサンデープログラマーを数年続けても、やはりプロの方との圧倒的な差は全く埋まらないでしょうから、転職するなら早い方がいいかと焦ります

これは全くそのとおりなのですが、「今の段階のスキルでは残念ながら人間的な生活ができる会社への転職は難しい」という制約があるのですぐに転職というのは現実的ではないと思います。そして、まともな仕事をしつつプログラマとして働かない限りはプログラマとしての大きな成長も望めないという、まさに卵が先かニワトリが先か的なジレンマに陥ってしまうのだと思われます。

やはり優秀なプログラマーと呼ばれる方は早いうちから厳しい環境に身を置いて鍛錬を続けているのでしょうか

ちなみにこちらの質問に関しては、私が見てきた中では優秀なプログラマで昔からプログラミングに親しんできたという人もいれば、そうでない人も存在します。逆に昔からプログラミングが好きでずっとやってきた偏屈で妙なこだわりがあって仕事でも変なコードを書くおじさんも結構見ます。個人的にはこのこだわりの強いおじさんが一番面倒くさくて一緒に仕事したくないタイプです。ですから幼少からPCやプログラミングに親しんできたことが必ずしもプラスではないとも思いませんし、途中からプログラマに転向するのは絶対ムリだとも私は思わないです。

一方で、こちらの質問ですが

「○○歳を超えると一般には厳しい」

「優秀な」プログラマになりたいのであれば、25歳という年齢は結構ギリギリな気がします。より正確に言うと、「私は25歳を超えてから他業界から転向してきた優秀なプログラマを見たことが無い」という意味です。

その理由は簡単で、既に述べたようにそもそも学習と成長の機会が限られるからです。プログラマになりたくても、初心者に手取り足取り教えてくれるほどの体力がある大きい会社は少ないし、さらに特に日本だと「初心者であっても給与を与えつつ手取り足取り教えてあげる」という枠は新卒採用した社員で占められているからです。その貴重な枠を非新卒に分け与えてくれるほど新卒就活生が優しくないことも、重々ご承知のことでしょう。

「新卒でない25歳」というと、少なくともプログラマとしては「与えられたタスクに関しては手取り足取り教えてあげなくても何とかなる」「それなりに面倒くさいタスクを与えてもこなせる」という雰囲気を現場では下されると個人的には思います。逆に言えば浪人して新卒修士で25歳の新入社員であれば手取り足取りもある程度許されるとおもいますが、そのあたりの矛盾はまぁどうにもならないのでさておき、「それでもなお、25歳プログラミング業務未経験」を採用するストーリーを描けないとそもそも成長の機会(=まともな会社に入って常識的な給料と労働時間でプログラマとしての経験を積む機会)が得られないだと思います。そしてそれは概して難しいです。私は一つの方法しか思いつきません(後述します)。

ここまで結構厳しいことを書いたと思いますが、私の一番大きな懸念は

いわゆるガリ勉で受験勉強、資格試験の勉強が趣味
独学2か月で基本情報技術者試験に合格、現在応用技術者試験勉強中

「プログラマーはずっと勉強し続けなければならない」というような文章を見て自分に向いている職業かな、と思いますし応用情報技術者試験も楽しいです。

このあたりの記述です。

「プログラマーはずっと勉強し続けなければならない」というのは確かによく言われますし、私も完全に同意します。しかしながら、それは資格試験や受験勉強の勉強とは少し違った能力が必要とされると私は感じます。

資格試験や受験勉強は既に過去問がたくさんあり、参考書もたくさんあります。それらで必要とされるのは「AならばB」「Cという問題にはDという解法」という辞書的な知識を瞬時に導き出す能力です。一方でプログラマが言う「勉強が大切」の「勉強」とは、本やその他ドキュメント類に書いてあることを読み解く読解力(これは資格試験にも多少共通すると思います)や、本やドキュメントとしてまだ体系的にまとまってないことを試行錯誤によって解法を導き出す発見的なアプローチのことだったり、自ら問題を発見する観察力、さらにその回答を何個か用意する創造力や発想力、さらにはその中から状況に応じて最適なものを判断力などなどを養うこと、あとは単純に新しい技術に対する純粋な興味、楽しみのことを勉強と言っていたりするのだと個人的には思っています。

私が見てきた中で伸びるプログラマというのは、特に、最後に挙げた「技術に対する興味や楽しみが非常に強い人」に多いです。とにかく新しいことが好きで、本を読むよりもまず触ってみたい、試してみたいという人。本を読んで体系的な知識を得るのはまず触ってみたあとで良い、という人です。例をあげると、私の前職の会社の後輩で優秀だったプログラマの一人は某ブラウザゲームが好きだったので、ブラウザに表示される画像を自動で認識して出現するアイコンをクリックして状況に応じて操作を行う、という、経験値だったかお金だったかを自動で採掘するプログラムを書いていました。またある人は、マイクロソフトやアップルなどの新製品、いわゆるガジェット的なものが大好きで、新製品が出る度にすぐに購入し自分でSDKのドキュメントを読みつつ色々いじってみるということをやっていました。彼らは自分たちがやりたいことを解説した書籍等々を参照しつつやっているわけではなく、とにかく手を動かして試行錯誤しています。

なぜそのような人がプログラマとして優秀になるのかと言えば、私の推測ですが、まだまだITというのは若い分野であって成長途中であるがために、業界全体で試行錯誤の段階にあるのだと思います。実際、この業界の技術のトレンドは本当に早く、流行から1〜2年で廃れていくものも多数あります。かと思えば、昔からあった技術が名前を変えて再登場することもよくあります。そういう波を乗りつないで行ける人種が業界として必要とされているんじゃないですかね。

以上をより端的に言うと、既にある書籍をどんどん読み解いて学習を進めていくと言うよりはむしろ、未知の分野に突っ込んでいって自分で本を書くようなスキルが歓迎されるという感じでしょうか。

もちろん、資格試験とその勉強が得意なことはここまで述べたような例や特性と相容れないというわけでもありませんが、しかし興味の方向性としては違っているとも思い、そこがかなり気にかかります。もしかしたらプログラマになってみたはいいものの、いまいちIPA試験以上のところに興味を持てず、違和感を感じるなど…。もちろん、それは私の考え過ぎかも知れませんし、質問者様は書いてないだけで現在も資格試験の勉強は十分にしつつ、それよりもVBAやPython触ってる方が楽しい、ということかもしれませんが。

あと、もう一つ質問には書かれていないですが気になるのが、地域的な問題です。プログラマに転職するとして、地方から都市圏に出ることは考えていないでしょうか。

「地方」が具体的にどこであるかにもよりますが、基本的にITは東京一極集中になっています。せっかくITなんだから分散しろよと個人的には思うのですが、ITの世界と言えど顧客と顔を合わせることは必要ですし大きな顧客は東京に社を構えることが多いので、残念ですがこれが合理的なのです。

「地方」が例えば仙台とか福岡とかだと、有名なIT系企業もあるので問題ないと思うのですが、そうでない場合は結構厳しいと思います。私も学生のうちは地元秋田のIT系の会社でバイトしましたし、就活時も一応は県内の情報も調べて見ましたが、やっぱり地方のIT系企業というのはなかなかの惨状でした。まぁ私の話はサンプル数が少ないのであんまり当てにしないほうがいいとも思いますが、ともかくIT関係ならば基本的に都市圏に行ったほうがよいというのは殆どの人が同意するところだと思います。

以上が私の感想ですが、それを踏まえた上で私が質問者様の立場ならば、

  • 有名なオープンソースソフトを作る
  • 有名なサービスを作る
  • 本を書く
  • ブログを書く

のいずれかをする、という戦略を取ります。これは今の仕事を続けたまま行います。

なぜそうするかと言うと、これらが「職歴は無いが能力がある」という説得力のある説明だからです。実際、面接の場で「ああ、あのブログを書いてる人ね」などと話が進み採用に至ったという話なども何度か見聞きしたこともあります。私もこのブログがきっかけで転職しましたし。

どんな分野でもそうですが、成功する人は愚直に興味を持ったことを永遠にやり続ける人です。ずっとやり続ければ、周りは勝手にやめて行っていつかその道の第一人者になります。私は何かの第一人者では無いですが、しかし色んな分野でトップに立つ人が似たようなことを言っているのでおそらくそうなのだと思います。

かつ、これらはプログラミングが好きならば行うのにそこまで苦労は要らないという点でも優れています。ちょっと話はそれますが、最近、副業という言葉が流行ってます。仕事をしながら余暇でまた別の仕事をするというのは本来はものすごいストレスで、だからこそ副業は自分の楽しみをお金に変えるという作業であるべきと思いますね。

プログラマにも色んな人が居て、やりたいことがそれぞれ違ってたりしますが、たいていは前述の4つのうちいずれかには興味があると思われます。興味のあるところを見つけて、積極的に発信すればいつかは報われるでしょう。

ただ、これはそもそもアウトプットが得意な人という制約はつきまといますし、「いずれ報われる」の「いずれ」がいつなのかはわかりません。運任せの部分もあるでしょう。だからひたすらに消極的な方法であるとも言えます。しかしながら「現在の安定した環境も捨てがたい」と躊躇している人にとっては非常に低リスクな方法であるのでおすすめしています(ちなみに私もそういうタイプです)。

余談ですが、最近はプログラミングスクールなどというのも流行っていて、そこでは「SNSで能力のあるプログラマをフォローせよ」などと指導しているらしいです。SNSやイベントでの登壇は確かに著名なプログラマ・IT系エンジニアが多く行っては居ますが、それは専門知識や高いスキルの裏付けがあることが前提なので、ただ表面的なことをしても中身が伴っていないと寒いことになります。というか、私を含め私の周りのエンジニアの意見を見ていてもプログラミングスクール的なものへの評価は否定的なものが多く、転職の成功報酬を前提としたビジネスになってるような気がします。


  1. もっとも、低いスキルでプログラマを名乗るひともいます。どうやって食っているのか(それとも食えてないのか)謎ですが、おそらく「とりあえず何でも良いから人をよこせ的な炎上プロジェクトに経歴詐称して押し込まれる」とか、ひどいことになってるんじゃないかと想像しています。良くても「システムを試験してエビデンスのスクリーンショットをExcelにプチプチ貼り付ける」というプログラミングと関係ない仕事をさせられる気が。