はじめに
こんにちは。ゆうと申します。
今回の記事を書くにあたりまして前置きとして、決して、 「この通りにやれば効率よく転職できる!」 みたいな感じのスマートなものではなく、 「泥臭くもがき、苦しんだ記録」 として記しています。ですので、時には反面教師にしつつ、参考にできる部分がございましたら参考にしていただくといった形でお読みいただければ幸いだと思っております。
今回はこれからプログラマー/エンジニアとしてWeb企業へ転職を目指されている方を応援するため、私自身、知識ゼロの状態から学習をスタートし転職するまでの過程を踏まえたロードマップを共有します。
自己紹介
- 年齢:26歳
- 学歴:私立理系大学中退
- 職歴:電話営業(契約社員を1年間)→テレアポスタッフ(アルバイト)
- プログラミング経験:一切なし
大学4年生の途中で休学して訪問営業の仕事をしていて、復学して研究(物理化学分野)を続けるか、興味のあった医薬の分野を0から学び直すかどうかで悩んだ挙句、退学して再受験勉強をする事を決心しました。
はじめは薬学部を目指していましたが、勉強を進める中で医学の分野にも興味を持つようになり、医学部再受験を志して半年ほど受験勉強に取り組んでいたものの、勉強と生活維持の両立が困難だった為に断念(挫折) しました。当時は後先考えずに、「こうしたい!」って決めたら全てをかなぐり捨ててでも挑戦したい って感じで、若気の至りだとつくづく感じております。
その後、特に目標もなく、テレアポのアルバイトをする傍ら、商品をただ提供するだけではなく、「お客様に喜んで使ってもらえるサービスを作ってみたい!」 と、日に日に強く感じるようになり、プログラミングを独学で学び始めました。その中で、元々からの、「好きな分野を研究したい気持ち」は残っていたのか、技術に対する興味・関心も強くなり、エンジニアとして技術を研究しながら、仕事として価値を生んでいきたいと思い、エンジニアになることを目指しました。
と、まぁ崇高な目的にも聞こえそうですが、私自身、元々超がつくほど怠惰な人間だったのもあり、いずれは自分自身が楽をできるるようなシステムをつくったり、スーツをビシッと決める必要がなく、働く時間や場所の融通が利きやすい居心地のいい環境で働きたいなと思っていたところも正直あります。
また、昨今のコロナの状況を鑑みると、業界によっては、いつ仕事がなくなってしまってもおかしくない状態(特に飲食業界や営業職など..)だったので、しっかりとスキルを持った上で比較的フレキシブルに働けるIT業界に憧れがあったのもございます。
追記
Railsチュートリアルの公式YouTubeチャンネルに出演させていただきました!!
転職先での待遇
給料(年収):350万ほど
ノートPC(Macbook)・ディスプレイ支給
社会保険などの福利厚生完備
フルリモートワーク
フロントエンド・バックエンド・インフラ(クラウド)一気通貫して関われる環境
なぜスクールに通わなかったか?
スクールに通わなかった理由は大きく2点あります。
1つ目が、UdemyやRailsチュートリアルなどの安価で質の高い学習サイトがオンライン上に豊富に存在していたので、独学でも十分可能だと感じたためです。
2つ目が、高額なスクールに投資する資金が純粋になかった為です。
これは上記の二つの理由を合わせた形になりますが、スクールの教材よりも安価で良質な教材に投資した方が圧倒的に効率がいいと当時は判断した為です。(結果的に一年半かかっているので、資金に余裕がある方は転職支援付きのスクールも検討していただく事をおすすめ致します。)
また、スクールとは違って、独学だと 「何を学ぶか?」 であったり、 「どの期間どのくらいの勉強量でロードマップを組むのか?」 などを全部自分で情報収集した上で判断しなければいけません。
タイピング練習について
これを読んでいる方で、これからエンジニア転職を目指す中で、現時点で「タイピングに自信がない。」あるいは、「タッチタイピングがまだ出来ない。」という方がいれば、何よりも優先して今すぐタイピング練習に取り組んでください。
私もまさしく、勉強しようと決めた当初はタッチタイピングが一切出来ませんでした。
そんな中、色々なエンジニア転職のロードマップ的なブログ記事を読んで書いてあったのが、「タッチタイピングが出来ないと業務についていけない」というものでした。(以下の記事を参照)
知識のない未経験の状態で、タイピングも遅い、すなわち仕事のスピードまでも遅くなってビハインドを背負ってしまうのはまずいので、ここは時間を確保しても大丈夫ですので、確実にタッチタイピングを習得して、ある程度の速度で文字が打てるようになっておきましょう。
プログラミングの勉強は、その後でも全然大丈夫です。むしろ、タイピングが早く出来るようになっておくと、後々の効率がかなり上がって色々恩恵を受ける事ができます!
いろいろ調べた中だと、寿司打というタイピング練習ソフトで高級10,000円コースでお得を獲得できるようになるとひとまずは大丈夫です。余裕がある方はエンジニアの大体の平均15,000円(5,000円お得)のスコアを目指してみると良いでしょう。
最後に当時使用していたタイピング練習教材を載せておきます。
タッチタイピングの習得
・【タイピングソフト付】仕事がガンガン速くなる!タッチタイピング[超入門]10日間マスター講座[touch typing]
こちらはUdemyの教材になります。この教材が本当に初心者に寄り添って作られているので、挫折する事なく続けられました。こちら一通り見てタイピング練習すれば確実にタッチタイピングが習得できると思います。
ローマ字タイピング練習
寿司打は先ほど説明に出てきたように上記のスコア到達を目指して、主にスピードの練習として使っていました。一方で、e-typingは間違えずに正確にタイピングをする事がスコアアップで重視されます。スコアとして300くらい出せれば十分かなと思います。ローマ字タイピング練習はこの二つを気分によって使い分けていました。
英語タイピング練習
実際のプログラムのソースコードは英語で書かれているので、英字を打てるようになっておいた方がいいです。色々探しましたが、英字の練習は上記の二つで十分かと思います。特にtyping.ioは実際のプログラムのソースコードをもとにタイピングの練習ができるのでかなり効率よくタイピングのスキルを向上させられます。具体的なスコアとしては、e-typingでは200くらいのスコアが出せれば十分で、typing.ioは特定の言語を選択してwpmで30位出せれば十分です。
学習方法・コンテンツ
・Progate
・Ruby on Rails チュートリアル
・Udemy
・Qiita
・Youtube
・各技術の公式リファレンス(各技術公式の説明書)
・技術書etc
ロードマップ(2020年 9月〜)
(2020年)
9月:基本学習(Progateを使用)
10月:タッチタイピング練習
11月:タッチタイピング練習&Railsチュートリアル
12月:Railsチュートリアル
(2021年)
1月:Railsチュートリアル(3周目まで完了)
2~4月:アプリを作りながらGit/Docker/AWS/CICD/Webの基本概念の学習
4月末~10月末:職業訓練(WEBアプリ・ゲーム開発)
11・12月:PHP/Laravelの学習→応募先企業の課題に取り組む
(2022年)
1月:インターン応募先落選→ポートフォリオアプリの作成
2月:転職活動
3月:内定
思い返すと、気づけば一年半も経っていたのだと思うとどこか感慨深いものがありますね。アルバイトをしながら勉強をするのでも中々大変でしたが、これを経験してみて、家族がいて、フルタイムで働きながらエンジニアに転職するために頑張っている人は本当に凄いなと心から感じました。(そのくらい大変でした..)
9月 基本学習
みなさんご存知のProgateを使っての学習。基本的なプログラムの書き方などを環境構築をせずに手軽に学べるのはとても素晴らしいと思います。実際に取り組んだものと、その時に感じた事などを以下にまとめました。
・HTML&CSSコース(2周)
→中級編道場コースがとにかく難しい
・Java Scriptコース(2周)
→コールバック関数の概念は初めは中々理解できない
・jQueryコース(3周)
→中級編はweb制作でもよく使う機能実装なのでしっかりと理解した
→上級編になると難易度が急に上がる
・sassコース(1周)
→CSSを効率よく書いている感じ
→実際の開発でもよく取り入れられている書き方で、リファクタリングしやすくメンテナンス性が向上するらしい
・Command Lineコース(3周)
→ターミナルの操作を実際にしてみないと1周目はよく分からない
→実際に環境構築やRailsチュートリアルでターミナルをがむしゃらに使って初めて理解できた
・Gitコース(2周)
→Command Line同様に実際にターミナルで使ってみないと初めは中々何をやっているのかイメージできなかった
→自分でターミナルをいじってそこでもう一度復習してみるとかなり理解できた
・SQLコース(1周)
→Railsチュートリアルをする上では1周やって軽く理解できたらオッケー
・Rubyコース(2周)
→1周目はなんとなく理解する程度で大丈夫
→RailsコースやRailsチュートリアルを1周してみてから復習でもう一回した時にかなり理解できた
・Ruby on Railsコース(2周)
→1周目は何をやっているのか全く分からない
→なんとか1周目を終わらせて達成感を感じるだけでOK
→Railsチュートリアルが終わって2周目に取り組むと、かなり理解が深まって良い復習になる
→ただ、2周目でも内容は難しいので、余裕がある人は3周やっといた方が良いと感じた
→ただ、3周目をするタイミングはポートフォリオ作成にまず入ってから、知識があやふやになったり煮詰まった時などに復習するのがベスト
こちら当時やり終えた時にメモとして残していたのですが、見返すと無駄にやりすぎている感が否めないので、効率よくやりたい方は、
①HTML&CSSコース→②Java Scriptコース→③Command Line・Gitコース→④SQLコース→⑤Ruby・Ruby on Railsコース
こんな感じで大丈夫かと思います。
Progateはあくまでも文法やプログラムの流れをざっくり理解できるくらいで大丈夫なので、完璧に理解するまではやり込む必要はないのかなと今は感じております。(難しいと感じたものに関しては2周ほど取り組むくらいでオッケーです!)
なお、バックエンドの言語でPHPを選択された方は、ProgateにはメジャーフレームワークであるLaravelのコースがありませんので、ProgateのPHPコースが終了したらYoutubeかUdemyでわかりやすい教材がありますので、こちらぜひ参考にしていただければと思います。
・PHPからLaravelまで サーバーサイドをとことんやってみよう/Udemy
10・11月 タッチタイピング練習
Progateが終わったあたりで、私自身あまりにもタイピングが遅いことに気が付き、ここの2ヶ月間は上記の通りずっとタイピング練習のみに取り組んでました(^^;)
2020年11月~2021年1月 Railsチュートリアル
みんな大好きRailsチュートリアル。
おそらくプログラミング(特にサーバーサイド言語)の勉強をしている人からすると、1番の挫折ポイントといってもいいほどの初学者殺しの最難関ポイントです。
今思い返すと、Railsチュートリアルに取り掛かったはじめの1ヶ月が一番苦しかった記憶があります。当時は今ほど、「プログラムがどう動いて、どう処理が進んでいるか」なんて全然理解できてなかったので本当に難しかったなぁと感じます。
そんな万里の長城のごとく立ちはだかるRailsチュートリアルですが、もしこれから取り組んでみようと考えてる方で、余裕がある方は動画講座を購入することをおすすめします。正直テキストだけだと理解するのがかなり厳しいと思いますし、大幅に時間をロスして高確率で挫折してしまいます。
何を隠そう、自分もまさにその一人だったので、ここは自己投資だと割り切ってすぐさま動画を購入しました(^^;;)
Railsチュートリアルを学んでみて感じたのが、実際に手を動かしながらリポジトリを作成して1からアプリケーションを立ち上げてデプロイまで一気通貫してハンズオンで取り組めるので、Webアプリ開発の全容を俯瞰的に見れるので、ポートフォリオを作成してデプロイするイメージがしやすくなります。
(補足: 動画ではDRY原則やテスト駆動開発など、実際に開発を行う上での大切な考え方なども丁寧に教えてくれたので、とても興味を持って取り組めました。アプリをただ作るだけではなく、「何故こうなるのか?」 という部分を教えてくれたので、非常に興味を持って取り組む事ができました。勉強する上で興味を持てるかどうかはとても大切だと今は痛感しています。)
具体的な学習手順としては、
1周目はソースコードをコピーしながら、ざっくりと全体を理解するイメージでとにかくスピーディーに一通り作りました。
2周目からは自分のエディタ上で(VSCode etc.)環境構築をして、新規にアプリケーションを立ち上げました。この時はソースコードもコピペせずに全てタイピングしながら進めていきました。
3周目は新たにちょっとした機能を追加してみたりしながら、復習も兼ねてしっかり理解しながら進めていきました。
2~4月:アプリを作りながらGit/Docker/AWS/CICD/Webの基本概念の学習
ここからは、開発に入った時に迷惑をかけないようにGitと、よりレベルの高い企業に受かる為&モダンな開発現場では取り入れられている技術を先んじて学習しておこうと考えて、Docker/AWS/CICDの学習をしました。
Gitは当時は全然理解していませんでしたが、理解出来ていないと開発で苦労すると聞いていたので、作業ブランチを切る→コミット&プッシュ→プルリクエストを出してmainブランチにマージは息するようにできるくらいになっておくと良いかと思います。
Dockerに関しては、初学者が理解するには難しい概念なので、Railsの基礎的な環境構築ができるようになるくらいで留めておきました。
上記の技術の連携は本当に難しくて、私の場合はDockerとCICDツールの連携が当時は精一杯でした。
AWSに当初はデプロイしよう色々サンプルアプリを作って連携をしていたのですが、色々触りすぎて4万円の請求が来たときに怖くなってAWSを触るのをやめて、サクラのVPSにサーバーを切り替えました。
注意
AWSは従量課金制なので、不要なサービスを立ち上げたまま停止をせずに放置してしまうと思わぬ高額な請求が来ることがあります。
とにかく、自分の理解不足もあっての失敗だったので、本当に良い勉強になりました。とにかくそこから恐くなってAWSを触るのを一旦やめました。
GitとDockerに関しては以下のUdemyの教材がとてもわかりやすくておすすめです。
また、当時の私はWebの基本概念や基礎的なコンピューターサイエンスの理解が乏しかったので、書籍を用いてこの辺りの基本的な知識をしっかりと学び直しました。(以下の書籍を参考)
こちら2冊をまずはざっくりと理解できれば勉強を進めていく上で特に困ることはないかと思います。余裕がある方は繰り返し読んでみるのをおすすめします。
特にプロWeb(一冊目)は、開発に入る前に知っていないとまずい内容がわんさか書いてあるので、これからエンジニアになる方の必読書だと私は感じています。
4月末~10月末:職業訓練(WEBアプリ・ゲーム開発)
ここまで読まれた方は、「なぜ、そのまま転職活動せずに職業訓練に?」って、思われたかもしれません。
確かにそうです。「このままあと少しポートフォリオを作って転職活動をした方が効率が良いんじゃないか?」そんなふうに思うかもしれません。
結論を言うと、転職活動という不確定要素から逃げたかったから。というのが当時を思い返すと一番大きい理由だったと思います。
勉強にも行き詰まっており、なのにダラダラと勉強を続けて、いつか転職活動するだろうと期限を決めずに時間だけを無駄に浪費してしまっている状況を打開したい!
そんな思いから職業訓練に応募したのだと今思い返すと一番正直な理由だなと感じております。
よくある、大学生のモラトリアムを延長する為だけに特に目標もなく大学院に進学する"あの現象"が発動したのです。(因みに私は大学を中退しております。)
まぁ、他にもデータベースを連携したアプリ開発を深く学べたり、興味があったゲーム開発を学べるという貴重な機会だったりもしました。(訓練期間中は審査がありますが、給付金を頂けて生活費を賄う事ができたので、アルバイトはせずに一日中プログラミングを学べる状態でもありました。)
訓練校では、はじめの3ヶ月でJava,JSP/Servlet,MySQLを用いたWebアプリケーション開発を学び、残りの3ヶ月でC#,Unityを用いたゲーム開発を学び、チーム実習では複数名でのチーム開発も体験できたので、色々と刺激を貰えて楽しかったです。
余談(職業訓練について)
これを読まれてる方で、現在プログラミングの勉強を独学でしていて、独学に限界を感じているが、金銭的にスクールに通うのが厳しいという初学者の方には、職業訓練校という選択肢もありだと思います。
実際に同じように転職活動を目指して頑張っている人と切磋琢磨できるのは、想像以上に力を貰えます。
また、受講料もかかりませんし、分からないところに関して講師の方に質問することもできるので挫折せずに継続する事ができます。
11・12月:PHP/Laravelの学習→応募先企業の課題に取り組む
そんなモラトリアムも束の間、そろそろ訓練期間も終わり、ようやく転職活動に入るのかと思いきや、いきなりPHP/Laravel?RubyとRailsは??
職業訓練の終了間際、色々とエンジニアやプログラマーの募集要項(この当時はindeedを利用)を正社員・アルバイト関係なく探していたところ、受託兼自社開発のモダンな企業がインターン生を募集しており、指定された課題をクリアすれば経歴とかは特に問わずアルバイトとして採用するとの事でした。
「これはチャンスだ!」
そう思ってすぐさま応募して、面接を受けて課題に取り組みました。
課題の内容としては全部で4段階ありまして、
①Progateの指定のコースを100%にする
②VPSでのサーバー構築
③仕様書を元にPHPを用いて簡易SNSアプリ作成
④仕様書を元にPHP/Laravelを用いて商品登録アプリ作成
こんな感じでした。
この条件を受けて、はじめてPHP/Laravelの勉強を始めました。正直賭けだとは思いましたが、当時は未経験だとこんなチャンスはないと感じて9月頃から課題に取り組みました。
結論から言いますと、約4ヶ月ほど取り組み、④の課題の途中で落とされてしまいました(エンジニア転職の道のりは険しいですね...)
正直、この4つ目の課題は初学者ではかなり厳しいものだなと感じました。(とあるもくもく会で現役のエンジニアの方に課題をみてもらったら初学者がこれを作りきるのは正直キツいと仰ってました。)
就職活動
ようやく就活です。
私は大学を中退しているので、今までちゃんとした就職活動の経験がなかったのもあり、面倒だと感じて何とか楽しようとして結局は痛い目を見る羽目になりました。
ですので、就職活動のやり方を調べるところから始めました。
まずは、未経験エンジニアが面接で聞かれる頻出事項とその対策や、自己紹介を片っぱしから調べてメモにまとめて、徹底的に対策しました。(以下の動画参照)
土台を作ったら、あとは実践あるのみです。
転職サイトはwantedlyか同じようなサービスのGreenが良いのかなと感じます。
就職活動を通していくつか気づいた事がございますので、以下にまとめてみました。
・目安として100エントリーはした方がいい。
・ポートフォリオを作りながらでも就職活動/転職活動をスタートして会社がどういう人材を求めているのかなんとなくで良いので感じておく。
・面接を通して確実に面接が上手くなるので心配しなくても良い。
・面接を通して社長やCTOの方と話すにつれて業界のことに自然と詳しくなる。
・自分なりのエンジニア哲学を持っておこう。
・最初はあえて失敗する程で面接を受ける。
特に最後は私的にかなり重要でして、最初から上手にやろうとすると失敗が怖くなって、私のようにいつまで経っても就職活動に踏み切れず無駄な時間を過ごしてしまうので、まずは失敗しても良いので面接を受けてみましょう!
結果的に私は150社ほどエントリーして、20社程の企業と面談をして4社(SES,受託,SES・受託・自社開発,自社開発)の企業様より本当にありがたいことにご内定を頂き、兼ねてより医療に関心があったのもあり、医療系の自社開発企業の内定を承諾しました。
就職/転職活動に関しては、また別の機会に詳細をお話しできればと思っております。
とにかく、ここは可能な限り時間をとっても良いと思うので、できる限りじっくりと取り組んで貰えたらと思います。時間をかければ確実に面接も上手くなりますし、良い会社にも出逢えます!
終わりに
以上が今回私がエンジニアを目指してプログラミングの勉強を始めてから内定を頂けるまでの過程になります。ここまで貴重なお時間をとって読んで頂きまして本当にありがとうございます。
また、こんな私を採用して頂いた企業様には本当に感謝しております。
今回の私がエンジニアを目指して、転職活動を終えるまでの道のりは、
一見すると合理的でなく無駄な部分も多いかと思います。
所々ではっきりとしたゴールを見失い、色々と寄り道した部分もありました。
ただ、この寄り道がエンジニアとしてキャリアをつくっていく上ですごい大事だと思っております!
目的を達成する為に直接は役に立たなかったけれども、そのプロセスの過程で溜まっていくノウハウ・知識・経験値などが、長い視点でみると、自分の個性をつくってくれたり、レパートリーを増やしてくれると私は思います。
ですので、あまり細かい事を意識せずに、時にはガムシャラに目の前のことにひたすら打ち込んでみるのも良いのかなとは思います。
効率ばかりを意識して出来なかった時に自分を否定して投げ出してしまうぐらいだったら、とにかくどんなに時間がかかっても良いので、まずはしっかりとやり切ってみる事だけ自分と約束して、やってみるだけでも良いのかなと私は感じます。
これを読んで下さったあなたが希望の会社に就職・転職できることを心から願っております。
ありがとうございました。