ハウテレビジョンのマーケティング部に所属している西田です。
偶然にも会社のAdvent Calenderに参加させていただく機会を得まして、何を書こうかなと思った結果、自分が今の会社に入社するまでにエンジニア就活を齧っていた話をしようと思います。
先にこの話の趣旨をお伝えしますと、タイトルにもあります通り、「未経験からWebエンジニアを目指すならプログラミングスクールには通わなくて良い」です。
なぜエンジニアを目指そうと思ったのか?
結論から申しますと
- 自分の努力次第でどうにでもできそう
- 自分の手でプロダクトを作りたい
- 食いっぱぐれなさそう
の3つが主な理由です。
某文系私大に通っていた私は就職活動に失敗し、1年休学するも次の年の就活はコロナの打撃を受けあと一歩で入れそうだった第一志望の企業も採用活動中止で毎日が不安でした。そんなとき私を前向きな気持ちにさせてくれたのが、当時日本でも大ムーブを巻き起こしていた虹プロです。ご覧になっていた方なら分かると思いますが、何よりも心打たれるのが、彼女たちが挫折から這い上がって成長していく姿です。私が最も応援していたアカリちゃん。最終段階である韓国合宿への切符をつかむも、第一審査のソロステージでは最下位の評価をつけられてしまい、2回最下位の評価をつけられると強制的に敗退となってしまうというプレッシャーと戦っていました。そんな状況でも彼女は諦めず、自分と向き合い、メンバーと向き合い、大きく成長していきました。ステージ3で見せてくれた「Feel Special」は圧巻で、アカリちゃんの成長に私はティッシュ一箱を涙で濡らしました。
残念ながらデビューメンバーには選ばれなかったアカリちゃん。私にとっての一番星はアカリちゃんです。アカリちゃんをデビューメンバーに入れなかったJ. Y. Park、私は今でもお前を許さないぞ。 そんなこんなで前向きになった私はネットや本を読み漁り、エンジニアという職業の選択肢に出会いました。プログラミングに対しては食わず嫌いで距離を置いていたものの、元々絵を書いたり工作したりと自分のアイデアを形にすることが好きだった性格と相俟って、コードを書いてプロダクトを作ること自体に魅力を感じ、かつ根が真面目な自分としては努力すればある程度キャリアの軸を作れそうだと思ったこと、職業の選択肢としても需要が高まっていることから食いっぱぐれることはなさそう、という考えからエンジニア就活を始めることを決めました。
某プログラミングスクールについて(2020年11月当時)
私は親のご協力の元、◯十万(親には本当に圧倒的感謝カンゲキ雨嵐)払って◯コなり社長が運営する某プログラミングスクールの短期集中コースに通いました。
プログラミングスクールに入ってよかったこと
体系的に学べる
プログラミングスクールが独自のカリキュラムを作っているので、自分で一から情報を得るよりも楽に幅広く整った形でプログラミングについて学ぶことができます。
集中しやすい環境がある
プログラミングスクールでは、個人ではなくチームで学習に取り組みます。朝の10時に朝礼を行い、5分間のマインドフルネスを行った後、50分または60分の勉強時間と10分程度のインターバルを繰り返すというスケジュールです。勉強時間の間は個人で学習を進めますが、インターバルの時間には同じチームの人と、その勉強時間の中で何を学んだのか説明し合い、言語化することでインプットとアウトプットの質を高めます。決まった時間が設定されているため、ある程度集中力を保って学習することができます。
プログラミングスクールに入って後悔したこと
誰と同じチームになるかでモチベーションが変わる
当時は「エンジニアは稼げる」なんてブームがあったせいか、同じチームに入った人は全員がそうではありませんが一部「え、本当にやる気ある...?」って人がチームにいたりします。個人的衝撃的だったのは、それまでiPhoneしか触ったことがなく、Zoomの使い方すらまともに分からない人がいたことです(その人は1日目で辞めました)。その他には、他人の時間を気にすることなく"なんでも"質問してくる人や、マイナスな発言をする人もおり、時にはチームと話たくね〜〜〜って思ったこともあります。
わざわざ入らなくても同程度の知識と技術は身につけられる
これが本記事の趣旨であり、プログラミングスクールに通った私だからこそ言えることでもありますが、結論プログラミングスクールに通わなくても、同程度の知識と技術は身につけられると思います。
「具体的に何をすればいいの?」って内容を以下につらつら並べますので、プログラミングスクールの受講を迷われている方はぜひ参考にしてください。(以前社内のドキュメントにまとめたものをほぼコピペしているので、一部読みづらい部分があるかと思いますが、ご了承ください。また素人まとめなので頓珍漢な内容だったら申し訳ないです。)
また以下の内容はこちらの回答も参考に作成しています。
大前提未経験エンジニアが目指すのはwebアプリケーション開発
ここにきて、そもそもエンジニアっていくつか種類があることを説明する必要があるかもしれませんが、ここでは割愛します。(ご存じない方は「エンジニア 種類」でググってください)
プログラミングを独学で学ぶなら、Webアプリケーション開発がおすすめです(プログラミングスクールも取り組むのはWebアプリケーション開発です)。
webアプリケーションとは、インターネットなどのネットワークの仕組みを利用したアプリケーションのことを言います。(例:メルカリ、Youtube、Twitterなど…)
スマホでダウンロードする「アプリ」は「ネイティブアプリケーション」と呼ばれ、厳密には異なるもの。今回取り上げるのはwebアプリケーションの開発です。(ネイティブアプリはWebアプリと似ている部分が多いため、webアプリケーション開発のスキルを身につけることでネティティブアプリケーションの開発にもチャレンジしやすくなる)
プログラミング言語はフロントエンドとバックエンドの2つにわけられます
フロントエンド:Webアプリケーションでユーザーの目に触れる部分。クライアントサイドとも呼ばれる
代表例:HTML/CSS、JavaScript
バックエンド:webアプリケーションでユーザーの目に見えないところで、データ処理やデータベースへの保存など様々な処理を行う部分。
代表例:JavaScript、PHP、Ruby、Python
フロントエンドとバックエンドの両方のプログラミング言語を身につけ、webアプリケーションの開発ができるようになる。
PC一つで行えるので、独学におすすめ。
①初学者におすすめのプログラミング言語
選ぶポイント
- 学習しやすさ
- 環境構築の難易度
- 将来性
- 求人の多さ
❶HTML/CSS
- 厳密に言うとプログラミング言語ではなくマークアップ言語と呼ばれるが、webサイトを作る上では必須
- web上で公開されているwebページのほとんどがHTML/CSSで書かれている
- フロントエンド言語
- 難易度が低く、最も習得しやすい
❷JavaScript
- フロントエンドもバックエンドも両方開発できる
- ブラウザ上で動くプログラミング言語で、2018年には世界で最も使われている言語としてランクインしたほど需要がある
- webサイトに動きをつけられるのが特徴
- 国内外問わずあらゆる人に使用されているため学習環境が整っており教材も豊富
- ブラウザ上に全ての開発環境が揃っているため、学習する上で環境構築がいらない
- フレームワーク(アプリやシステムを作るのに必要な機能があらかじめ用意されたキットのようなもの)、ライブラリ(細かい様々な機能を集約してまとめられたファイル、必要な機能を簡単に実装できる)が豊富で高度な知識や技術がなくても幅広いバリエーションのアプリを開発できる
- 特にReact(JavaScriptのライブラリ)はめちゃくちゃ人気が高くなっているので、セットで学ぶのが良い
❸Ruby
- 日本人のまつもとゆきひろ氏によって開発されたプログラミング言語。
- webアプリの裏側のシステムや動き(バックエンド)を構築するために必要
- 「ストレスなくプログラミングを楽しむ」ことを重視して設計されており、初学者でも直感的に理解しやすい
- 多くの日本人に利用されているため、日本語での情報収集がしやすいのが大きな利点の一つ
- webフレームワーク(アプリやシステムを作るのに必要な機能があらかじめ用意されたキットのようなもの)として「Ruby on Rails」があり、これがまたとても使いやすい。独学でも簡単にwebアプリを作ることが可能、また多くのサービスでも利用されている
- SNSやAPI(異なるアプリ間で一部の機能を共有できる仕組み)の作成、機械学習も行えるなど開発の幅が広い
❹PHP
- 構造がシンプルで理解しやすい
- 他の多くの言語の影響を受けているため、PHPを習得すれば他の言語も学びやすくなる
- 環境構築(手元のPCでweb開発アプリを作るために様々なソフトウェアをインストールする作業)が簡単
- 国内外問わず昔から愛されている言語で将来性もある。日本語教材も豊富で独学でつまづいでもネット上に解決策があることが多い
- フレームワークも豊富
- 求人が非常に多い
❺Python
- シンプルで読みやすく学習しやすい
- ライブラリ(便利なプログラムを一まとめにしたファイル)やフレームワークも非常に多く、効率的かつ簡単に幅広い機能を実装できる
- webアプリやゲームの開発はもちろんのこと、AI、機械学習、データ分析にも適しており、できることの幅が非常に広い
- 人気急上昇中で、求人もどんどん増えている
〜どの言語を選ぶべきか〜
①HTML/CSS、Javascriptは絶対学んだほうがいい
- Webサイトを作る上で必須
②RubyかPHPかPythonか
- データ分析とかAIに興味があるならPython
- 簡単なアプリケーションを作るならRubyかPHPどちらでもいいが、個人的にはRuby on Railsで簡単なアプリケーションを作りやすいのでRubyがおすすめ
~その他おすすめ言語〜
- React:言語ではなくJavaScriptのライブラリ。Facebook(現:Meta)が開発。需要は年々伸びており、習得できると強い。
- Go:バックエンド言語。Googleが開発した言語で、初学者でも理解しやすい構造になっている。
- Swift:Appleが開発した言語。iOS向けのネイティブアプリの開発に適している。
②おすすめの学習の進め方
1. Progate : https://prog-8.com/で基礎を学ぶ。
かわいいイラストが多くて説明もわかりやすく、環境構築も一切不要で実践的に学べる内容なので、未経験でも十分理解できる内容になっている。
無料会員と有料会員の2種類あり、無料会員でも十分学べるが、よりレベルを上げたいなら有料会員になったほうがいい。
月額1078円でそこまで高くない。
HTML /CSS→Javascript→バックエンド言語の順番で各言語の基本的な構造を学ぶ。
次にGit、SQLでアプリケーション開発に便利なツールと、アプリケーション開発をする上で必要なデータベースの基礎知識を学ぶ。
最後にwebアプリケーション講座で、アプリケーション開発全体の流れを理解するとよい。
上記のコースを一通り(最低1周、余裕があれば各コース3周くらい)取り組む。
2. Udemyでよりレベルアップしたwebエンジニア講座を学ぶ
Udemyとは
まずUdemyとは、オンライン学習プラットフォームであり、ビジネス・デザイン・ITから自己啓発・ヨガといった幅広いテーマの講座が掲載されている。
普段は1講座あたり1万円〜2万円で販売されているがが、大体週に1回セールを行っており、最大90%割引しているので大方1000円台〜2000円台で購入することができる。
買い切り型で、一度購入してしまえば無制限でいつでもみることができる。
また講座の先生にも追加料金なく質問することができる。
Udemyおすすめ講座
ウェブ開発入門完全攻略コース - HTML/CSS/JavaScript. プログラミングをはじめて学び創れる人へ!
HTML/CSS、Ruby on Rails、JavaScript、Git、SQLを使い、既存アプリのクローンサイトを作ってWebアプリケーションを作る過程を丁寧に教えてくれる。
Reactに入門した人のためのもっとReactが楽しくなるステップアップコース完全版
React学習に最適。非常にわかりやすく、環境構築せずにReactを学習できる。
【JS】ガチで学びたい人のためのJavaScriptメカニズム
ちょっと高度なJavaScriptを学びたい人向け。サイトにかっこいいアニメーションをつけられる。
3. 自分で1からWebアプリケーションを作ってみる
ProgateやUdemyで作成したwebアプリケーションを参考に、1から自分でWebアプリケーションを作ってみる。
自分で考えて手を動かし、これまでのインプットをアウトプットへとつなげることで大幅に理解を進めることができる
③ポートフォリオを作成しよう
ポートフォリオとは、自分のスキルや実績を対外的にアピールするためのもので、自己PRのようなもの。
ポートフォリオ作成の過程で、自分がどんな機能を作ることができるかなど学習した内容を整理することができ、求人にも使えるので是非作成すると良い。
ポートフォリオを作成する上でおすすめのサイト
RESUME : https://www.resume.id/
初心者でも簡単にポートフォリオを作成できるサイト。他の人の作品も観れるので非常に刺激になる。
その他おすすめの学習本・サイト
- Rubyの開発者まつもとゆきひろ氏監修の定番書籍
- 基礎から応用まで幅広く網羅している
Qiita : https://qiita.com/(本サイト)
エンジニアに関する知識を記録・共有するためのサービス。
初学者は基本的にインプットばかりに陥りがちだが、重要なのはアウトプット。Progate、Udemyなど様々な講座や本でインプットした知識は、一旦自分の言葉で説明できるレベルに落とし込むことがレベルアップの近道になる。その上で便利なのがQiita。記事を書くことを通じて理解度を上げることができ思考の整理につながる。さらには、同じような部分でつまずいた人が、解決策を書いてくれているので、何かつまづいた部分があればQiita内で検索すると解決策をすぐに見つけることができる。
paiza : https://paiza.jp/
paizaはITエンジニア専門の総合求職サイトで、主にはエンジニア就活・転職向けのサイトだが、ProgateやUdemyと同様に講座も設置しており、無料コース・有料コースがある。さらに特筆すべきサービスとしてはスキルを可視化する、paiza独自のスキルチェックテスト。ランクを上げると企業からオファーも貰えることがあり、自分のスキルを把握するのにはうってつけ。
Atcoder:https://atcoder.jp/?lang=ja
webアプリケーション開発とは少し毛色が異なるが、競技プログラミングに挑戦するのもおすすめ。課題が提出され、課題を解くためのプログラムをいかにスピーディーかつ正確に書けるかを勝負するもの。Webアプリケーションを開発する上で直接的な恩恵はないが、競技プログラミングに慣れると高度な処理を実装する場合にも役に立つ場合が多い。成績が良いと、それだけで求人オファーが来るほどメジャーなサービス。是非挑戦してみるとよし。
以上、長々と書き連ねましたがこんなもんでしょうか。
プログラミングの世界は変化のスピードが想像以上に速く、ここに書いた情報の一部はもう古いかもしれません。すみません。
ここまでプログラミングスクールに通わなくても同程度の知識を身につける方法を私なりに書き連ねましたが、高い金払うよりもお得だよってことを伝えたいのではなく、何よりも私が言いたいのは「エンジニアとして稼ぐには自力で勉強し続ける努力と覚悟が必要」だということです。
実際にエンジニア就活をしていた当時、面接で出会った人は皆さん仕事以外でも毎日コードを書かれていたりと努力をされてきた方々ばかりでしたし、ポートフォリオを作る上でも技術が日々アップデートされるため最新の情報をインプットする必要があり、勉強し続けることの重要性を身に染みて感じました。
また、プログラミングスクールにいけば、答えを教えてくれる講師もいるし、まとまったカリキュラムが用意されていて楽ですが、実際にエンジニアとして働くと自分で質問の仕方を考えて自分の力で調べる力も必要です。
もちろんプログラミングスクールを経て優秀なエンジニアとなり有名な企業へと入社される方もたくさんいらっしゃいますし、プログラミングスクール自体を否定するわけでは全くありません。
その上、プログラミングスクールに通った挙句今はプログラミングとは異なる職についている分際で何をほざいているんだと思われるかもしれませんが、本気でWebエンジニアを目指すなら、プログラミングスクールに通おうとするよりもあえて独学の道を選ぶくらいの行動力がないと厳しいと思ったのが正直なところです。
まとめ
- 未経験からWebエンジニアを目指すなら独学するくらいの覚悟が必要
- Udemyと虹プロは神
- アカリちゃんをデビューさせなかったJYPを許すな
いかがでしたでしょうか?
なぜ私がエンジニア就活をここまで熱く語っておいて今は別の職種についているのか、は別の機会に(そんな機会はない)。
また、今私が所属しているハウテレビジョンでは一緒に働いてくださるエンジニアを募集しています。
Slackに推しの画像を流しても許してくれるいい会社です。