かえるのプログラミングブログ

プログラミングでつまずいたところとその解決策などを書いていきます。

営業マンが1年でSEになって機械学習エンジニアに転職する話

こんばんは、かえるるる(@kaeru_nantoka)です。

先日、10ヶ月勤めたSES企業に辞意を伝えました。 そして4月からは、ストックマーク株式会社(https://stockmark.ai/ )にて、NLPを応用した機械学習エンジンを開発する機械学習エンジニアとして参画することになりました。

ちょうどいい人生の節目なので、流行っている転(退)職エントリを描いてみようと思います。


概要

・営業職だけど趣味で始めたプログラミングにハマったよ

・未経験だけど第二新卒的なアレでプログラマーになるぞ

・ひょんなことから kaggle にハマったぞ

・なんか上京することになったよ

・なんで私がエクセル職人に!?

・なんとかソロ銅メダル取れたぞ

・kaggle 強くなりたいからもう一度転職するぞ!


筆者のスペック

・経済学部卒

・プログラミング歴1年ちょい(2017年12月~)

・kaggle(機械学習)歴半年ちょい (2018年8月~)


目次

I ) 証券時代(職種: 営業)

I I ) 転職活動(1)

I I I ) SES企業時代(職種: C#プログラマー)

I V ) 金融系SIer時代(職種: エクセル職人)

V ) 転職活動(2)

V I ) おまけ


I )

新卒では大手証券会社に入社し、営業職をしておりました。

金融商品の営業は難しい仕事であるという認識はあったものの、色々あって(この内容でもう一本書けそう)私の社会人経験はこの仕事でスタートしました。日経新聞を毎日読み、風が吹けば桶屋が儲かると言わんばかりに記事の一つ一つを無理やり取り扱い金融商品の値動きで締めくくるような営業トークを朝練習して、金融商品のパンフレットを持って個人宅や各種法人に突撃する日々を過ごしていました。

金融の勉強は面白かったし、この商品はイイぞと思える商品もあったのですが、突然来た若造が売りに来た値下がりするかもしれない金融商品を買うでしょうか?それ以前に、「金融商品買ってください」で締めくくられる話を聞く気になるでしょうか?

そもそも、金融商品の良さを知ってる人は自分でやってます。

結局、練りに練った営業トークは聞き入れられることもなく数字は上がりませんでした。

中々数字が上がらないので上司に相談したりしました。「運もあるからね。仕方ないよ。これだけ頑張ってたらどこかで報われるよ。」と励ましてくれましたが、「結局最後は運なのか」と思いました。

別部署へ異動したいという考えもありましたが、資格が必要で、その資格の要件に「実務経験3年以上」というものがあり、この環境を出るためにこの環境に3年も居続けなければならず、さらに資格を取っても配属面談やら人事考課やら、大企業ならではのプロセスがあり不確実です。そして、自分の人生なのに自分の職種を会社が決め、さらに数年経ったらローテーションで職種も変わり、転勤で住む場所も変わりうるという所謂一般的な大企業の人事制度が自分に合わないなと思うようになりました。

そこで、「自分の努力がダイレクトに返ってくる。自分の人生を自分である程度はハンドリングできる実力をつけられる。そんな環境で勝負したい。」と思い、当時流行り始めていたプログラミングを始めることにしました。もともと「ブラッディマンデイ」や「王様達のヴァイキング」といった漫画が好きで、プログラミングできたらカッコイイし、やってみたいけどやり方分からんの状態だったので 「PythonGUIRPGゲームを作ろう」みたいな本からはじめました。


I I )

見る見るプログラミングにハマりました。 自分の書いたコードがそれなりの形になって画面上に表示されることの喜び、理解には時間がかかるものの時間をかけたら何とか動かせたことに「自分の努力がダイレクトに返ってくる体験」を覚えました。もともと営業仕事を終え自宅に帰ってからの時間でやっていて楽しく感じていたので、「これだけコードを書くのが楽しければ、仕事でつまづいても業後の時間を全て割いてでもキャッチアップしたい」「社会人1年目で第2新卒枠として年収を下げてでもチャレンジする最後のチャンス」だと思い、マイナビ転職、リクナビネクスト、greenなどに登録し、未経験OKかつコードを書かせてくれそうなところに片っ端からエントリーしては面接しました。営業職からの異業種転職ということで面接では結構苦労しましたが、最終的に地元のSES企業5社から内定をもらい、金融関係にシステムの受託開発をしているという現職の内定をお受けすることにしました。

