Edited at

【未経験から転職】「28歳+空白期間1年+高卒+プログラミング経験なし」が、自社開発の企業からスカウト頂いてエンジニア転職する4ヶ月間の体験談


結論

タイトルの通り、私はお世辞にも評価される経歴やスキルを持った人間ではありません。

それでもエンジニアとしての転職に成功出来たのは、他のエンジニアとの差別化を意識しながら、愚直にアウトプットを続けた事です。

具体的に言えば、下記の様な事です。

・技術ブログを毎日休まず書き続ける

・採用担当者の目に留まる様に、Twitterや求人サイトで拡散する

これは転職に成功した現在も継続しており、この記事を投稿した時点で「108日間」続いています。

スクリーンショット 2019-04-13 20.00.15.png

ブログ:りょうたくのWEBエンジニア日記

Twitter:@ryoutaku_jo


概要

今回は、プログラミング未経験から、2019年4月にエンジニアとして転職するまでの体験談を書かせて頂きます。


  • 想定読者


    • 未経験からエンジニアへの転職を目指して、試行錯誤されている方

    • 新人の思考に触れて、フレッシュさを取り戻したい現役エンジニアの方

    • 初心を忘れそうになった未来の私




注意点

特に未経験の方へなのですが、私の考え方や実際に行った事などは、当たり前ですが、誰でも同じ成果が出る最適解という訳ではありません。

(私に限らず、誰が発信した情報でもそうだと考えています)

一個人の意見や体験であるという事を考慮した上で、参考にして下さい。

また、賛否両論ある部分もあると思いますので、もし別のご意見などありましたら、遠慮なくコメント頂ければ有り難いです。


エンジニアを志し、学習を開始するまでの過程

まず、どの様な考え方に基づいて、エンジニアを目指し、学習を開始したか紹介します。


エンジニアになろうとしたきっかけ

そもそもエンジニアになろうと考え出したきっかけは「みずほ銀行のコールセンターが、IBMのWatsonを導入した」という記事を読んだ事でした。

当時、私はコールセンターのマネージャーとしてのマネジメントの一環で、マニュアルやFAQの効果的な運用方法を模索していたのですが、それらをAIが自動で行なっている実態に、強い衝撃を受けました。

但し、よく言われる自分の仕事がAIに代替えされる危機感というものは不思議と無く、それ以上に、技術を用いたソリューションのスケールの大きさに、とても興奮しました。

そこで、自身が取り組んでいた課題にも、技術を用いた効果的な解決策が無いか考えましたが、当時勤めていた会社では、本格的なプログラムを導入するのは難しかった為、まずはExcelの各種機能を独学して、データの分析などを行っていました。

自分のやりたい様にやっていただけなのですが、それらの活動で得られた成果物が、取引先や上司・部下から喜んで貰えて、それを繰り返すうちに、「自身の手を動かして作ったもので他人の役に立つ」という事にやりがいを見出すようになりました。

そして、次第にExcelで出来る事の限界が見えた事で、よりモダンな技術を用いて、困難な問題に挑戦したいという想いが強くなり、エンジニアへの転職を決意しました。


バックエンドエンジニアとしてキャリアをスタートさせる

一口にエンジニアといっても、様々な業種がある中、私はWEB業界のバックエンドエンジニアとして、キャリアをスタートさせる事に決めました。

きっかけがAIだったので、当初は機械学習の分野に興味を持っていました。

しかし、色々と調べるうちに、機械学習を本格活用するには、プログラミングの知識に合わせて、高度な数学の知識も必要という事が分かりました。

それらを短期間で習得して、大学でデータサイエンスを専攻してきた人達と真っ向勝負するのは、かなり厳しいという考えに至りました。

そこで、昨今需要が伸び、人材不足で未経験の間口が広くなっているWEBエンジニアに注目し、そこからIT業界に潜り込もうと考えました。

WEBエンジニアにも、細かく分類すればフロント・バックエンド・インフラなどの分野がありますが、もともとExcelでデータの集計/分析などのロジックを考えるのが好きだったので、まずはバックエンドを主軸として、幅広い技術を習得して行こうと考えました。


会社を辞めて時間を確保する

28歳という事で、あまり転職に時間をかけ過ぎるのは得策では無い(年齢を重ねるほど不利になる)と考え、学習時間を確保する為に、会社を辞めました。

但し、私の場合は、下記のような状況だったからこそ、退職に踏み切れました。

・2年間ほど生活できる貯金があった

・転職に失敗しても、元の待遇で復職できる自信があった(人材不足の為)

もし十分な蓄えがなく、復職のあてが無いのであれば、高いリスクを抱え込むことになるので、退職は慎重に検討された方が良いと思います。


転職するまでの1年の空白期間

元々転職する為に会社を辞めたはずだったのですが、ふと死ぬまでにどうしてもやっておきたいと考えていた「世界一周」が頭をよぎり、気づけばバックパッカーみたいな事をしていました。

結果、会社を辞めてから8ヶ月後にプログラミングの学習を開始することになりました。

但し、お陰で迷いなく学習に専念する事が出来てました。

そして4ヶ月の学習/就活期間を経て転職したので、丸1年間、無職という空白期間がありました。


プログラミングスクールに通う事を決める

プログラミングの学習を行うにあたり、プログラミングスクールに通う事にしました。

