メインフレーム5年の経験しかない金融系SEがiOSエンジニアとして転職した話
※元々2019/4にQiitaに書いたものをnoteに移して、更に個人ブログに移植しました。
方針
全体的に、ポジティブなエピソードの場合は企業名を書き、ネガティブなエピソードについては企業名を伏せる方針にしたいと思います。ポジティブなエピソードでも、選考情報を漏らされるのは困るということでしたら、ご指摘頂ければ記載を削除するなり対応します。
誰に向けた記事なのか
後述しますが、僕自身は新卒から5年間、メインフレームのアプリ基盤の運用をやっていました。めちゃくちゃニッチ分野だったので、「IT業界は転職しやすい」という一般論とはかけ離れた、かなりしんどい転職活動になりました。
当初はメインフレームやってたからこんな苦しむんだと思っていましたが、転職活動で色々情報収集していくうちに、気づきました。メインフレーム以外でも、ニッチ分野で経験積んだ技術者のキャリアチェンジ的な転職は厳しい。具体的に書くと、下記みたいな人たちですね。
- SESでまともな仕事ができていない(待機とか、現場変更が激しいとか)
- テスターしか経験がない組み込み系しかない
- 低スキル(とりあえず動けばいいで回っている現場)
- SAPのABBA
- Salesforce
- あと内製品全般
このあたりに行ってしまうと、同じ技術領域から行くんだったらいいですが、モダンなWeb開発とか、モバイル開発とかに転職したい! と思っても、なかなか厳しいと思います。正直景気がいいとか悪いとか、あまり関係なく、めちゃくちゃ大変になると思います。
ただ、大変ではあるものの、不可能ではけしてないです。この記事は、会社の都合でニッチ技術に行ってしまったが、本当にやりたい技術領域にキャリアチェンジしたい人たちの助けになればいいなと思って書きます。
長文になると思われるので、必要に応じて、興味のない見出しがついている箇所は飛ばして読むことを推奨します。
僕のスペック/業務経験
20代後半の文系学部卒です。情報処理の高度資格は2つとってます。新卒で、金融系のシステム会社に入りました。IBM系メインフレームのアプリ基盤を運用保守する部署に5年間いました。よくネット上ではCOBOLがDisられていますが、僕の担当しているメイン言語はアセンブラでした。これを言うと、面接官とかからはバカにされましたが、僕的には低レイヤの動きがわかるようになったので、COBOLよりはよかったかなと思っています。
これだけの情報だと、めちゃくちゃヤバい会社居た奴みたいな印象持たれるかもしれませんが、僕が担当しているシステムが特殊だっただけで、他のシステムは普通にバージョンが固定されたJavaで書かれたコードが、Subversionで管理されているモダンなシステム[^1]もちゃんとありました。ただそういうシステムやってる部署がやってる仕事って、協力会社やオフショアのマネジメントをすることであって、コーディングはしない世界観でした。僕のいた部署は、レガシー過ぎて他社に発注するのも厳しい状態だったので、社内の有識者がなんとかメンテナンスしていました。 アセンブラとはいえ、自分で手動かして書く機会が得られた部署ですし、かつ先輩・上司は手厚く指導してくれる環境があったので、現職の会社には普通に感謝しています。給料もかなりもらえましたし、いい会社だったと思います。
なぜ転職しようと思ったか
理由はたくさんあるんですが、メインどころは下記5点くらいでしょうか。
- 新規開発がない
- OSSが使えず、色々非効率
- イマイチな人材がいても淘汰されない(競争がない)
- メインフレーム以外の部署に異動してもよかったが、そうするとマネジメント中心になる
- そもそもSIビジネスが無理
丸3年働いたあたりで転職は頭をよぎったのですが、そのときはちょうど今の部署で仕事できるようになってきて、ドンピシャのやりたい仕事ではないけれど、上手くいってるならそれでいいじゃん、と思っていました。あと履歴書書いて面接行くという行動自体をもう二度としたくなかったというのもありました。
5年目の1年間がめちゃくちゃ案件が多かったのですが、自分の人生について真剣に考えた結果、今動くしかないなと思いました。
転職の軸
まず転職をする前に、ゼロベースで自分のやりたい仕事のイメージを言語化してみました。トータルでは5時間くらいかかっていると思います。最初は思いつくままにぐちゃぐちゃ書いて、後から整理して、矛盾している箇所は矛盾したままでもいい、くらいの本音ベースの内容です。その結果を一言で書くと、「今ぐらいの給料でiOSエンジニアになりたい」ということになります。もちろん面接ではもうちょっともっともらしい理由を述べないといけませんでしたが、自分の中で「転職で最低限これを叶えたい!」というのは、なるべく短い、明文化された文章で持っておくと、迷いが生じたときの判断基準になってよいかと思います。選考を進めるうちに、考えが変わったら、都度都度アップデートしていけばいい訳ですし。
なぜiOSエンジニアだったか
もともと僕の中にあったエンジニアのイメージは、「自分の頭の中にあるアイディアを形にできる」「バックエンドでもフロントエンドでも一通りできて、どのレイヤーで問題が起きてもすばやく対応できる」という感じでした。バックエンドからフロントまで広く見れるようになりたい、と思っていて、むしろ興味あったのはフロント側でした。5年でやっていたのがインフラだったので、フロント寄りに行きたい、というのがまず第一にありました。その中でiOSアプリにしぼったのは、単純にAppleの思想が好きだったからです。Steve Jobsの伝記も全部読みました。アートとかデザインとかテクノロジーとか、そういう枠をとっぱらって、ユーザーが直感的に使いやすく、美しい製品を作るAppleが好きです。せっかく思い切って飛び出すんだったら、なるべくやりたいことに近づけたいと思いました。 iOSアプリしか絶対やりたくない! というわけではなく、チーム事情として必要だったら、他の技術習得してもいいと思っているタイプです。(なので、5年間アセンブラ平気でやった訳です)また、40前後になったらマネジメント的な地位に行ってもいいかとも考えています。 ……というのが本音なのですが、この辺を話すと、面接官の受けはあまりよくなかったです。この文章を読んでいる方も、「それならSEやり続けてもいいんじゃない?」と思うかもしれません。SEやPMという仕事が、新卒採用でうたっているような、「IT技術のしっかりした知識があり、それをベースとしてマネジメントして、システム開発する仕事」であればよかったのですが、実際現場行ってみるとわかると思うのですが、「良いシステムをつくる仕事」というよりは、「システムを商品として扱うサラリーマン」に近いと感じました。僕のキャリア像としては、もっと技術力をつけて、スピード感がある新規開発にもついていけるくらいになってから、マネージャーになるか、一生エンジニアでやっていくかを選ぶ、というイメージでした。SIerでも「技術力が大事」と口では言うものの、技術力が評価される制度・文化はありませんでした。 SEやりながら、業務外で勉強してキャッチアップしていく、というのも一つの選択肢だと思うのですが、3〜5年目の頃そういう風に勉強していたのですが、業務で使わない知識の伸びは悪いです。この辺は「SIer特有の「仕事頑張っても技術力伸びない問題」」として後述します。 iOSにしぼるという選択については、僕の志向的には正しかったですが、転職活動戦略としては失敗だったと思います。この辺についても後述します。
若手でメインフレームをやることについて
ネットだと木村岳史さんとかCOBOLへのDisが定期的に盛り上がりますが、金融系システムの現場にいた感覚としては、メインフレームがなくなることは当分ないと思っています。 というのは、日本の大手金融機関のビジネスモデルが全く変わっていないからです。僕は金融機関しか知りませんが、電気ガス水道などのインフラ事業も同じだと思います。「ビジネスのスピード感に基幹系システムが足枷になっている」というのはよく言われる指摘で、その通りだとは思うのですが、スピード感のあるようなシステムを作る際は、基幹系システムに手を加えるというか、Webシステムとして開発して、マスタデータの連携だけメインフレームと通信するという風なアーキテクチャにしているのが現実なので、言うほど致命的な足枷になってない印象が。メインフレーム上のレガシーシステムをLinuxで置き換えても、我々エンジニアサイドは嬉しいですが、ビジネスサイドは新規システム開発のリスクを上回るようなメリットを得られない気もしています。 あと大手企業がほとんどシステムリスクをとろうとしないというのは大きいかと。みずほ銀行のように、何か大規模なシステム障害を起こして、基幹系システム刷新を決断する経営陣はいますが、基本的に安定稼働していれば、いくらメインフレーム上のレガシーシステムでも、ビジネス要件を満たしている以上、変えたいとは思っていても、変えられない会社が多いのではないかと。少なくとも僕がいた会社はそうでした。 で、若手のキャリアとして、そういうシステムの後継者になることですが、技術者としてはアレですが、サラリーマンの選択としてみると悪くないのではないかというのが僕の考えです。技術的な面では、枯れた技術で、新規開発はほとんどなく運用保守中心、開発ツールも貧弱で面白いことはないでしょうが、ただメインフレームわかる人材は分母が少なく、またやりたがる人が全然いないので、最新技術やりたいみたいな志向がないのであれば、競争が少なくて、いわゆるブルーオーシャン状態になっている状況です。 2003年の日経コンピュータに、「5年後,メインフレームはなくなる」という記事が掲載されました。こちらの記事によれば2008年にはなくなっていたみたいなんですが、2019年現在も、メインフレームはバリバリ本番稼働しています。もちろん日本のIT技術の未来にとっては、悪いことだと個人的には思っていますが、短くてもあと10年はこんな状況が続くとも思っています。逆に2003年頃に「これからはオープン系の時代や!」と転職して、JSPとかi-mode開発とかに行っちゃった人は、そっちが消えちゃった形になるので、「今後消えないような技術領域行きたい」というモチベーションであれば、皮肉なことですね。 メインフレーム使い続けてる会社って、歴史がある大企業なので、「安定した大手企業で働きたい! 仕事内容はなんでもいいです!」と思うのであれば、競争は少ないし、給料も悪くなく、運用中心なので残業時間も安定しており、会社からも重宝されるでしょうし、そんなに悪い選択肢じゃないと思っています。 本当は日立・富士通・ユニシスなどの国産メインフレームの闇とかそういう話もあるんですが、メインフレームの今後みたいな話は本論ではないので、こんなものにしておきます。
転職活動について
前置きが長くなりましたが、ようやく転職活動について書きます。 全体としては、2社のエージェント(リクルート/レバテック)、2社の転職サイト(paiza/Green)を使いました。メインで使っていたのはリクルートエージェントで、結果的には内定もらった会社もそこ経由になりました。あとLinkedIn経由でも転職意思をオープンにしたら、結構リクルートを受けました。電話でエージェントと2名ほど接触しましたが、僕のスキルだとイマイチでした。Wantedlyも登録してみましたが、ちょっとキラキラしすぎていて、文化が合わなかったです。 結果、79社に応募して、1社内定をいただきました。WEB系ではないですが、iOSアプリを自社開発している企業のiOSエンジニアです。活動期間は約4ヶ月です。 時系列で書きます。
1月
- 12月頃にはもう転職しようと決意。iOSアプリでTikTokみたいな動画アプリを作って、それをポートフォリオ[^2]として持っていこうと考えて、Swiftの勉強をはじめました。 ポートフォリオ・勉強については後述します。
- 正月休みがあけてすぐにリクルートキャリアに転職相談に行きました。転職エージェントについては賛否両論あると思いますが、転職相談に行くこと自体は無料なので、とりあえず行ってみるのがいいと思います。ネットの話聞く限りだと、突然罵倒してくるエージェントや全然動いてくれないエージェントもいるとのことでしたが、僕の担当してくれた方はレスポンスが早く、僕の志向をちゃんと聞いてくれる方だったのでよかったです。
- この時点ではポートフォリオはコードを書き始めたくらいの段階。そもそも職務経歴書にはGithubのURL載せていなかった。
- 10社ほど申し込み、3社一次面接まで行くも、突破できず。
- このときはオープンポディションで申し込んだ会社が2社あった。面接で話していて、バックエンドをやらされるのは嫌だな、と感じたので、iOSエンジニアでの応募に絞る方針にしました。採用企業から見たら、どのみちバックエンドでも未経験業務には変わりないので、採用される確率がすごい上がるということも特にはない、であれば自分のやりたいことに絞った方がいい、という判断をしました。
2月
- ポートフォリオがないのは厳しかったので、当初作りたかったアプリの機能を絞り込んで開発。ユーザーの会員登録、動画投稿機能をすっ飛ばして、動画ビューワ部分だけを作る。とりあえず動くものを作って、Github上で公開。職務経歴書にQiitaとGithubのURLを載せる。
- その状態で20社ほど応募。すべてiOSエンジニア。いわゆるWeb系自社開発の企業中心。面接まで行ったのは1社だけ。
- 3社でコーディング面接を経験しました。仕事もそれなりに忙しかったので、残業40時間(休日出社もあり)くらいしながら、深夜3時くらいまでガリガリコーディングして、3時間だけ寝てまた翌日出社する、みたいな日もありました。なんとか課題提出したんですが、結局3社とも面接まではいけませんでした。この辺は「技術面接をやってくれる会社のよさ」で後述します。
- 面接行った1社は一次面接通りました。後から考えると、相手は人事の人だったので、あまり技術力とかちゃんと見られてなかった気がします。高度資格持っていることとか誉められましたが、僕的にはそこを誉められてもな……という気持ちでした。
3月
- 20社くらい新たに応募しました。ここで応募した中に、内定した会社も入っていました。もともと転職エージェントと話していたときは、「1〜2月で面接して、3月は有給消化期間ですかね」みたいな話だったので、3月入った時点で長期戦になってる実感がありました。「あ、もしかしてこれ転職厳しいんじゃないか」という不安もこの頃から大きくなってきました。エンジニアなら誰でも知っているWeb系企業みたいなところは僕のスキルだと厳しいことはわかったので、 もうちょっと広げて、非IT業界でも自社開発している会社や、ITコンサルの開発部門なんかも応募しました。 それでもiOSエンジニアで採用されるところ中心で受けました。
- 2月に面接通った会社の二次面接に行って、iOSチームのマネージャみたいな人が出てくる。こちらの会社、あまり入りたくなかったので、面接日を遅らせていたのと、モチベーション下がりすぎて、面接の回答もイマイチでした。 「キャリアプランは?」「将来のキャリアは予想してもムダだと思っているので、直近2〜3年でやりたいことをやって、また3年後のタイミングで考えていきたいと思っています」みたいな回答をしたんですが、 あんまりハマってなかったみたいです。 とりあえずポートフォリオ見ようか、となったのですが、その日油断してMacbook持っていかなかったので、 シミュレータで動かしてみせることができず、仕方なく面接官のPCでGithubを開いて頂いて、それでコード面接となりました。 「機能が少なすぎる……」と言った後、3分くらい無言でコード眺めた後、面接は終了になりました。
- そんな辛い経験もあり、「技術志向なのに、技術力低い……」という問題にあらためて直面し、悩みました。リクルートのエージェントの人は、職務経歴書の書き方は教えてくれるものの、コードレベルまでのアドバイスはもらえませんでした。レバテックは、コードまで見てくれると聞いたので、面接と並行して、相談に行きました。レバテックキャリアについては後述しますが、このときの面談でキャリアプランが整理できた翌日に、内定出た会社の一次面接があり、かなりの高評価でした。その他の会社についても、面接の手応えがよくなりました。ポートフォリオ自体は変えなかったのですが、きちんとキャリアを整理して説明できるだけでも、面接の通過率は全然違いました。
4月
- 内定もらった会社の二次面接、最終面接がありました。二次面接ではポートフォリオを実際にシミュレータで動かすところを、向こうの役員の方の前でデモしました。コーディングレベルまでは踏み込みませんでした。「好きなiOSアプリなに?」という質問を受けて、それで話が盛り上がりました。
- 最終面接が4月最終週だったので、並行して何社か面接しました。1社は最終面接まで行き、もう1社はコーディング課題があって、二次面接しました。
- 嬉しかったのは、はじめてコーディング課題が通ったことですね。
- 最終面接の翌日に内定通知が来て、希望は満たしていたので、その翌日に上席に退職意思を伝えました。そんなに揉めることもなく、すんなり退職認めてもらいましたが、今までお世話になった人だったので、心苦しさはありました。
- 以上が転職活動の全体です。以下、個別のテーマで書きます。
ポートフォリオ作成の注意点
ご存知の方も多いとは思いますが、「完全SIer脱出マニュアル」というSIからWeb企業に行くためのバイブルがあります。内容的にはもうネット上のSI→Webの転職記事で皆やっていることなので、目新しさはないですが、僕は一応買いました。BtoBでシステム開発している人で、仕事で書いたソースコードを見せることはできないと思います。なので、エンジニア転職する際に、自分の技術力を客観的に見せられないという問題が発生します。(BtoCでも同じかもしれませんが、プロダクトを相手に見せられるので、話の通じやすさはだいぶ違うと思われます) 手を動かすエンジニアとして転職したいんであれば、ポートフォリオの作成は必須だと思いました。「勉強してます!」だけだと、現状その人がどのぐらいのレベルなのかが把握できないですし、何も勉強してない人と区別ができないことになります。 Qiitaとか見てる人で、エンジニア転職しようとなれば、当然のようにポートフォリオくらいは作ると思うので、そこは大丈夫だと思うのですが、問題はどのぐらいのレベルの成果物を作るかですね。履歴書にGithubのURLがある=書類通過! とはなりません。スクールの課題で作ったアプリとか、何かの本のサンプルを写経したものとか、そういう成果物だけだと、むしろ載せない方がマシだと思われます。。。Githubを載せただけではプラス評価にはならず、むしろ内容次第では普通にマイナスになります。
私が書類選考した、直近20件のGitHub記載済み履歴書の通過率です。 | 合否 | 人数 | 備考 | | ◎ | 2 | 通過:ソースコード内容が素晴らしい | | ○ | 2 | 通過:コード及第点で加減点無し。他職務経歴が◎ | | ✖ | 16 | 不通過:ソースコードの内容が酷い&その他 GitHubアカウントを履歴書に載せる時の3大注意点【エンジニア転職】
とはいえ完璧なポートフォリオ作成に時間かけていると、転職までの時期が伸びてしまって、転職の決意自体が消滅するという可能性もあります。(実際そういう人多いんじゃないでしょうか?)どう作業時間を確保するかは、悩みどころだと思います。今の仕事を辞めてしまうのも一つの手段だとは思いますが、そうすると生活の余裕がなくなるので、個人的にはあまりオススメしません。 僕の場合、短期集中にしないと集中力が持続しないタイプなので、1月末から一週間ほど平日も土日も空き時間は全部ポートフォリオの開発にあてて、動画ビューワ部分を作りました。本気で「とりあえず動くレベル」の成果物です。
(現在プライベートリポジトリ化)
いろいろ未熟で見せるのが恥ずかしいレベルなのですが、恥ずかしくないレベルまで引き上げるのに現職をやりながらだと半年はかかると判断しました。このレベルの成果物なので、書類通過するか不通過の間だと思います。 正直転職して、業務時間をiOSアプリの知識習得時間にできれば、もっと早くレベル上げられるので、ポートフォリオのための勉強に時間を費やすよりも、上手いこと開発現場に潜り込んで、周りからボコボコにされながら伸びていく方が成長は早いと思っています。 もともとはTiktokのペッド向け版のサービスを作りたいと思っていて、動画投稿機能はつくれず、静的にAWSのEC2上にある動画データを再生する動画ビューワのみで戦いました。(PenguinMovieというサービス自体は真剣に作りたいので、有給消化期間中にとりかかりたい)スワイプすると次の動画に行く、という動きは実装できたので、実際に動いているところを見ると結構映えます。今のバージョンはMVCにフォルダわけしてますが、コード見てもらえるとわかるんですが、実際はViewControllerに全部コードがあって、アーキテクチャを導入できていません。 AWSのEC2をnode.js + ExpressでRESTfulなAPIサーバとして作りたかったんですが、GETしか作れなかったです。開発していて、動画投稿するためには、サーバサイドの作り込みがかなり必要で、肝心のiOSアプリの勉強に時間が割けなくなるのに気づいたので、思い切って動画投稿機能は捨てました。Redmineを使ってタスク管理していたのですが、そちらを見直してみると、トータルの開発時間は50時間程度でした。
こちらのYoutube動画では、未経験者がポートフォリオ作成する作業時間の目安としては150〜200時間とあり、僕がポートフォリオ作成にかけた時間はそもそもちょっと短すぎました。もっと計画的に転職される人は、ポートフォリオ作成までに半年かけたりしています。選考中に感じた、iOSエンジニアのポートフォリオで何を見られるかとかは、「技術面接をやってくれる会社のよさ」で書きますが、とりあえず動くレベルのアプリ見せても、基本的にはあまりいい評価は得られなかったです。ただこのレベルのアウトプットでも、79社受けたら、拾ってくれる会社はありました。 とりあえず動くものをつくる上で、下記のサイトがすごく参考になりました。
ポートフォリオを作成する作業は、今後自分が転職した後にやる仕事そのものなので、その作業する中で自分のその仕事への適性もわかると思います。僕は深夜3時くらいまで作業してましたが、仮に次の転職先で同じくらい働かされても、「あ、これなら別にいけるな」と思いました。そのぐらいアプリ開発は楽しいです。ちなみにそのときに苦しんだことが下記なので、興味があれば読んでください。
SIer特有の「仕事頑張っても技術力伸びない問題」
ポートフォリオ作ってるときに特に感じたのですが、SIerいるとガリガリコーディングする機会があまりありません。僕のいた部署は、社内を見渡すと、まだコーディングが多い部署とされていましたが、ちゃんとした開発をするのは年に2〜3案件あればいい方でした。多くの時間は会議をしたり、Excelで管理資料を作ったりといった作業でした。僕は年次が上がってそれなりに役割が上がっていたので、稟議まわしたり、説明資料つくったりする作業がありましたが、1〜2年目のときはちょっとJCL変えて、それを手動でひたすらテストして、Excelにエビデンススクショとって……みたいな作業をしていました。 これがSIの「仕事頑張っても技術力伸びない問題」です。ここから抜け出すために、自分で勉強したりするんですが、業務中もコード書いてる奴らと、本業が別にあって、その合間でコード書いてる奴(しかも社会人になってからプログラミングはじめた)だと、どう考えても勝ち目がないですよね。 転職活動はじめたてのときは、とにかくメインフレームしか経験がないのが嫌だと思っていましたが、本質はそこではなくて、運用中心のSIで、あまり手を動かせていないという方が、僕の目指すキャリアと実際の仕事内容のギャップでした。ただ技術力高めたいという志向があるのに、目の前でやっている仕事で技術力がつかないというのはしんどいです。さらに、技術力がつくような会社に転職しようとしても、仕事でスキルが十分身につけられてない以上、厳しい戦いになります。 この「技術力あげるために転職したいのに、今の仕事だと技術力が高められない」という技術力のジレンマが、転職のとき結構しんどかったです。面接用のセールストークだけではなく、本音で「仕事で使うようになれば、確実に技術力伸ばせるのに……勉強しまくるのに……」と思っているSEって、僕も含めて結構多いんじゃないでしょうか? やる気だけで採用してくれる会社はたぶんSESとか探せば存在するかもしれませんが、しっかりした技術力があるIT企業に入りたければ、業務外で勉強して、アウトプット出すしかないです。技術力高い会社であればあるほど、転職者に求める要求水準が高くなります。名の知れたWeb系ベンチャーだと、いくらポートフォリオ磨いても、ちょっと厳しいんじゃないかな、というのが実感です。
勉強方法について
SwiftとかiOSアプリとかの勉強方法について書きます。面接でも「どうやって勉強してるの?」というのは聞かれるので、まとめといた方がいいです。
本
基本的には本を中心に勉強しました。下記ですね。
転職活動中に3回くらい読んでます。iOSエンジニアとして知らなければならないSwiftの知識はほぼ網羅されているのかな、という本です。むしろまだ内容を全部吸収しきれていないです。 本読んでサンプルコード写経する勉強方法もあるみたいですが、個人的には写経ってあまり意味がないと思っています。
コードを書く
2018年の年末年始でSwift実践入門を読んで、ポートフォリオ作ろうとしたのですが、全然書けなかったので、paizaをSwiftで解くことにしました。するするとBランクまで行きましたが、S/Aランク問題は解けませんでした。(今見たら、1/14にBランク行ったあと、ずっと停滞しているみたいです) 別にpaizaじゃなくてもよかったのですが、SIで働いているととにかく手を動かせないので、この辺のオンラインのプログラミング課題みたいなので補充するとよかったです。ただ面接のアピールにはならないので、よほどすごい成績じゃないなら、話さなくていいでしょう。(業務で求められている保守性の高いコードと、競技プログラミングで求められるコードはだいぶ差があるので、あまり競プロの話ばかりすると、きれいなコード書けない疑いがかけられる気がします)
技術面接
選考を勉強方法として書くのは変ですが、実際技術面接の中で成長していくことができました。自分で勉強していると、どうしても自分が理解できた枠、過去使ったことがある枠で勝負しがちで、勉強が進んでいくにつれて、少しずつ枠を広げていく感じになります。技術面接では、企業が指定した課題があるので、その枠を強制的に広げる必要があります。 具体的に書きたいと思います。
技術面接をやってくれる会社のよさ
技術志向があるなら、技術面接をやる会社に応募すべきです。僕の今のスキルがゴミなので通過しませんでしたが、落とされても得るものはあります。僕が受けた会社の中では、
- Cookpad
- ゆめみ
- エムスリー
- LINE
- and factory
(敬称略) という5社で技術面接を経験しました。詳細は伏せますが、エムスリー・LINEについては時間制限のあるコーディングテストでした。Cookpad、ゆめみ、and factoryは、実際にアプリを作る課題でした。時系列としては、Cookpad→ゆめみ→and factoryの順で対応しました。Cookpad、ゆめみについてはとりあえず動くレベル(課題の要件は満たす)のアプリを提出しました。もちろん僕ができる最大限にきれいなコードは書きましたが、何をどうすればきれいかというのもよくわかっていない状態だったので、今見るとホントに動くだけのコードです。ゆめみからは再提出の依頼が来て、「評価ポイントはここなので、ここに注意して作り直してね」と言われました。それが下記です。
【評価ポイント】 ## 見るポイント - サーバ通信周りの処理 - 非同期処理 - 責務の切り分け(1VCだけで完結しません) - 画面の作り方(Auto Layoutなら制約のつけ方が正しいかどうか、コードレイアウトなら処理の書き方がレイアウトサイクルに沿ってるかどうか、など) - ソースコードの読みやすさ ## 高評価ポイント - (デザイン案がないにも関わらず)見た目のおしゃれさ - gitのコミットやブランチの切り方 - 何かしらのアプリ設計(MVC/MVVM/VIPERなど)が正しく使われている ## 超高評価ポイント - (デザイン案がないにも関わらず)UIとしての使いやすさ
gitのコミットやブランチの切り方」「何かしらのアプリ設計(MVC/MVVM/VIPERなど)が正しく使われている」「(デザイン案がないにも関わらず)UIとしての使いやすさ」というのを意識して再提出しましたが、今思うと全然MVCになっていなかったので、通過には至らず。
and factory社は4月の面接で、僕のiOSスキルも結構上がっていたので、MVVMで正しく設計することができて、課題は通過しました。ただ今の内定先の最終面接が決まっていて、その後のフィードバック面接で、採用というよりはもう完全に自分の勉強として質問しまくったので、それで「もうちょっと自走できる人じゃないと採用は厳しい」という評価になり、落とされました。ただ転職活動の序盤の会話を考えると、だいぶiOSエンジニアとしての知識が身についてきて、会話になったな、という感じでした。(向こうから見ると、「こいつこんなことも知らないのか……」と思ったかもしれません)
三社ともお題は当然全然違ったのですが、共通点は下記でした。
- API通信が必要
- API通信に絡んで非同期処理が必要
- 何らかのアーキテクチャが使われている(課題の文になくても)
アーキテクチャを使っていないアプリは、めちゃくちゃ汚い字で書かれた手書き履歴書くらいに見られると思った方がいいかもです。
使った転職サービス
どの転職サービスを使うかは悩むと思います。僕は転職エージェントを使いましたが、理由としては
- はじめての転職で勝手がわからなかった
- 新卒の就活でも一人で悩むことが多かったので、客観的な意見が欲しかった
という感じです。 転職エージェントは全然自分の志望していない業界にねじこんでくるという話も聞いたことがありますが、僕はそんな経験はなかったです。ある程度の経験がある人は、もう転職サイトに自分で応募するなり、直接応募するなり、リファラル使うなりがいいと思うんですが、最初の転職のスタートとしてエージェントのキャリア相談サービスを使うのがいいと思いました。自分に合わないと思ったら、その後無視すればいいと思いますし。 以下、各社の印象です。
リクルートキャリア
エージェントの方がとにかくよかったです。求人数がとにかく多かったです。ただ日系大手企業が中心で、IT業界にはあまり強くないかな……と思いました。メガベンチャーだと結構求人載せてましたが、そもそもリクルートキャリアに出てない優良ITベンチャーは結構いました。 会社の同期は、ここのエージェントは全然動いてくれなかったと言っていたので、当たり外れはあると思われます。一つの業界に特化しているわけではないので、たとえば「ポートフォリオ見てください!」みたいなレベルまで求めるのは無理でした。
レバテックキャリア
ポートフォリオまで見てくれる、とネットで見て、2社目のエージェントを使うことに。どちらかというと企業紹介よりも、ポートフォリオを見て欲しかったので面談に行ったのですが、担当した人が営業寄りの人だったので、コードは見てもらえず、かわりにキャリアプランについてかなり掘り下げてくれました。「客先常駐の会社に押し込もうとしてくる」みたいな話も聞いたことがありますが、確かにその色は少しありました。僕が紹介してもらった会社も自社開発6割、客先常駐4割みたいな感じだった気がします。ただ僕のスキルだと実際問題自社開発企業は厳しい戦いだったので、不満もなかったです。 掘り下げた結果、「なぜ今の会社に入ったのか?」「会社で何をしてきたのか?」「これから何をしたいのか?」というのが整理できて、iOSエンジニアへの転職希望が、相手に納得感をもって伝えられるようになったと思います。 新卒のときはSEだけでなく色んな会社受けていて、志望理由を禅問答みたいに掘り下げ合う不毛な会話をした経験が嫌すぎて、エンジニア転職だとそういうの要らないと思って軽視していましたが、技術力が十分じゃない以上、ポテンシャル採用になるので、ポテンシャル採用される人間がキャリアプラン説明できないのはやっぱ辛いみたいです。何か即戦力レベルの技術があるような強いエンジニアだったら、別に問題ないかもしれませんが、業務未経験のよわいエンジニアは、ポートフォリオの充実と合わせて、
- 事業への共感はあるか
- どういうキャリアプランを描いているか
- 将来マネジメントに行ってもよいか/一生エンジニア志向か
あたりはしっかり固めておきましょう。ここは企業が求めている回答というよりかは、自分がマジで何をやりたいかを整理したほうがいいと思います。
paiza
コーディング結果で選考が進むのはいいサービスなんですが、ちょっと求人出してる企業が少ないかなと思いました。paizaでSランクとるよりかは、まともな会社で1年業務経験積んだ方が圧倒的に評価される文化はあると思うので、未経験の方はあまり「プログラミングスキルだけで採用!」という文句に期待しないほうがいいと思います……
Green
エンジニア転職するんであれば、こことWantedlyが鉄板という印象がありますが、実際いい企業の求人が多いです。ただ僕みたいに、SIからの転職しようとしている人間は、アピールポイントがなくて、使いづらかったです。
やってよかったこと
転職をするにあたり、技術ブログを作ろうと思って、どうせブログにしても読んでもらえないんで、じゃあQiitaに書こうと思い、書き始めました。転職した時点で14個ほど記事を書きました。 「転職活動のアピールのためにQiita書いてるみたいで、あざといし、こんな付け焼き刃でなにか書いても、対して評価にはならないんじゃないかな……」というネガティブな気持ちも最初ありましたが、最悪ただの勉強ノートとして使えばいいと割り切って、記事を投下しました。意外とメモ書きみたいな記事でも、いいねをもらえたりして、モチベーションが上がりました。 初学者の差別化としては、技術ブログの作成はかなりアリです。エンジニアとしては、言葉よりコードで語る美学みたいなのあると思いますが、勉強した内容をアウトプットできているのは結構評価されました。少なくとも面接まで呼んで頂いた会社は、Qiitaの内容について好反応でした。いいね数がどうとか、内容の専門性がどうとかは置いておいて、採用担当としては、今後の伸びしろを測る材料になったのかと思っています。
モダンなWeb系に行くなら何を学ぶのがよいか?
今はなぜかQiitaでマルチ商法と戦う人になってしまいましたが、勝又健太さんの初期の動画は結構見て、転職のモチベーションを上げていました。勝又さんの戦略に従うなら、モダンなWeb系自社開発に行くためには、Ruby on Railsから入って、社内で上手いこと他の言語にシフトしていくといい、という道になります。 僕も途中でiOSエンジニアよりもRailsとかの方が転職しやすいんじゃないか? という迷いが出たんですが、結局やりたいことを優先させました。Railsも興味がなくはないんですが、自分の使っているiPhone上で自分が作ったアプリが動いているところを見てみたいんですよね。 今内定もらった会社から落とされたら、Railsに行ったかというと、たぶんそうはせず、あと3ヶ月くらい勉強期間をとって、またiOSエンジニアとして転職活動したと思います。というのも、仮にRailsに切り替えてポートフォリオつくったとしても、採用確率は1%のものが3%になるくらいの変化でしかないので、それならば自分が本当にやりたい領域に集中した方がよい、何より転職活動と並行しながら4ヶ月勉強して、蓄えてきた知識がもったいない、と思います。 結局何選ぶにしても、学習コストに多少差があるだけで、それなりに腰を据えて勉強時間とる必要があるので、コスパのいい技術領域に行くという発想ではなく、自分が一番やりたいものを攻めるのが得策だと思います。ただ憧れていたけれど、実際やってみたらやっぱ違うとか向いてないとかはあると思うので、そう感じたときだけ道を変えるべきかと。
影響を受けたもの
ネット上の情報だと、下記5つあたりがエモかったです。
10年以上前のはてな匿名ダイアリーの記事で、もはやSI→Web転職の古典といってもいい記事です。何度読んでもエモい。
僕が一方的に追っているだけで、面識は一切ない年下のエンジニアですが、タイミング的にちょうどメインフレーム部署からWebエンジニアになっていたので、勇気づけられました。
オンラインサロン作ってから、ちょっとなんとも言えない感じにはなってしまいましたが、それまで無料でいい情報発信をして頂いていたので、参考にさせていただきました。一時期勝又さんの影響で、フリーランスをキャリアの目標にしようかとも思ったくらいでした。(色々考えたら別にフリーランスへの憧れが大してなかったのでやめました)
これも激エモですね。
上に比べると冷静なテンションで書かれた、ソニックガーデンの伊藤さん(Rubyプログラマ)の記事。初学者が勉強を進めていくための、具体的な方法論を書いてくれているので、自分のスキルの低さが嫌になったときに見て、勇気づけられました。
[^1]: 冗談です(一応) [^2]: ここでは自分のスキルを示す成果物のことです。元々はデザイナーの方が使っている用語だったようなのですが、最近のエンジニア転職でもよく使われます。