ここでの決め手は、金銭面と業務面です。金銭面では、プログラミング未経験でありながら金融機関での経験を買ってもらい当時の給与を少し下がるくらいの水準で給与提示してくれました。(他の4社は実務未経験なので額面月17万からスタートみたいなのが多くコレは生活できんぞ…と思ってました。)業務面では金融関係のドメインを使えるということで「1年でやめてしまうはずの金融の知識を引き続き使えるならちょっとお得だな」と思ったのとコードかけるよと言ってもらったからです。他の数社では、コードを書けるのは案件次第だったり、案件のない隙間の期間で別の非コーディングの案件に入ってもらうという話でした。

利用言語はJava ということでしたが、自分のスキルとして残り、それで勝負できるという働き方ができるならそれでもいいかと納得して4月からその会社に勤めることとなりました。


I I I )

入社してから2ヶ月間は、研修と称し、Java + HTML + CSS + 生JS + MySQL で顧客管理システムを作ったり、使わなくなったPCに ubuntu を入れて自作サーバーを作るなどしてLinux の扱いなどを学ぶ傍ら、金融系の受託案件のコーディングを手伝うなどさせてもらってました。それから9月まで、別な金融機関向けのスマホアプリの案件ということで C# を用いた開発のコーディングを手伝わせてもらってました。残業で次の日の朝に帰るようなこともあり受託開発の厳しさを知るもののコーディングしている満足感から辞めたいとまでは感じませんでした。どちらかというとデスマーチさえも楽しめていたと思います。

一方プライベートでは、このころ Twitter アカウント(かえるるる)が誕生しました。 ツイッターの世界では、自作のWEBアプリを公開し、たくさんのいいねやRTをもらっている先人たちがおり、すごいなと思って見てました。

「わいもバズるアプリ作ってアルファアカウントになるんや!!」と意気込み、Django でその場で聴ける簡単な楽曲投稿サービスを半月ほどで作成しリリースしました。6月くらいだったと思います。これがめちゃくちゃバズ...らず、ユーザー志向のサービスを作るのは難しいなあなどと考えていました。

そんな中、Qiita で顔判別AI を作ろうみたいな記事を見つけ、この技術は面白い、これを応用したらすごいアプリが作れそうだと思いました。 使われていたのは keras でした。

画像は自分で用意しましたが、実装の部分は写経して何とか動くものを作りました。これだとオリジナリティがないので、元ネタはWebアプリとしてリリースしていたものを、LINE-BOT API + Heroku + flask に書き換え、顔判別LINE-BOT 「塩顔しょうゆ顔ソース顔判別ちゃん」通称もこみちLINE-BOTを無事リリースしました。これはなかなかバズって友達登録数39人、200いいね近くいきました。

( https://twitter.com/kaeru_nantoka/status/1041705619705610240 )

ちなみに画像は Google Custom Search API なるものを使って全部で 400枚ほど集めましたが、被りが多く素材集めに大変苦労しました。

実は、この「AI使ったアプリ作り楽しいけど画像集め大変やん...」がきっかけで、無料でビッグデータを使用して機械学習に取り組めるサービスを探し、Kaggle にたどり着いたのです。

Kaggle は titanic, homecredit, サンタンデール、Two sigma, 塩コンペなどのカーネルを見てやり方に慣れていきました。

ド初心者の私でも(今でも駆け出しですが)、XGB というものに入れられるように データを云々して、出てきたデータをさらに云々して、 to_csv すればええんやくらいの理解で写経を中心に取り組んでいたのですが、それでもめちゃくちゃ楽しかったです。よって、業務ではC#をかいて、帰ったらkaggle をやるという今のスタイルに近い形が8-9月で出来上がりました。


I V )

そんなある日社長から言い渡されます。「SEとして東京に行くんやで」 正直えっと思いましたが、今度は Java ということではあるが引き続きコードを書けるということだったし、このころには何人かの kaggler の方をフォローしており東京に行くのも悪くないなと快諾しました。

10月に東京に来てからの業務は、9割方 Excel を使用したものでした。 プロジェクトは引き続き、金融機関向けのアプリの作成業務で、オフショアのコーディングをしてくださる方のために、仕様書を起こしたり、画面のイメージやレイアウトをお伝えするために画面キャプチャをエクセル上で切った貼ったするものばかりでした。 正直騙されたわ。。。と思ったもののこの頃はまだ定時で帰ることができていたので、「とにかく定時で帰れるように頑張って仕事を調整して、一秒でも長く kaggle する時間を確保できるようにしよう」の思いで日々過ごしていました。