独学することも検討しましたが、短期間で転職を目指すのであれば、ゼロから情報収集したり、誰の教えも請わないというのは、非常に効率が悪いと考え、一旦はスクールという枠に収まって、そこから自身の戦略を練っていくことにしました。

プログラミングスクールを検討するにあたって、主に下記の5点を基準に探しました。

・スクールが東京(渋谷)にある

前職は大阪の会社だったので、土地勘のある大阪を拠点にすることも考えたのですが、企業やイベント/勉強会などの多さから、東京の方が、エンジニアとして成長できるチャンスが多いと考えました。

また、WEB業界に関しては渋谷に企業が集中している傾向にあったので、渋谷を拠点として活動する為、渋谷にあるスクールから探しました。

・Rubyを学べる

初めに学ぶプログラミング言語をRubyに決めたので、Rubyが学べるスクールを探しました。

理由は、シンプルな文法で学習コストが比較的低いという事と、モダンな技術を積極的に採用している環境で利用されているケースが多いという観点で、Rubyをオススメされている情報が、当時の私の観測範囲では多かったという理由です。

・WEBサービス開発に必要な一通りの知識をカリキュラムが網羅している

バックエンドを目指すといっても、フロントやインフラに関する最低限の知識は必要です。

なので、HTML/CSS/JavaScriptといったフロント周りの知識や、サービスを公開(デプロイ)する為のインフラ周りの知識も習得できるスクールを探しました。

・チーム開発が出来る

基本的に企業に所属するのであれば、チームで開発をすることになると考えていました。

その際、Git(GitHub)などでバージョン管理を行うケースが多いと知りましたが、これらの実践的な使い方を身に付けるには、実際にチーム開発してみないと難しいのでは無いかと考え、チーム開発がカリキュラムに含まれているスクールを探しました。

・真剣にエンジニア転職を目指す人達が集まっている

どれだけ強い意志を持っていても、人は環境に左右されるので、周囲の環境は非常に重要だと考えました。

そこで「なんとなくプログラミング勉強してみたい」という理由ではなく、真剣にエンジニアへの転職を目指している人が集まっているスクールを探しました。

結果として「TECH::EXPERT」というプログラミングスクールに通う事を決めました。

理由は、見学に行った際に、100名くらいの生徒全員が黙々とPCに向かって、真剣にプログラミングを行っている姿に魅力を感じたからです。

授業料はかなり高額(当時50万)でしたが、出せない金額では無かったですし、これで学習期間が独学より3割くらい短縮できる(半年掛かるのが、4ヶ月に短縮できる位)のであれば、十分価値はあると考えて、申し込みました。

スクールでは、講習などは基本なく、カリキュラムに沿って自習し、不明な点があれば、教室内に常駐しているメンターに質問(途中から質問は遠隔対応になった)して、10週間という受講期間内に、いくつかの課題をクリアする事を目指すというスタイルでした。


上京して格安シェアハウスに住む

渋谷を拠点にすると決めたのですが、渋谷周辺は1Rで家賃平均10万で高額なのと、実際に就職する場所が渋谷であると限らない事から、賃貸の契約には消極的でした。

そこで、渋谷の格安シェアハウス(家賃:4万円)に住むことに決めました。

シェアハウスであれば、初期費用も安く抑えられ、退去も比較的融通が効きやすい事から、当時の私には最適でした。

当初、テラスハウス的な展開を期待していたのですが、蓋を開けると、1ルームに2段ベット3台を無理矢理押し込んだ狭い空間に男6名がプライベート皆無な共同生活をするという、快適とは言い難い環境でした。

しかし、かえってそれが自宅でダラダラ過ごすという悪習を断ち、学習だけに専念できるという予期せぬ効果がありました。


学習開始からの時系列

ここからは、実際に学習を開始してから、就職するまでの過程を、時系列で紹介します。


学習期間:1〜3週目

冒頭で説明した通り、経歴的に不利な私は、少なくとも駆け出しの中では、頭一つ抜けるくらいの能力を身に付ける必要がある考え、まずは同期の中で一番を目指す事にしました。

一番といっても目標は定量的で無ければ意味が無いので、「学習時間」「カリキュラムの進行度」に関して、同期で一番になるという目標を立て、この頃は、毎日平均12時間、休みなく学習に費やしました。

この時期に学んだ内容は、大雑把にまとめると以下の通りです。


  • HTML/CSSを用いた画面レイアウトの作成方法


  • Rubyの基本知識、アプリケーション作成


  • Railsを用いたアプリケーション開発方法(簡単なCRUDやスクレイピングなど)


この時期に躓いた課題は、下記の様な内容です。

・解説を何度読み返しても理解出来ない事が多々あった(ハッシュと配列の違いなど)

→コードを書いて、実践で違いを理解する

・Railsのエラーが何を表しているのか分からない

→過去に遭遇したエラーを全てメモ(メッセージ・原因など)にストックし、傾向をまとめる。

 下記の記事で、エラーが発生した場合の基本を抑える。

プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意

・英語アレルギーで、日本語の情報ばかり頼ってしまう

→Google翻訳に頼ってでもいいから、英語から逃げない

そんなこんなで1ヶ月が経過した頃には、簡易版Twitterの様なアプリを作成できる様になっていました。


ブログでのアウトプットを開始

同期の中で一番を目指すという目標を設定したものの、周りも本気で学習に取り組んでいますし、中には元々プログラミングの経験がある人もいた為、実際には差が広がらない様にするだけで精一杯な状況でした。

