始めに
こんにちは〜まんじです。
今回は未経験から4ヶ月でウェブエンジニアになるためのロードマップを書いてみたいと思います。
この記事の通りにできれば4ヶ月ぐらい、遅くとも5~6ヶ月目ぐらいにはウェブエンジニアに就職または転職ができると思います。た、多分。。。
結論から書くと、大体以下のような流れと全体像になります。
- プログラミング文法学習: 0.5ヶ月
- ウェブアプリ作成練習: 1.5ヶ月
- ポートフォリオ作成: 1ヶ月
- 仕事へ応募: 1ヶ月
(まあまあハードめ…)
4ヶ月で未経験からウェブエンジニアになるのは結構大変で、きつめのスケジュール感でゴリゴリやる必要があります。
フルタイムの仕事しながらで4ヶ月とかだと多分クソきついというかめちゃくちゃセルフブラックになるので、やや発狂気味になる可能性が高いです。
ただ、1年とかかけて勉強してから〜っていうのは時間が長すぎてかなり微妙なので、本気でウェブエンジニアになろうと決めているなら4ヶ月ぐらいを目標に一気に詰めたほうが良い確率が非常に高いのではないかなーっと思います。
スケジュール感がハードすぎる場合などは5~6ヶ月ぐらいでトライすると良さげです。
まず全体像(ゴール)を把握する
ウェブエンジニアに転職や就職するためにやることは大きく分けて2つです。
- ①ポートフォリオ作成(プログラミング学習しましたぜっていう証拠)
- ②仕事に応募して面接突破(応募しまくって適当に面接を通してもらう)
①ポートフォリオ作成
プログラミング言語自体の勉強は2週間~1ヶ月までに抑えて、ポートフォリオの作成が必要です。(ウェブエンジニアならウェブアプリを作る)
なぜ必要なのかというと、ポートフォリオがあることによって「こいつはちゃんとプログラミングやる気あるんやな」てきな評価をしてもらえるからです。
採用側としても口だけで「プログラミングやりたいです!!!」みたいなことを言われてもちゃんとやる気があるのかは不明なので、ポートフォリオっていう一定量学習した証拠があることでなんかそういうやる気みたいなのと最低限の土台が担保される感じです。
あとはポートフォリオを作る過程で全体的な技術力が向上するので、そういうった意味合いでも重要になります。
下の記事でも書いてるんですけど、何も作らずに勉強だけやって技術力を上げるのは無理ゲーです。
補足
イマドキのミドルベンチャーやメガベンチャーの場合は、ポートフォリオに加えてコーディング試験の突破が必要になることが多いです。
コーディング試験の突破というのはプログラミングを使ってなんか問題を解くやつです。
競技プログラミングとか言われるものに似ていたり、コンピューターサイエンスとアルゴリズムらへんにも含まれます。
※ ミドルベンチャーとかメガベンチャーってのは、DeNAとか、サイバーエージェントとか、Sansanとか、freeeとか
コーディング試験の勉強は、paizaとかAtCoderとかleetcode(英語だけど)あたりで練習するのがおすすめです。
②仕事に応募して面接突破
仕事に応募して面接を突破するってのは、分解すると応募して書類選考に通るという作業と面接を突破するという作業に細分化できます。
- 仕事に応募: いわゆる良い感じの企業を探して求人に応募して書類選考突破
- 面接突破: 面接で落とされないように多少の面接対策をする
仕事の応募に関しては、普通の仕事と同じで履歴書書いてポートフォリオのURLなりを貼り付けて、ひたすら応募しまくればOKです。
注意点としては、未経験ウェルカムブラックSESとかにつかまらないことやウェブ系とSIer系らへんの違いがちゃんと分かっている必要性があります。
面接突破に関しては、なぜウェブエンジニアをやりたいのかなどの理由を自分の言葉で言えたり技術的な質問がされるので、そこの対策をする必要があります。
個人的には変な気持ち悪い理由(ITが好きで〜みたいなやつ)じゃなくて、シンプルにリモートしやすいしスキルも仕事するとつきやすいしプログラミングをやってみたら意外と楽しいし合うと分かったから〜とかそこらへんの理由で十分だとは思ってます。
応募する会社のプロダクトに興味があるとかも、純粋に興味があるケースなら動機として良い感じです。
0からウェブエンジニアになるためにやること4STEP
大体こんな感じの手順でやればいいと思うよーってことで4STEPで書いてみます。
STEP1. プログラミングの文法習得(0.5ヶ月)
まずはプログラミング言語の文法を習得する必要があります。
期間の目安としては2週間程度で、深い理解度ではなくていいのでとりあえずざーっとやり終えたいです。
以下の部分を2週間前後でなんとなく把握しておくと良さげです。
- 変数
- 基本的な型(文字列、数値、真偽値、配列、オブジェクト)
- 分岐処理(if else, switch)
- メソッド(関数)
- ループ処理(for, while)
最初から文法を完璧ゴリゴリに理解して使いこなすのは無理なので、自分の中でコピペして処理が追えるぐらいなら十分だと思います。
例えば、「このループの中のこのifがn回目にループから抜けてるんだな」みたいなことが分かっているような状態です。
変数や配列やオブジェクトのスコープや参照などの後々必要にはなるけど最初は分からなくて問題ないようなことは気にせずにある程度の理解で進めていくのが大事です。
注意点として、たまにプログラミング言語自体の学習を長くやっちゃう人がいるんですけど、微妙です。
プログラミング言語は極めようとすると時間がかかりすぎるし、そもそも使ってると勝手に理解が深まるっていう側面があるので、ある程度の理解でコピペしてでもいいから実際に使っていくほうがプログラミング言語の理解っていう点においても重要です。
具体的なアクション
ドットインストールでポートフォリオに使う言語の入門講座をやれば十分です。
他にもいろいろ教材はありますが、本当になんでもよくて、ドットインストールを1~2か月ぐらい契約して必要な最低限の部分だけやってしまえば良いと思います。
注意点としては、真面目にいろんな講座とかをやりすぎないで、最低限のところでちゃっちゃと次にいくのが重要です。(ある程度必要な部分だけやればOK)
繰り返しなんですけど、プログラミング言語の理解はウェブアプリ作ってたりポートフォリオ作ってたりすれば勝手に深まっていきます。
STEP2. ウェブアプリ作成(1.5ヶ月)
プログラミング言語の文法を適当に学んだら、次はウェブアプリの作成にいきなり取り掛かりましょう。
最初からドキュメント読んだり英語のチュートリアルや英語で解説されているものでやるのはかなりきついので、最初はKindleなどで1冊「TODOアプリが作れる本」などのコンセプトの内容を真似して作っていくのがおすすめです。
この段階でも必死に覚えたり反復したりしたところでどうせ理解できないので、それなりの理解でコピペしつつ修正が必要な部分は書き直してとりあえず作り終えることが重要です。
あとできればURL取得してAWSでもVPSでもvercelでもHerokuでもFirebaseでもなんでもいいので、デプロイもできたほうがいいです。
理由としては、ウェブアプリの制作工程として単純に勉強になるのと、ポートフォリオを提出する際にも役立つからです。
その他の注意事項としては、無思考でコピペはできるだけ減らして、理解しようと頑張りつつコピペして修正するのが大事だと思われます。
本当にただコピペするだけだと意味ないんですが、ただここは文字に起こすのが難しい感覚的な部分です。
全て完璧に理解していくのは無理なのである程度はコピペ感はでるものの、かと言ってもコピペすぎても、それは微妙みたいな。。。
ある程度のコピペは許容しつつも、頑張って理解しようとするのが大事カナーって思います。
AIにも適当につっこんで聞きつつ調べながらやると良さげです。
具体的なアクション
↑みたいな感じのテイストの本を1冊選んで、それを真似していきましょう。
画像の本はVueなんですけど、最近のフロントエンドならTypeScript*Reactがおすすめで、バックエンドでいくならGoとなんかフレームワーク(Ginとか…?シラナイ…)あたりが個人的におすすめです。
なんかしらハンズオン系の書籍はAmazonにあるので(Kindle unlimitedとかプライムリーディングとか1000円ぐらいのやつでOK)、それを買ってとりあえず真似して作っていきましょう。
真似して作っていっていて出てきた不明点や分からない部分は都度勉強していけば、アウトプットベースでインプットできるので効率が良いです。
例えば、Reactやってて「型ってなんだ?」「このTってなんだ?」とか疑問に思ったら都度ググったりAIに聞いて調べていくようなイメージです。
なんにせよ、まずはlocalhostで動くシンプルなTODOアプリっぽいもの(テーマはなんでもOK)を作って、それをAWSでもVPSでもいいのでどっかのサーバーにデプロイしてインターネットに公開することを目標にしましょう。
STEP3. ポートフォリオ作成(1ヶ月)
テーマ決めをして、STEP1と2で使ってきた(勉強してきた)プログラミング言語とフレームワークをベースにポートフォリオを作っていきましょう。
目安の期間としては1ヶ月程度です。(が、かなりきついとは思います。)
STEP2で多少なりウェブアプリの制作工程は分かっているはずなので、ググる時間は以前よりも減っているはずです。
ここでいろいろ技術的な部分に手を広げていくと終わらなくなるので、ある程度は妥協するか、それか一部だけ勉強して取り入れようとしてみるかぐらいのスタンスで良いと思います。
最近だと、AWSのEC2にフロントエンドはReactでDocker使って開発してバックエンドもAPI立てて〜みたくやる人もまあまあいます。
が、個人的にはフロントエンドならReactだけでも良いと思いますし、バックエンドならDjangoとかFlask(Python)のMPAと言われる昔ながらのウェブアプリで全然良いと思います。
レベルの高い会社を除いて、ぶっちゃけ最初からそこまでは求められていないのと、単純に広く浅くなりすぎてしまう場合も多いからです。
具体的なアクション
ポートフォリオを作る段階では本や教材をやるというよりかは、STEP2で購入した本で作ったアプリとかの機能を改良したり作ったものをベースに別の機能を追加するなどがおすすめです。
自分も最初はPythonとFlaskでTODOアプリのようなものを作って、それをAmazonをスクレイピングした結果を表示するアプリみたく改良して、それをポートフォリオにしました。
新しい言語とか新しいフレームワークとかに手を広げるよりも、ウェブアプリ作成で使った言語とフレームワークと最低限のその周辺技術だけを使ってポートフォリオを作っていくのがおすすめです。
フロントエンドでもバックエンドでも最低限ここらへんが入ってれば良い気がします。
- 最低限の見た目(CSSの問題)
- どこかしらにホスティングされている(デプロイ)
- 何かしらデータベースを使ってる
- 実務で使われてる言語とフレームワークを使ってる(TypeScript*Reactみたいな感じ)
- 言語化できる何かしらの機能があってウェブアプリとしてなんか成立しそうな雰囲気がする
- 例えば、自分が作ったけど放置してるこれ(https://kujira-seo.com/site-analysis)みたいな感じ
余談なんですけど、自分が作って一部の機能壊れてて放置してるこれぐらいがバックエンドが雑魚でも1人で作れれば十分だと思います。
最低限のUIで多少なり使える機能があるってのが個人的には大事だと思ってます。
STEP4. 仕事へ応募(1ヶ月)
STEP3でポートフォリオがある程度形になったら実際に仕事へ応募していきましょう。
ここでよく出てくるのが以下のような意見というかマインドというか考え方です。
「もっとブラッシュアップしてから応募します!」
「まだ実務レベルには足りないと思うので引き続き勉強します🙇(土下座)」
「いや自分はまだ実務レベルじゃないので・・・」
昔の自分もまさにこんな感じだったんですけど、すごく微妙です。
実際のとこ、ブラッシュアップとかをしていくとそもそもキリがないのと、どんだけ1人で頑張ってアプリ作っていても実務レベルにはなりません。
具体的には、実務レベルには足りないみたいなのはそもそもいくら勉強したところで実務(労働)で求められるプログラミングは自分1人でやるプログラミングと少し質が違うってのがあります。
なのでポートフォリオがあってそれがデプロイできているならもうその状態で応募していってしまって現場からのフィードバックなどを得て改善をするなり実力が不足していても入ってなんとかしたほうが時間(お金)の節約になります。
- 1日休日にプログラミングの勉強を1人でしている場合 ⇒ 無給でしかも明確な指針もない、不安!!!
- 1日プログラミングで働いた場合 ⇒ 時給1000円なら少なくとも8000円は出る、現場のエンジニアからのレビューありきでコードが勉強しながらお金をもらいながら書ける
どっちがいいのかは一目瞭然です。
ここは完全にマインドの問題なので、本当にさっさと実務に入ってしまうほうがいいです。
ちなみにここで大事なのは、とにかく応募して面接までいくことです。
面接までいければもし落ち続けた場合でも不足点が雰囲気で分かるので、学習し直すにしても必要な部分を学んでいけます。
具体的なアクション
ある程度ポートフォリオが形になったら、さっさと会社を調べて、さっさと応募していくことが本当に重要です。
もうこれ以上でも以下でもなくて、応募できる最低の部分に到達したら応募ゲーとにかく始めることが大事というか、もうそれしかないってぐらい大事です。
「いやでもまだ・・・」
って言いたくなるのは昔の自分もそうだったから分かるんですけど、それ言ってるといつまでも終わらないので落ちるつもりでとりあえず自分の第一希望とかじゃない会社からさっさと応募して応募することに慣れていくことが重要です。
その他: 自分がウェブエンジニアをやる前にあった疑問点
疑問点?不安点?もひたすら書いておこうと思います。
疑問1. 最近のウェブエンジニアのポートフォリオのレベルは上がってるって聞いて不安
答え: 実際にリアルの現場にいけば普通に雑魚がいるので大丈夫
ウェブエンジニアがフルリモートできたりフリーランスなりやすかったり手に職がついたり年収も平均と比べると悪くないっていう側面で人気なんですけど、ウェブエンジニアって言ってもただのそこらへんにいる平凡なサラリーマンが大半です。
最初は周りがすごそうに見えたり、すごい人ばっかだと錯覚して自滅しがちなんですけど、自分で自滅するのはもったいないというか80%ぐらいは普通のおじさんなので大丈夫です。
ただ、普通の水準でやっているとそこらへんの普通と同じぐらいの並びになるので、そこは気をつけないといけないかもしれません。
*普通にクソ優秀だったり、労働時間が長くて開発時間が長い勤勉厨、ガチ勢もいる
疑問2. ポートフォリオの数は1つよりも2つがいいのか?
答え: 1つでいい
2つあっても採用者側はそんなに見きれないし、そもそも限られた採用判断の時間だと1個のウェブアプリで十分です。
ただ当然のことながら、1個がレベル4よりも2個がレベル4のほうが評価は高くなると思いますが、2個作ったから評価が2倍になるかというとそんなことはないです。
労力とリターンの比例が1個をそれなりにちゃんとするほうがコスパがいい可能性が非常に高いです。
疑問3. 英語は必須なのか?
答え: 必須ではないけど、できる人は英語は普通に読み書きできる
ウェブエンジニアをするとドキュメントとかgithubのissueとか海外のサイトやスタックオーバーフローをみる機会が圧倒的に増えるので、基本的に英語は読み書きがそこそこできるのが好ましいです。
だだ最初はぶっちゃけdeepLだけで十分なのと、やりながら本当に必要を感じ始めたら英語も勉強すればいいってだけだとは思います。
余談としては、いわゆるそこそこ技術力があるっぽい感じの人はかなり高い確率で英語ができるか、そもそもグローバル企業出身だったりもうなんていうか土台から優秀という現実はあります。
疑問4. ウェブエンジニアになってからも勉強し続けないといけないのか
答え: できる人や収入が高い人は勉強時間や開発時間やその他自己研鑽の時間が長い
これはウェブエンジニアに限らないと思いますが、普通に普通な年収とか人生自由度でいいなら周りと同じように平均的な時間の使い方をすると大体そこらへんに落ち着きます。
ただ、一定期間で一気に実力を伸ばしたい場合や収入を上げちゃいたい場合や人生自由度を上げちゃいたい場合なんかには、特に最初の1~2年は思いっきり勉強すると自分の理想っぽい状態に近づくのが早くなります。
「みんな勉強しているのか」とか「エンジニアはこうあるべきだ!」って感じのやつに関してはそもそもそんなのはないというか、別に個人の自由で、良くも悪くもただ自分の待遇へフィードバックが来るだけです。
勉強しまくって技術力が高ければ良い待遇が得やすいけど、勉強を全くしないでチーム内でも底辺の地位ならそれ相応の扱いを受けるだけです。
疑問5. 実務レベルとは
答え: 普通に職場の平均ぐらいの技術偏差値と遂行能力があって労働できるレベル
実務レベルって言っても大体現場で1年ぐらいそこそこがんばって仕事してれば身につきます。
一方でいくら自分1人で勉強しても実務レベルにはなりにくいです。(コードの複雑さとかアーキテクチャとかが個人でやるよりもやっぱりもっと複雑)
なので実務レベルになるには〜みたいなのはそもそも基本的には無理で、実務に入ってそこで雰囲気を知って慣れていくしかないです。
まとめ
ロードマップって言っても「プログラミングの基礎文法をさくっと適当に勉強してウェブアプリの作り方を学んで作って、それらの学んだことをポートフォリオに入れて仕事に応募しまくる」という1行の記事でした。
細かい方針などの道筋が見えない場合にはメンターをつけるなどしてお金で時間を買って、将来的にお金をむしろ多く回収するみたいな戦略もありだと思います。
実際、完全に独学で誰からも教えや導きがない状態で進めるのは大変です。
個人的にはウェブアプリを学んで作る部分と、ポートフォリオを作るところが1番大変だった気がしますが、そこを乗り越えるともはや仕事応募&面接ゲーです。
つらい時はなんでウェブエンジニアをしたいのか(年収、自由度、スキル、将来性、らへん・・・?)などを改めて思い出しつつやると良いと思います。
ぶっちゃけ最初の勉強シーズンと実務1~2年目は普通にきついと感じることが多いです。
ファイトだああ