一方プライベートでは、 Twitterで繋がった kaggler の方とお話しする機会を設けてもらったり、 PLAsTiCCコンペに夜な夜な取り組んだり、kaggle meetup tokyo に一回でも submit したことのある枠で参加させていただいたり東京に住んでいるメリットをフルパワーで享受していました。

仕事の話に戻ると、12月頃から残業が多くなって来ました。 というのもアプリの画面開発に際して、(自称)アジャイルな開発体制をとっていたのですが、作ってはここを変えてくれ、作ってはここを変えてくれの繰り返しで一向に進展しませんでした。そのように手戻りは多いものの、「営業で使うから」や「役員にプレゼンするから」今日中に仕上げてくれみたいな支持を受けることがままあり、「そういったことがあるなら事前に教えておいてほしいな」などと思いながら残業に甘んじていました。

個別の仕事自体はそれほどしんどくないし、何なら kaggle やっている方が頭をめちゃくちゃ使うくらいの認識だったので残業そのものは何ともありませんでしたが、エクセル仕事、特に VBAマクロのようなコードを書く仕事ではなく何も身に付かない仕事で残業を強いられるのが辛くて堪りませんでした。 また、kaggle をする時間が圧迫されるのも我慢なりませんでした。

このプロジェクトにコーディングをする仕事がないかというとそうでもないですが、新卒社員を中心にコーディングの仕事が割り振られていたようでした。SES社員には特別なスキルのいらない仕事を振っておいて、自社の社員にはきちんとコーディングを教えるというのはとても理にかなっていることだと思います。

こういった事情から、この会社にいてもずっとテイよく一労働力として搾取され続けるんだろうなと思うようになり、転職したいなと思うようになりました。 しかし、社会人二年目にして早くも二社も退職してしまうのは少し気が引けたのと、「どうせ転職するなら kaggler のいるような職場がいいなあ。でもこれといった実績もないなあ。どうしようかなあ。」というような気持ちでした。

この辺りから、kaggle でソロメダルを獲得してそれを実績として捉えてくれるところに転職しようという目標ができました。


V )

転職の動機

上記のような不満も多少なりともありましたが、直接的な動機は kaggle で強くなりたい。という気持ちでした。

わたしの知る範囲内の先輩 kaggler は理系で大学院を出た方、或いは大学に在学中で余暇は関連の技術論文を読み漁っては実装しているなどの数理的な背景、技術のために惜しみなく時間を使っている(時間を使える環境にある)といった印象を受けました。

私も「時間がない」という理由は甘えでしかないと考えており、18:30定時に会社を出られた日は20時から、残業で20時くらいに会社を出ることになったらタクシーを利用するなどして時間と体力を温存しつつ、22時くらいから26~27時くらいまで kaggle に取り組んでいました。

上京してそうした暮らしを2ヶ月ほど続けて、やっとの想いで PLAsTiCCコンペにてソロ銅メダルを獲得(ボーダーから数えて3番目くらい)しました。

銀メダル圏も見えていましたが、最後の最後まで Public LB では届きませんでした。その上 Private LB でのシェイクダウンによりこの成績です。

「ソロメダルを獲得する」という当初の目標は達成できましたが、同時に「こんなに時間を投入してもギリギリ銅メダルなのか」と厳しさを実感しました。

経済学部卒で在学中はプログラミングもまともに勉強したことがなく、論文といえば日本語の歴史系のものを卒業のために何本か読んだことのあるくらいでした。

そんな普通の文系卒の私が、「日中エクセルに画面キャプチャを何時間も貼って過ごして平日業後と土日にちょちょいとキャッチアップする生活を続けて kaggle で勝てるのか?」と考え、日中の時間も機械学習モデリングEDAができる環境に飛び込みたいと考えるようになりました。

転職活動

今回は以下のツールを使用しました。

Twitter

Wantedly

企業フォームからの直接の応募

ヒヨコの方のように、Twitter 転職でかっこよく決めたかったのですが、今回は Wantedly で転職予定の会社と出会いました。

有名どころのWeb企業の機械学習エンジニア職には直接企業の応募フォームからエントリーしましたが、こちらで応募した会社はことごとく書類落ちしました。

両ツールを通してたくさんの方と面談させていたくことができたのでとても勉強になりました。

転職活動の軸

kaggler と働きたいな~職場の人とチーム組んでコンペに参加したいな~などと思ってましたが、最終的には

「業務で得た知見を kaggle で活かす、kaggle で得た知見を業務で活かす」

のサイクルを確立した働き方がしたい

という想いに賛同頂ける会社

の一本に落ち着きました。

現場社員の方との面談や技術面談、CTOの方との面談で上記の話は必ずしました。