そういった状況から、カリキュラムに専念するだけでは、駆け出しの中で埋もれてしまうと感じ、周りと差別化する方法を考えました。

そこで目を付けたのが、スクールでも推奨されていたブログでのアウトプットです。

しかし、ただ記事を投稿するだけなら、他にも実践している人はいるので、差は生まれにくいです。

とはいえ、プログラミング学習を始めたばかりで、かつ人生で一度もブログを書いた事が無かった(Twitterですら発信した事が無い)私が、「質」の良い記事を書くというは非常に困難です。

そこで、まずは「量」で他と差別化する事にしました。

具体的には、毎日ブログを投稿し続けました。

現役の方も含め、技術に絞ったブログを「毎日」書かれている方は、ほぼいらっしゃらなかった(学習法やキャリア戦略やアフィリエイトサイトなどであれば数名居た)ので、転職後を見据えても、差別化になると考えました。

また、「毎日」投稿する事にしたのは、「習慣化」も期待しての行動でした。

かなり昔に読んだ習慣化に関する本(タイトル忘れました・・・)で、行動を習慣化させるには、「毎日」続ける事が非常に重要だという主張がありました。

「毎日」行うのは一見すると、「毎週」などのペースより大変そうに見えますが、「毎日」続ける方が、意識に残りやすく習慣化されやすい為、心理的な負担感で比較すると、「毎週」より楽であるという内容です。

また、Twitterやスクールの同期に対して、毎日ブログを書くことを宣言し、やめられない状況を生み出しました。

私は本来生粋の怠け者で、強い意志を持って物事に取り組むことは100%不可能な為、こういった仕組みを利用して、アウトプットを継続させる事にしました。

とはいえ駆け出しの知見など、注目されるに値しない内容なので、始めた当初は、スクールの同期以外、誰にも見られないという状況でした。

しかし、PV数を稼いで収益化する事が目的ではなく、日々学んだ知見を発信し、技術力の向上や学習意欲をアピールすることで、転職に繋げる事を目的としていたので、とにかく淡々と投稿数を積み重ねて行きました。

また、ブログのテーマとしては、「昨日の自分が役立つ情報を発信する」という観点で、学習した内容を自身の言葉でまとめる事で、学習効果の向上にも役立てました。


学習期間:4〜6週目

この時期に学んだ内容は、概ね以下の通りです。


  • 正規表現

  • JavaScript, jQueryの基礎


  • 非同期通信(Ajax)


  • GitHubによるバージョン管理


  • データベースの概要(SQL)

  • データベース設計の基礎(正規化/ER図)

  • HTTP、IPアドレスなどWEB技術の基礎

  • Haml,Sass


  • AWS(EC2/S3)によるデプロイ


今まではカリキュラムの通りにコードを書いてアプリを作るという内容でしたが、この時期になると、ヒントだけで要件通りにアプリを作るという、より実践的な内容になりました。

この時期の主な課題は、下記の様な内容です。

・CSSが思った様に適用されない(要素が任意の箇所に配置されない)

→一般的なサイトを、元のソースを見ずに、目コピする

・Qiitaのコードを流用したらバグが発生した

→公式リファレンスから調査する事を習慣づける

・基礎の知識が無さ過ぎて、AWSを用いたデプロイで躓く

→HTTP通信やSSHなど、Web技術の基礎部分を自習する

この頃にはカリキュラムの要件に沿って、下記の機能を実装したチャットアプリを製作しました。

・ユーザー新規登録機能

・グループ内でのチャット機能

・複数人によるグループチャット機能

・チャット相手の検索/招待機能

・チャットの履歴表示機能

・画像送信機能

・チャットの自動更新

誰よりも学習時間を確保出来た事と、毎日のブログ投稿で知識の定着が図れた事が功を奏し、最終的にカリキュラムの課題は、同期で一番に完成させる事が出来て、残すは最終課題のチーム開発のみとなりました。


ブログの反響

この頃に、Green・Wantedly・キャリトレといった主要な求人サイトに登録しました。

しかし、スクールの課題がまだ残っている事もあり、応募など本格的な活動はせず、自己アピール欄でブログでの発信をアピールするに留めました。

それでも、ブログを見て興味を持って頂いた企業から、スカウトメールが届いて、面談の機会を頂く事が何度かありました。

また、この頃に現在就職した会社からスカウトメールを頂き、交流が始まりました。


学習期間:7〜10週目

この時期から、チーム開発が始まり、某フリマアプリのコピーサイトを製作しました。

4名チームで、私の役割は、スクラムマスターとしてのチームのサポートと、デプロイ全般の管理と、各種機能の開発を担当していました。

また、スクールのチーム開発と並行して、週に2〜3回、勉強会に参加したり、カジュアル面談に行ったりしていました。

振り返ると、この頃が最も活動量が多く、モチベーションが非常に高かった時期で、他のチームより一番でアプリを完成させる事を目標に、食べる寝る以外は、ずっと開発を行っていました。

チーム開発という、互いに励まし合ったり、サポートし合いながら、目標に向かって切磋琢磨し合うという状況がモチベーションの向上に役立ったと考えています。

但し、これがモチベーションのピークでした。


学習期間:11〜14週目

スクールの最終課題であるチーム開発も終了し、いよいよ本格的に就職活動を開始しました。

