
未経験からベンチャー企業のソフトウェアエンジニアになるためのたった一つの方法
先に結論
レジュメを書いて受かるまで応募しながら勉強し続ける.
以上.
そんなの当たり前だと思う人へ
以下「エンジニア」というtermは「ソフトウェアエンジニア」の意味で使用する.
世の中にあふれている「未経験からエンジニアとして働けるようになる方法」系の記事を読むと,「まずProgateでRailsを学びます」「ポートフォリオを作ります」といったような,事前準備のステップが大量に書かれている.で,何故か肝心の採用される方法にあまり触れられていないような気がした(個人の感想).
しかしあなたのゴールは本当にProgateでRailsを学んでポートフォリオを作ることだろうか?知らないことを手当り次第に勉強しまくることだろうか?違う.エンジニアとして採用される事だ.だったらまずそのゴールへの最短経路を走るべきである.tutorialを無限にこなして大量のポートフォリオを作れば,勝手にどこからかスカウトが来てエンジニアになれるのだろうか?そこまで世間は甘くない.なにせ業務経験があるエンジニアが世の中にはゴロゴロいて,優先して彼ら彼女らに声をかけない理由がないからである.
業務経験なしプログラミングスクール卒業勢 vs メルカリ新卒入社で業務経験5年のエンジニア
結果は火を見るより明らかである.
応募するだけなら業務未経験者でもできる.最近はどの会社も自社に応募フォームを持っているか,hrmsなどを使用して作られた応募サイトを持っている.レジュメを書いてそこからレジュメを送ればいい.レジュメの書き方はググればいくらでも出てくるからそっちを見て欲しい.
エンジニアになるために必要なことは面接から学べる
さて,未経験でレジュメを書いて応募した場合,ほとんどのケースで書類落ちするだろう.冒頭で書いたようにProgateでRailsとHTMLとCSSを勉強して立派なポートフォリオを作っていたとしても,だ.実際,自分も採用担当者として過去に何人もの未経験者のレジュメを不合格にしてきた.
しかし世の中わからないもので,数多く打っていれば未経験でも面接まで進める企業もあったりする.そうなれば最初のハードルはクリアだ.
早速面接を受けよう.そして面接官から大量の質問をされよう.おそらくあなたは落ちるだろう.最初の面接なんて誰もが落ちる.気にしないことだ.自分も未経験からエンジニアに転職した時は最初の面接で落ちまくった.しかし数をこなしていくうちに結果的に内定を取ることに成功した.
何故か?それは面接で聞かれて自分が答えられなかったことを集中的に勉強して,出来ることを少しずつ増やして最終的に要求水準を突破できたからである.
業務未経験エンジニアへの要求水準は誰にもわからない
プログラミングスクール関係者ではないので最近の業務未経験者の採用事情はわからないが,自分の経験上では業務未経験の応募者の採用ラインを明確に決めているベンチャーを見たことがない.
業務未経験で採用された人に話を聞くと本当に再現性が無いように思える.たまたま組織に未経験者を取れるだけの余裕があった所に応募があったとか,経営者の気まぐれだとか,誰かの知り合いでリファラル採用だったとか.だから,業務未経験者に対する採用基準は明確でないことが多いと考えておいた方がいい.
要求水準が見えるタイミングとは
しかし要求水準が明確化するタイミングが存在する.それが面接の場である.面接ともなれば採用する側も本気で応募者を見極めようとする.ベンチャーの場合,大体は現場のエンジニアが最初の面接を行う.
そこでは現場のエンジニアが応募者のスキルを見極めようとするために色々な質問を行うケースが多いはずだ.その質問にこそエンジニアの本音が出てくる.ちゃんとした面接官ならば,「業務未経験とは言えどもこれぐらいは出来ていれば採用してもいいかも知れない」という考えを元に質問を考えてくる.だからその質問にちゃんと答えられなくては採用への道は閉ざされる.
しかし逆の見方をすれば,「これだけ出来れば未経験でも採用できるかも知れませんよ」という基準を示してくれているという意味でもある.これほど重要なヒントがあるだろうか.質問に答えられなくて落ち込んでいる場合ではない.あなたが次にするべきは,答えられなかった質問に答えられるようにスキルを磨くことである.そのスキルは相手の要求から来ているのだから,そのスキルを身に着けておけば他の会社であっても目を引ける可能性はある.
大体,同じような業務内容で同じようなポジションならば,最低限要求してくるスキルは大体同じようなものになる傾向にある.だから数多く同じようなポジションに応募することで,どういったスキルが必要なのかを自然と見極められるようになるのである.そうすればいずれ要求水準を超えられるだけのエンジニアになれそうな気がしないだろうか.実際,筆者は面接の場で現役エンジニアにボコボコにされながら足りないものを少しずつ増やしていった.
当時の自分の場合,テストの書き方,オブジェクト指向でのコード設計,Linuxで負荷状況を調べる方法,MySQLでのexplainの使い方とクエリの改善方法などが,面接の場で初めて学んだ要求スキルである.あと,普段からどれぐらい情報収集しているかもよく聞かれたので,企業の技術ブログを読む習慣も付いたように思う.
おわりに
以上が自分が考えるエンジニアになるための最短コースである.まとめると,
1. 面接の場数を増やす
2. 今の自分に足りないものを知る
3. 2で知った自分に足りないものを勉強する.
4. 1に戻る
といった感じになる.足りないものを勉強する手段として前述したようなProgateなどのオンライン教材やプログラミングスクールを活用すれば良いのであって,最初から決まりきった手順のように勉強に手を出す必要は必ずしもない.もっとも,人生で一行もコードを書いたことがないというのであれば話は別であるが,そもそもなんでそういう人がエンジニアを目指そうとしているのか理解できない.「1音も鳴らしたことないけどプロのギタリストを目指してこれから勉強するのでギタリストとして採用してください」と言っているようなもんである.なのでそういう人までこの記事でフォローできないのはご勘弁願いたい.
いずれにせよ,いくらtutorialをこなしても見栄えのするポートフォリオを沢山作ったとしても,本当に企業から求められているスキルをあなたが満たしているかどうかは分からないのである.ちなみに自分は,過去の面接でオブジェクト指向の簡単な概念と使い所を説明せよと質問され,全く答えられなかった経験がある.classを使えるのとOOPの知識はまた別物であったが,OOPの設計思想の重要性は案外入門書やtutorialでは教えてくれなかったりする.