この話をして「うちならできるよ」や「うちでやってる人いるよ」などの返答が返ってくる場合は、既に kaggler が活躍されているなどで kaggler に対する理解があるかつ kaggler が満足して働ける環境がある会社ということなので、「ぜひ今すぐに私も混ぜてください~」という気持ちになってました。

持論ですが、kaggler が満足して働けている会社はいい会社です。

職務経歴書

職務経歴書を書き始めました。

そこには、

1年で新卒で入った証券営業職を辞め、転職先のSES企業でコーディング半年(しかもC#)、最後の数ヶ月に至ってはエクセル職人(それっぽく書くと、オフショアのプログラマの方々への作業依頼書の作成含むのディレクション業務 になりました。)

の悲惨な業務経験の2年目社会人がいました。

「こんなんで機械学習エンジニアになりたいとかどうかしてるぞ…?てか社会人2年目で2社目を辞めようとしてるのか私は…?これサラリーマン向いてないんじゃ…」 ととても悩みました。

kaggleソロ銅メダル、これを評価してくれる会社があればいいなとダメ元で進むことにしました。

最終的には、独学短期間でkaggleソロ銅メダルを評価していただいたことが内定獲得に大いに貢献してくれました。

内定を受諾した決め手

内定は今回お世話になる1社のみですが、数社選考の途中で辞退させていただきました。いずれの会社も面接で私がやりたいことに対してとても関心を示してくださり、魅力的で自分が三人くらいに分身できたら全部の会社の選考を最後まで受けたかったです。

決め手は、自社サービスを運営している点とNLP技術に特化している点でした。 先にも述べた通り、私はこの世界で生きていくことを考えたときにあまりにも背景が弱いです。よってこれからこの分野は自信を持って得意と言えるぞ、というものが欲しかったのです。NLP は前処理も多岐にわたり学習済みのモデルも日進月歩で進歩しています。また、使用技術がNNなのも魅力的でした。昨今の kaggle ではテーブルデータについてもNNを使用してモデルを作り、アンサンブルすることで上位に食い込んでいるチームが多いです。よって、業務でNNに取り組める環境は私の kaggle で強くなりたいという目標の実現を加速させるものだと思いました。 自社サービスである点については、単純に前職が、受託開発とSESだったので、一回自分の会社のプロダクトを成長させるために注力してみたい気持ちがあったからです。

転職活動を終えて思うこと

今回の転職活動において、kaggle ソロ銅メダルはとても大きな仕事をしてくれました。

コンペ途中に、最終的に銀メダルを獲得するチームとチームマージさせていただけるかもしれない機運があったのですが、「ソロ」の実績が欲しかったこともあり、お断りしてしまいました。kaggle master になるには、金一枚と銀二枚以上のメダルが必要ということもあり、勿体無いことしたなあと思ったこともありますが、今ではあの決断は間違ってなかったなあとも思います。

なにはともあれ、4月から昼も夜も機械学習に塗れた生活を送れるということで楽しみで仕方ありません。

これからげきつよkaggler になれるよう精進していく所存ですので、どうぞよろしくお願いします。


V I )

SIer勤務kaggler として辛かったこと

日中kaggleに全く関係のないことで時間が削れていくつらみもありましたが、最もつらかったのは「話題がない」ことでした。

上京し kaggle meetup や コンペの反省会を通じて知り合った方々との勉強会に参加させていただく機会がチラホラ増えてきたのですが、その勉強会後の飲み会での話題にとても困りました。

勉強会に参加されてる方同士の会話では「(さまざまな業界で分析業務に従事されてる方々が)実務においてどのように技術を活用しているか」や「コンペで使われてたあの手法について」などが主で、私を含めてそう言った会話をしに(聞きに)来ているという認識でした。

したがって私の「エクセルに画面キャプチャを貼っている愚痴」のような話題でみなさんの貴重な時間を奪うのは誰も幸せにならないと思い、聴講マシーンになってました。

実はここで見聞きしたことは、面接や面談で大いに活きました。というのも「実際に分析業務に携わっている方の関心」「kaggle と実務でのデータやモデルの扱いの違い」について業務未経験ながら背景知識やその業務に従事することのイメージを持つことができ、質問したい内容が自然出てきたり、自分がその御社で働くことになったとしたらどういうような働き方をしそうかのようなところのすり合わせがスムーズにできたように実感しています。


以上です、ありがとうございました。

【追記】 一部日本語の使い方に誤りがある点をご指摘いただきましたので訂正致しました。 ご指摘くださった皆様、どうもありがとうございました。