利用した求人媒体は、以前登録した「Green・Wantedly・キャリトレ」の3つでした。

併せて、スクールのキャリア支援サポートを利用したり、フリーランスのエージェントにも登録していました。

フリーランスについては、僅かながらチャンスがあるのではと考えていましたが、事前のプログラミングテストで高得点を取っても、実務経験が無い事を理由に断られたりと、かなり厳しい現状を知った為、転職一本に絞って就職活動を行いました。

自社・受託・SES問わず、最低でも20社は話を聞きに行こうと目標を立て、興味の湧いた企業には片っ端から応募をしていきました。

メガベンチャーや実務経験を条件にしている企業などにも、駄目元で応募したりしました(ほぼ全滅でした)

また就職活動では、チーム開発で作成したサイトをポートフォリオにしていたのですが、やはり自身のポートフォリオがあった方が良いと考え、ポートフォリオの作成にも着手し始めました。

しかしポートフォリオは、最後まで完成しませんでした


ポートフォリオ未完成の原因

ポートフォリオが完成しなかった原因としては、下記2点だと考えています。


・ポートフォリオの難易度を高く設定し過ぎた

単純に興味があった技術を試してみたいと気持ちから、下記の様な機能の実装に挑戦しました。


  • Dockerで開発環境を構築

  • CircleCIで自動テスト

  • バッチを動かして、クローリング・スクレイピング

  • その他、色々・・・

自身の身の丈を考えずに挑戦した結果、これらの技術自体の学習に時間を割かれてしまい、実際のアプリ制作にまで進める事が出来ませんでした。


・モチベーションの低下

スクールのカリキュラムという強制力を失った事と、最後の課題に力を入れ過ぎて燃え尽きてしまった事で、一気に学習に対するモチベーションが下がってしまいました。

その他にも、色々とモチベーションが落ちるイベントが多発しました。


  • 書類選考で落ちまくる

  • 勉強会で知り合った人から、マルチ商法の勧誘をされる

  • ポートフォリオの風呂敷を広げ過ぎて、終わりが見えない

  • 勉強会で知り合った人(さっきと別の人)から、マルチ商法のイベントに巻き込まれる

  • スクールの同期が教室に来る機会が減り、励まし合う人が居ない

  • マルチ商法の面倒な人間関係に巻き込まれる

東京、マルチ商法の回し者多過ぎ・・・

そんなこんなで勉強会で出会う意識の高い人が、全員マルチの回し者に見えてしまう病に罹った事で、勉強会に参加する事も減っていきました。

「オリジナルポートフォリオの作成遅延」と「モチベーションの低下」

この二つの問題に、効果的な対策を講じられなかった事が、私の転職活動における最大の反省点です。


ブログは継続

ただ、毎日のブログ投稿だけは継続していました。

習慣化の力は恐ろしく、モチベーションが低い中でも、毎日ブログを書き続ける事に、大きな抵抗感はありませんでした(楽とは言ってない)

そして毎日ブログを書くためには、毎日学び続ける必要がある為、学習を継続させる原動力となりました。

また、この頃にはスクールの同期以外にもブログを見て貰える機会が増え、「役に立った」と嬉しいフィードバックを貰えた事で、やる気を取り戻すきっかけになりました。


就活の成果

そんなこんなで、モチベーションが落ちつつも、なんとか続ける事が出来た就職活動の成果は以下の様になりました。

応募:約80社



面接/面談:21社(カジュアル面談や選考辞退も含む)



内定:4社

そして内定が出た中でも、1ヶ月前にスカウトメールを下さって、交流を続けていた自社開発の会社に最も魅力を感じ、最終判断の為、そこでアルバイトとして仮入社させて頂きました。


学習期間:15週目

業務では法人向けの新規事業の開発に参加させて頂き、アルバイトとして入社してから一週間で、下記の様な機能実装を任せて頂きました。


  • 他ユーザーが投稿した情報をリスト管理する機能

  • ユーザーのツールの利用状況を記録する機能

  • CSVからユーザーを一括登録する機能

今までに実装した事が無い機能という事でかなり苦労しながら、なんとか動くコードは書いてプルリクを出しましたが、テストの想定が甘く、投入するデータの種類を変えるとエラーが出てしまったり、拡張性/メンテナンス性に乏しい内容だったり、処理効率の悪いロジックになっていたりと、様々なアドバイスを頂く中で、実務に求められるハードルの高さを身をもって実感しました。

そして一週間が経ち、やはりこの会社が自身の成長に最適だと確信して、入社を決めました。

魅力的に感じたポイントは、下記の様なところです。


  • コードをたくさん書かせてくれる

  • コードレビューの文化がある

  • Ruby on Railをメインに使用

  • モダンな開発環境(自動テストの導入など)

  • サーバーサイドだけでなく、インフラなども任せて貰える余地がある

  • エンジニアの育成に積極的(勉強会実施や技術書購入の補助など)

  • 技術志向よりビジネス志向が強い

  • 皆さん優しくて、熱心に仕事に向き合われている

こうして、私の転職活動は終了しました。


未経験からの転職活動で重要な事

次にこれまでの経験を踏まえて、未経験がエンジニアに転職する上で、理解しておく必要がある事をまとめます。


未経験に求められるのは「自走力」

私は勉強会やカジュアル面談などに頻繁に顔を出していましたが、下記の様な事を調査するのが目的でした。


  • 採用担当者の方が、どういう視点でエンジニアを選ばれているのか?

  • 現役エンジニアの方は、どの様に転職活動を行って成果を出したのか?

そこで分かったことは、企業が未経験に求めている能力は、「自走力」であるという事でした。

「自走力」とは、大まかに分類すれば、下記の3つだと考えています。


  • 学習意欲・・・自ら主体的に学ぼうとする姿勢、プログラミングが好き、目標が明確

  • 抽象思考力・・・1聞いて10理解する様な能力、知識を発展利用する力

  • 基礎能力・・・土台となる最低限のプログラミングやコンピュータサイエンスの知識

真っ当な企業であれば、普通の未経験が即戦力になれると期待していません。

但し、営利活動をしている以上、あまり手が掛からない人が望ましいとも考えています。

なので、この「自走力」が他より高いという事を、いかにアピールするかが、転職活動の成否を分けると考えました。


内定先から評価されたポイント

実際に、現在就職した会社が私を評価して下さった理由も、下記の2点の様な「自走力」に関連するものです。

・学習意欲

毎日のブログでのアウトプットから、学習に対する強い意欲を感じて貰えました。

私以外のエンジニアを面接した際にも「ブログやってます」と言う方はいたそうですが、次に会った時には、やめていたという人が多かったそうです。

そんな中、初めてお会いした以降も、ブログを継続していた私はかなり新鮮に見えた様でした。

・抽象思考力

未知の問題に対して、その場の思考で答えられた事も評価されたポイントでした。

初めにお会いした面談で「他ユーザーをフォローする機能を実装する際の

データベース設計をER図で書いて貰えますか?」という様な問題を出された。

当時は学習初期で、まだ多対多のアソシエーション(中間テーブルの組み方)も知らない時期でしたが、運よくその場の思考で答えられたことで、抽象思考力が高いと評価して頂けました。

以上の2点から、現時点の技術レベルが低くとも、ポテンシャルは高いので、直ぐにキャッチアップ出来ると評価して頂けて、内定に結びつきました。

他に内定を頂いた企業からも、概ね似た部分を評価されたと思います。

この事からも、「自走力」のアピールが非常に重要だと考えています。


王道のアピール方法はオリジナルポートフォリオの作成

私の場合は、「ブログ」が評価を強く後押ししてくれたので、オリジナルのポートフォリオ無しで、理想としていた会社から内定を得られましたが、やはり王道のアピール方法はオリジナルのポートフォリオ作成だと考えています。

なぜなら、オリジナルのポートフォリオは「自走力」が無ければ、完成し得ないからです。

自身でエラーを解消し、デプロイまで持って行くには、非常に根気がいる → 「学習意欲」

オリジナルのポートフォリオは、コピペだけでは機能実装できず、自身で試行錯誤する必要がある → 「抽象思考力」

一通りの機能が実装してデプロイまでするには、網羅的にスキルを習得する必要がある → 「基礎能力」

なお、どの様なポートフォリオを作るのが、アピールとして効果的かは、下記の動画が非常に参考になると思います。

僕のエンジニアとしてのポートフォリオを紹介します。

また、これは私の失敗経験から言える事ですが、過剰に機能を盛り込まない事をお勧めします。

ポートフォリオは実装されている機能が特徴的であれば、評価の対象になるかもしれませんが、そもそも完成しなければ意味がありません。

まずは上記の動画の要件を参考に、最低限必要な機能を実装し、余力があった時に初めて、追加で機能を実装すれば良いと考えています。


「自己分析」と「企業分析」も非常に重要

スキルと同様に重要な事として、「自己分析」と「企業分析」があげられます。

何故なら面接では、下記の様な事を良く質問されるからです。


  • なぜエンジニアになりたいのか?

  • 3年後・5年後・10年後にどうなっていたいか?

  • どの様なエンジニアになりたいのか?

  • どういったサービスを作ってみたいか?

なぜ、この様な質問をするかというと、その人が自身の欲求を明確に理解していて、その考え方と現在の行動に一貫性があり、かつ自社の方向性とズレが無いかを確認する為です。

企業が即戦力にならない未経験を採用するのは、人材不足や給料が安く済むという背景もありますが、ゆくゆくは自社の主要メンバーとして活躍して欲しいという思いも大きく影響しています。

高い技術力がある中途やフリーランスでは、会社への依存度が少ないので、帰属意識を持ちづらいですが、未経験であれば、一から育てた事を恩に感じてくれる事で、帰属意識を持ちやすい傾向にあります。

長期的に見れば、フリーランスの様に与えられた仕事だけにコミットする人間だけでなく、会社の成長自体にコミットしてくれる主要メンバーを増やすことが、会社の成長には必須です。

そういった主要メンバー候補として採用する以上、技術力や伸び代だけでなく、会社の理念に共感できる人物なのか?という事も、重要な判断材料となります。

特に自社開発の企業は、会社の理念とサービスが強くリンクしているので、会社の考え方と合うか?合わないか?を、特に重要視される傾向にあると、面接などを通して感じました。

先ほどの質問に正解は無いですが、付け焼き刃の回答は、一貫性が無いと見抜かれます。

なので、しっかりと「自己分析」を経て、自身の欲求を明確にして、「企業分析」を通して、どういった人材が求められているのかを把握する必要があります。

「自己分析」についてですが、自身の欲求は、それぞれの原体験と強く結びつくものなので、人によって答えは異なります。

その為、誰かの考え方を安易に鵜呑みしてしまえば、本来自分がやりたい事から道が逸れてしまう可能性があります。

ここはじっくり腰を据えて、自分はどうなりたいのかを考え抜かれる事をお勧めします。

「企業分析」については、ホームページに掲載されている企業理念や事業内容にしっかりと目を通して、どういった考え方に基づいて、何をされている会社なのかをあらかじめ押さえておきましょう。

また、Wantedlyなどに自社PRの記事を掲載しているのであれば、そちらにも目を通しておく事をお勧めします。


参考にした情報

ここからは、転職活動や日々の学習などで参考にした情報を紹介します。


駆け出しエンジニアの体験談

未経験からエンジニア転職された方の体験談は多くありますが、その中でも、特に下記お二人の記事は非常に参考になりました。

未経験から4ヶ月でWeb系エンジニアに転職するためにやったこと

@Ryokky

化学系研究者が完全未経験からWeb系自社開発企業に転職するまで

@fuku_tech

非常に優秀かつ意欲的な方達ですので、全て真似するのは難しいですが、再現性の高い内容だと思いますので、参考にされる事をお勧めします。


ベテランの発信

伊藤淳一さん (@jnchito)

Ruby(Rails)のプログラマー。

「プロを目指す人のためのRuby入門」という有名なRuby本の著者であり、「Everyday Rails - RSpecによるRailsテスト入門」というこれまた有名な本の翻訳者。

Qiitaにも初心者向けの記事を多く投稿されており、Ruby・Railsの学習において最も参考にさせて頂いた方です。

・お勧めの記事

あなたがマスターしたのはいくつ? Railsを習得するために必要な技術要素の一覧

プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意(解説動画付き)

【初心者向け】テストコードの方針を考える(何をテストすべきか?どんなテストを書くべきか?)

なお、著書の「プロを目指す人のためのRuby入門」については、Rubyの基礎を理解済みの人や、他言語を既に習得済みの人を対象に書かれた「中級者向け」の内容ですが、実務未経験の私でも非常に理解しやすい内容で、Ruby学習者には非常にお勧めです(初めに読むにはレベルが高い)

また、下記の記事は、私がブログを書く際の心得とさせて頂いてます。

ブログに技術書の内容を丸写しする問題点と、オリジナルなコンテンツを書くためのアイデア

勝又健太さん(@poly_soft

バックエンドを主軸に様々な技術に精通されている「雑食系エンジニア」

QiitaやYouTubeで、エンジニアのキャリア戦略に関する情報を多く発信されています。

・お勧めの記事

Ruby->Go->Scalaという習得順序がエンジニアの爆速の成長に最適である理由

2018年の最先端バックエンドエンジニアに必要なスキルについて考えてみました。

・お勧めの動画

モダンなIT企業を見極める7つの技術的チェックポイント

プログラミング初学者の「わかってから始めたい病」の危険性

企業の見極め方など、転職活動に関する情報で、参考にさせて頂きました。

未経験がエンジニアに転職し、その後のキャリアをより良いものにしていく為の具体的なアクションを、明確に発信されている方は少ないと思います。

但し、賛否両論が激しく分かれる意見も中にはありますので、様々な人の意見を比較検討した上で、自身に最適なものを選ぶ事をお勧めします。

Utsuさん

エンジニアの方ではありませんが、外資系IT企業の営業マンとして高い実績を残された方で、YouTubeで学生や若い社会人向けのキャリアに関するアドバイスを発信されています。

自己分析や面接対策などに関する情報が豊富なので、その辺りで迷っている方は参考にする事をお勧めします。

Utsuさんブログ

やめ太郎さん(@Yametaro

Qiitaで一番面白い人。

読み物として非常に面白いだけでなく、面白さを損なわない程度に技術的な解説を入れているので、新しい知見を楽しみながら吸収する事が出来るので、初心者でも参考になります。

・お勧めの記事

Haskellをかける少女

ワイ「いうても型なんて面倒くさいだけやろ?」

ワイのテスト苦労開発〜転職したら最年長ザコーダーになった件〜


学習コンテンツ

Progate

WEB上でプログラミングをしながら、プログラミングの基礎知識を学べるサイトです。

分かりやすさにおいては、ここより優れているサービスは無いと個人的に思っています。

全くの未経験であれば、ここから勉強を開始されるのが、最も効果的だと考えています。

有料会員にならないと、全てのコンテンツは利用できませんが、それを上回るくらいの価値は十分あると思います。

一方で、基礎的な内容しか学べないので、本格的なポートフォリオを制作するには、別途学習をする必要があります。

ドットインストール

動画でプログラミングの知識を解説しているサイト。

動画は1本3分でまとまっているので、あまり気負わずに視聴できます。

とにかくコンテンツが豊富で、無料会員でもかなり満足できます。

一方で、Progateと違って、理解度をテストする問題などは無いので、ただ視聴するだけでは「分かった気」になるだけで終わってしまうので、注意が必要です。

Ruby on Rails チュートリアル

Ruby on Railsでの開発方法を網羅的に学べるコンテンツ。

これが理解出来れば、未経験を採用している企業が求めている最低限の技術レベルはクリア出来ていると思います。

但し、それはあくまでRailsに関してであって、純粋なRubyでのプログラミングや、HTTP・SQLなども理解していないと、実務で苦労する事になります。

また、完全に理解するのは現役の方でも難しい様で、「転職」を目的とした学習という観点だと、何周もして理解を深めるのは、やや過剰な投資かもしれません。

基本情報技術者試験

これはIT技術者向けの資格です。

IT業界に限らず資格が有効に働くケースが少ないなので、資格の取得そのものの価値は低いですが、WEB技術全般を網羅的に学べるという点で、多くの方がお勧めされています。


書籍

WEBを支える技術

現役にエンジニアの方に、読んだ方が良い本を聞くと、次に紹介する「リーダブルコード」とセットで、高確率で紹介されるくらいの名著。

HTTPなどWEB技術全般の知識が網羅的に紹介された本。

WEB技術の知識は、知らないとデプロイで躓いたり、HTTPとかは、理解しておかないとアプリ開発で躓く原因になるので、

しっかり勉強された方が良いと思います。

ただこの本は、正直初心者には難解過ぎます。

これでWEB技術全般を勉強するのは、挫折の元なので、もう少し噛み砕いた解説をしている本を、初めに読むことをお勧めします。

私は「プロになる為のWEB技術入門」という本で勉強しました。

また、私は読んだことがありませんが「この一冊で全部わかるWeb技術の基本」という本も、分かりやすいという観点で多くの方がお勧めされていました。

リーダブルコード

現役エンジニアが高確率でお勧めする本、第二弾。

拡張性/メンテナンス性の高いコードを書く為のノウハウが解説された本。

分かりづらいコードは、チーム全体の生産性を下げてしまうので、実務で足を引っ張らない為にも、しっかり理解しておきたい内容。

但し、所謂スパゲティコードの様な、拡張性/メンテナンス性の低いコードに、悩まされた経験の少ない実務未経験者にとっては、実践方法がイメージしづらいかもしれません。

とりあえずは全て理解しようとせず、「名前が大事なんだな」「なんでもかんでもコメント書けば良い訳じゃ無いんだな」くらいの大枠の概念を理解しておけば、実務でアドバイスされた時に、直ぐ修正出来ると考えています。


勉強会

connpass

私は主にこちらのサイトで勉強会の情報は仕入れていました。

なお、未経験が勉強会に参加する際、未経験向けの勉強会にばかり参加する事はお勧めしません。

理由は、未経験としか繋がれず、得られる知見も少ないからです。

それと、完全に私の偏見なのですが、初心者向けや未経験向けの勉強会やセミナーなどは、

マルチ商法の関係者が多かったです・・・

正直、経験者向けの勉強会は何を言っているか分からないですし、恥をかくかもしれないと言う不安感もありますが、自分一人では辿りつかなかったであろう知見を得られますし、現役の方とも繋がれるので、非常にお勧めです。


学習を開始する前の疑問

私が学習を開始する当時に疑問に思っていた事と、それに対する現時点の私個人の考えをまとめます。


どの言語を学べば良いのか?

私はやりませんでしたが、求人サイトで自分が入社したいと思うような会社を、いくつかピックアップして、それらの企業で最も多く採用している言語を勉強するのが良いと、今は考えています。

私はRuby(Rails)で理想とする会社に入社出来たので、結果的にこの選択をして良かったと考えています。

一方で、Ruby(Rails)は未経験向けの求人数が少ないという現実も知りました。

私が就活をしていた時に、言語毎の求人数の感覚的な比較は下記の通りです。

「Java=PHP>Ruby>Python」

実際に、スクールの同期の中には、Rubyではなく、JavaやPHPやPythonなど別言語の職に就いている人もいました。

ですが、少なくとも私の場合、求人が少な過ぎて、Railsの仕事が殆ど見つからなかったという状況にはなりませんでした。

確かに、エージェント経由だと過半数がJavaやPHPでしたが、求人サイトや企業ホームページを探せば、いくらでもRailsの求人がありました。

「Railsは仕事が全く無い」みたいな発言をされている方をTwitterで何度か見かけましたが、私の周りにもRailsで開発する会社に就職した人は複数名いらっしゃるので、極端な意見だと感じてます。

また、「Railsは簡単過ぎて基礎が身に付かない」という意見もありますが、Railsでも本格的に運用しようとすれば、SQLやHTTPなどの基礎を理解する必要性が出てくるので、結局辿る道は同じなのでは無いのかと考えています。

言語選択については、私も含めそれぞれがポジショントークで好き勝手に発言していますので、そういった意見に惑わされて打算的な判断をせずに、自分のやりたい事を軸に選択されるのが後悔が無くて良いと考えています。


プログラミングスクールに通う必要はあるか?

無いです。

スクールに通わずともエンジニアになれるというのが、スクールに通った私個人の結論です。

但し、これはスクールに価値が無いと言っている訳ではありません。

モチベーションの維持や学習する内容の選定など、個人で取り組むには難しい部分をサポートして貰えた事で、当初期待していた「3割くらいの学習効率の向上」という目的は達成できたと感じていて、非常に感謝しています。

でも、やっぱりコスパは悪いです。

最近は未経験からエンジニアに転職するまでに何を学べば良いんか?というコンテンツが充実しているので、それらを参考に学習プランを練って独学すれば、数万円の出費で済むと思います。

RubyとRailsの学習ガイド2019年版

未経験からRuby on Railsを学んで仕事につなげるまでの1000時間メニュー

それと独学の場合、質問・相談できる人が居ないというのがネックになりますが、最近はインターネット上でメンターを探せるサービスもあるので、それらを活用するのも良いと思います。

MENTA

あとは、ツイッターのいつまでに転職すると宣言して、下記の様なハッシュタグを付けて学習報告をすれば、励まし合える仲間も得られるので、独学も十分選択肢として有りだと考えています。

 #100DaysOfCode

 #駆け出しエンジニアと繋がりたい

とはいえ、お金を出せるのであれば、スクールは有力な選択肢の一つだと考えています。

私が通っていたスクールと勉強会で遭遇した人が通っていたスクールも紹介します。

(ちなみに、勉強会でのエンカウント率は、「DIVE INTO CODE」が圧倒的に多かったです)

TECH::EXPERT

DIVE INTO CODE

ポテパンキャンプ

それと、プログラミングスクールが提供してくれる価値というのは「学習効率を3割ほど高めて、エンジニアとしてのスタートラインに立たせてくれる」というもので、それ以上でもそれ以下でも無いと考えています。

なので、全く勉強しない人の効率を3割ほど高めても、劇的な効果は見込めませんし、スタートラインに立たせてくれるだけなので、フリーランスなどで案件が獲得できるほどの一人前になるには、一部の優秀な人を除けば、その後も勉強し続ける必要があります。

授業料が高額なだけに過度な期待を持たれるしまう場合がありますが、その辺りは注意しておいた方が良いと思います。


実務を経ての感想

現在、実務に入って3週間が経過しましたが、その中で感じた事をまとめます。


控え目に言って「天職」です

日々、新しい知識を取り入れて、現場のレベルに着いていく為に必死ですが、それでもプログラミングは楽しく、毎日が充実しています。

なので、なぜもっと早くに転職しなかったんだと思う事は少なくありません。


やっておけば良かった事

それと、もっと勉強しておけば良かったと思うところが、いくつかあるので紹介します。


テストコードの記述

業務では、毎回テストコードを書くのですが、就職するまでテストコードにはあまり力を入れていなかったので、かなり苦戦しました

初めの頃は、ただただ面倒に思っていましたが、使い続けてみると、これが非常に有用だと気づきました。

例えば、プルリクを出した後に、リファクタリングに関するアドバイスを頂いて、コードを修正した後など、わざわざブラウザで動作をチェックしなくても、コマンド一つで正常に動作するかを確認できるので、作業がかなり楽になります。

また、テストが自動化されているので、間違ってテストしないままコミットしても、自動でテストが走って、問題あれば弾いてくれるので、バクを間違って混入させてしまうリスクを最小限に押さえる事が出来ます。

テストは目に見えない部分なので、ポートフォリオの評価には中々結び付きづらいが、しっかりした開発環境の会社であれば、テストコードは絶対書かれていると思います。

きちんと書き方を習得される事をお勧めします。


リファクタリングの知見

テストも通って、完璧だと思ってプルリクを出したとしても、未だに10箇所くらい修正箇所を指摘されるという事があります。

意識して書いているつもりでも、冗長なコードになってしまったりと、「動くコード」と「拡張性/メンテナンス性の高いコード」の間には大きな開きがあるのだと改めて感じました

ポートフォリオを作っていた頃は、MVCレベルのメソッドの切り出しが出来ていれば構わないくらいの大雑把なリファクタリングしかしていなかったので、この辺りの意識は早い目に持っていた方が良いのかもしれません。


Ruby自体の学習

Rubyのフレームワークである「Ruby on Rails」は、Rubyの知識が不十分でも、ある程度の事は出来てしまうので、Rubyの学習は疎かにしがちだと思いますが、実際に実務に入って見ると、Rubyをきちんと理解しておかないと太刀打ち出来ない場面に何度も遭遇します。

ポートフォリオに注力してRailsばかり触っていると、Rubyのピュアコードを書く機会が減ってくるので、学習中はRubyとRailsを交互に往き来しながら学習するようにした方が良かったかもしれません。


まとめ

未経験がエンジニア転職する上で、押さえておくべきポイントをまとめました。


  • 未経験エンジニアに求められるのは「自走力」の高さ

  • オリジナルのポートフォリオの制作は「自走力」の証明になる

  • ブログでのアウトプットも有効

  • 「自己分析」と「企業分析」も怠らない事

  • 言語は自分のやりたい仕事の軸に選ぶ

  • モチベーションを自身の意思だけでコントロールするのは至難な技

  • 毎日の継続や、周りへの宣言で、モチベーションの影響されない学習習慣を身に付ける

  • お金が出せるなら、プログラミングスクールはお勧め(学習期間を圧縮出来る)

  • お金が出せなくても、サービスを組み合わせれば独学も不可能では無い

最近、エンジニアの有効求人倍率が約7倍になったというニュースがありましたが、それでも未経験からエンジニアへの転職は、楽ではありません。

でも、日々正しい戦略の元、努力を積み重ねて行けば、必ずなれると考えています。

この記事が、どこまで参考になるか分かりませんが、多くの人の役に立てば嬉しいです。

こんなに文章書く気は無かったですが、気づけばめちゃくちゃ長文になってました(笑)

ここまで、読んで頂いて、ありがとうございました!