未経験からWebエンジニアを目指す人に伝えたいこと
最近、未経験からWebエンジニアを目指そうと思っているんだけどどうだろう? という相談を受けることがあったので文章としてまとめておきます。
- この文章はプログラミングを学んでWebエンジニアになろうとしている人に向けています
- 既にこの業界で働いている人にとっては常識的な内容しか書かれていません
Webエンジニアになるには
そもそもの読者の方達がどのような状況にいるのかによって方針が変わります。
新卒採用
新卒採用の場合は企業が未経験者を積極的に採用をして教育をしてくれるルートがあります。 この点は普通の就職活動をしてエンジニア職として採用されるようにがんばりましょう。
ただし、最近は新卒であっても小学生や中学生の頃からプログラミングの経験を積んできたスーパープログラマーがいます。また、そういった早熟な方達以外にも、大学や高専、専門学校などでプログラミングを専門的に学んできた人たちと就職活動で競うことになります。
未経験からスタートするのであれば、就職活動の前から自分でプログラミングを始めて何か動くものを作り、企業にアピールしましょう。
必要なのは何かを作り上げたという実績です。少なくとも何週間か何ヶ月か掛けて作り上げた作品(Webアプリ、ネイティブアプリ等)があれば、企業はこの人はプログラミングに集中して取り組む適性があると判断することができますし、成果物を見てスキルチェックをすることができます。
大学生の中でも授業をただ受けていた人と、何か自分で作った人がいた時、絶対的に後者の方が有利です。何かプログラミングに打ち込んだ実績(何かの賞を受賞した、プログラミングコンテストのレーティング、学会発表した、GPAがとても良いなど)がなければ、ポートフォリオを作るのがおすすめです。
ある程度プログラミングができるなら、企業でエンジニアインターンをしましょう。できれば長期がおすすめです。多くの場合はアルバイトのような形で企業が時給を払ってくれる場合もあるので、実績作りとアルバイトの一石二鳥なので、機会があるならばぜひやりましょう。
中途採用
中途採用の場合は、経験者採用が主になり、いばらの道です。 もしも他業界からの転職を考えているのであれば、あらかじめWeb開発に関連するスキルを身につける必要があります。
経験者採用とはどういうことかというと、最低でも 新卒未経験エンジニアの一年目終了時点程度のスキルを身につけている と判断できる状態でないと採用されないということです。
もしあなたが超高学歴であったり、地頭がものすごく良いなどの特別な存在であれば未経験であったとしても採用される可能性がありますが、これはかなりの例外ケースです。
全くのプログラミング初心者から始めて、本業の仕事をしながらプログラミングの学習をしつつこの壁を乗り越えるのはかなり大変です。一方で、この壁を乗り越えて一度就職をすれば二社目への転職はグッと楽になります。この壁を乗り越えることが大切です。
学習の方法に関しては、自習であってもプログラミングスクールを利用しても良いと思いますが、近年は プログラミングスクールで制作するレベルのポートフォリオサイトでは見向きされません。 人材市場には有名プログラミングスクールの卒業生が多すぎるため、企業は毎週似たようなポートフォリオサイトを見ています。あなたと同じようなポートフォリオや経歴を持っている人から一歩抜きん出るための差別化をおこないましょう。
おすすめ1: 自分でWebサービスを開発して運用してみましょう
なんでも良いので、自分のWebサービスをリリースして半年から一年程度長期で運用してみましょう。素材はなんでもいいですが、もし日記サービスだとした場合、SNSログインを追加したり、OGPの導入、画像アップロード、カスタムウィジェットの挿入など色んな機能追加を行うことができます。これらを実装できるのであれば他の候補者と差別化できるはずです。
おすすめ2: 受託開発会社での副業をしてみましょう。
もしあなたがRails Tutorialを何周かして、自分でサイトを作ってデプロイできるレベルであれば、あなたを受託開発の副業メンバーとして受け入れてくれる受託開発企業は多くあると思います。そのような企業を探して月60時間くらい働いてみてください。その過程で、業務でのコードの書き方を知ることができますし、コードレビューを受けながら自分の書き方の癖を修正することができます。また、受託開発で作ったサービス自体があなたのポートフォリオになります。
とにかく現在の仕事は続けましょう。 中途での未経験エンジニア転職はかなりハードルが高いので、ただ一通りにプログラミングスクールで学んだだけでは転職成功率 10-20%程度と見込んでおいた方がいいと思います。仮に自分が挙げたような自作サービスの開発・運用、受託開発での副業を行ったのであれば、(企業を選ばなければ)かなりの確率で転職に成功すると思います。
Webエンジニア転職の 最大のリスクは、あなたに適性がなかったというパターン です。例えば、if文やfor文がわからないであるとか、プログラミングの最中に出るエラー文を見ると怒られている気がする、考えをまとめて文章で表現することが苦手、記号の操作が苦手、などの場合はプログラミング自体が得意でない可能性があります。このような場合を避ける上でも、現職を退職するのは辞めておきましょう。
Webエンジニアのよくある勘違い
誤解:プログラミングだけできれば良い
Webエンジニアという仕事は、プログラミングを通じてWebサービスを開発する仕事です。そのため例えばRubyという言語だけを覚えているだけでは仕事になりません。Webサービスにログイン機能をつけるためにはどのような実装をすればいいのか、ということを理解していなければいけませんし、ブラウザがWebサイトを表示するときに何が背後に行われているのかを理解していなければいけません。
プログラミングをするということはあくまで行為であって、それを適用するドメインが存在しています。例えばフロントエンドの開発、バックエンドの開発、iOS/Androidの開発、ゲームの開発、OSなどの低レイヤの開発、データベースの開発、プログラミング言語の開発、など、どの領域に関して開発を行うのかで求められる知識が変わります。もしもWebエンジニアになるのであれば、バックエンドやフロントエンド(またはアプリ開発)のドメイン知識が必要ですし、それらに取り組むことを楽しめないと長続きしません。プログラミングも大事ですが、"Webサービスを開発する"ということに興味がないと向いていません。
また、WebエンジニアはWebサービスを通じてユーザーに価値を届けることで収益を上げています。そのため、自分たちのコードがどのようにユーザーに価値を生み出すのかについて意識する必要があります。Webエンジニアといえども、単にプログラミングをすることだけが求められるわけではなく、ユーザーが求める機能を考え出したり、プロダクトマネージャーやデザイナー、営業と議論をしたり、同僚のエンジニアのコードをレビューしたり、大きな機能開発をする際には設計書を事前に書く、採用活動の中で面接官をするなど、プログラミング以外の仕事もたくさんあります。
誤解:この言語/フレームワークじゃなきゃダメだ
特にバックエンド開発でよくみる話題ですが、Rubyじゃなきゃダメだ、Node.js、Goじゃなきゃダメだ、などはあまり重要な話題ではありません。Webサービスを作るために必要になる機能はどの言語で実装しても共通です。そのため、どんな言語やフレームワークでもWeb開発で使われる機能は、99%実装されています。
言語やフレームワークの差がクリティカルな問題になるのは、業務の中でも高度なケースなので、基本的はどの言語・どのフレームワークであっても大丈夫です。
一つの言語・フレームワークで学習したことは、他の言語やフレームワークでも同じことを実現することができます。例えばRubyで、よく見かけるようなお問い合わせフォームを作ったとします。それを実装するためには、HTTPのPOSTでブラウザから情報を送信して、サーバーでメールを送信して、ブラウザにredirectをかける、などの処理を行う必要があります。一つの言語でそのような実装ができるようになると、他の言語でその機能を実装するときにも、既にどのようなステップが必要なのか知っているので、どう実装すれば良いのか調べることができます。
重要なのは、言語やフレームワークを学ぶということではなく、Webサービスを作るということに関するドメイン知識を学ぶということです。ある機能を作るときに、どのような処理が必要になっているのか、それはなぜか、それは内部でどう実装されているのか、などを理解するようにしましょう。
経験年数を経ると、自然と複数の言語でコードを書くようになります。そのため、最初に何を学ぶのかはそれほど重要ではありません。まずはなんでも良いので、一つの言語を覚えてそれを使ってWebサービスを作れるようになりましょう。それができれば、二つ目以降の言語はその応用です。新しい言語/フレームワークを使って、昔他の言語で作った機能をどう実現するのかを考えてみましょう。
誤解:楽して稼げる
Web系の企業は多くの場合残業時間はそれほど多くないと感じます(概ね20時間/月程度)。ただし、元々技術について好きな人たちがこの職業についているので、余暇の時間を使って熱心なWebエンジニアは新しいライブラリを試したり、趣味のサイトを作ったりしています。業務外で学ぶことが強制されているわけではありませんが、あなたの市場価値は相対的に評価されるので、 技術のことを心底好きでないと、業界上位の企業で採用されることは難しい でしょう。
ただ、一つのスキルを一度身につければその待遇を維持することは簡単だと思います。専門性の高い仕事なので一度働き方を確立してしまえば、プライベートの時間を確保することも容易です。ただし、この業界は技術がどんどん移り変わっていくので、自分の専門に関しては動向を定期的にキャッチアップしていきましょう。
誤解:年収1000万円を狙える
Webエンジニアという仕事は比較的賃金が高い仕事ですが、大体新卒では300-400万円程度がスタートで、経験3年目で400-600、その後は経験5年-20年でも 800万円程度で頭打ちとなるケースが多いです。
一般的なWeb系の企業での年収800万円程度のエンジニアはシニアクラスで、百戦錬磨の強者揃いです。Twitterで見かけるメチャクチャすごいエンジニアであっても大体この辺りだったりします。年収1000万円を超えるのは役員以上というのが多くの場合ではないでしょうか。
正社員としてのWebエンジニアの給与は、他の産業の平均よりは高いですが、他の産業の大手企業と比べて高いと言うわけではありません。むしろ、 スキルのキャッチアップに応じて昇級のペースが早いが、天井も低い というのが実情ではないかと思います。
昇給のペースが早いのはWeb系では使われる技術がかなり共通化されており、スキルのポータビリティが高く、人材の流動性が高いことが挙げられます。転職のたびにスキルに基づいた給与提示があるので、転職をきっかけとした給与見直しにより昇給ペースが早い、という現象が起きています。
一方、フリーランスになった場合、大抵の場合は売上単価が正社員時の1.5倍程度になったりするので、人によっては年収1000-1500万円程度行く人もいます。ただし、契約解除をされるリスクなどを織り込んだ上での価格設定なので、万人に向いた働き方とは言えないと思います。
フリーランスの価格設定に関しては、基本的に企業とフリーランスの間での相対取引なので自分の単価を決めて、その価格で合意してくれる企業が一社でもいればそれで成立するという性質があります。仮に、単価が相場よりも倍以上高かったとしても、そのフリーランスの方でないとできない仕事があり、それを企業が切に求めているならばその単価で合意するでしょう。
フリーランスは即戦力としてのスキルを求めて短期的な参加を要請されることが多いので、既存のスキルを切り売りする傾向にあると思います。もしフリーランスをするならば、自分のキャリアを全て自己コントロールするつもりでやりましょう。
あなたが将来フリーランスとして独立することを考えていたとしても、くれぐれも経験一年程度で独立するなどは考えないでください。あなたが想像する以上に、あなたの実力は十分ではありません。 Developer Roadmapを見て、一般的なバックエンドやフロントエンドのエンジニアに求められるスキルセットを把握してください。 また、エンジニアのコミュニティに参加して、他のエンジニアと交流し自分のスキルを客観的に評価してみてください。他社の採用面接を受けてみてもいいかもしれません。
最近のWebエンジニア界隈にはキャリアの初期にフリーランスになることを喧伝する人たちがいますが、経験不足のフリーランスを雇いたい企業はありません。面談で自分の実力以上のことをアピールすれば一時的に仕事を得ることはできますが、企業からの期待値を越えられないとすぐに契約はなくなります。また、日本のWeb業界の界隈はとても狭いので、誰かの仕事ぶりというのは3-hopで大体辿れてしまいます。きちんと誠実なビジネスをしましょう。
努力しても就職できないかもしれない
そもそも中途未経験者を受け入れる企業は少ない
Web系の企業にとって、未経験者採用を行うというのはかなりの賭けです。未経験の場合、これまでの勤務経歴からプログラミングに関する適性がわからない状態からスタートしますし、業務レベルに達していないメンバーがチームにいると チーム全体の開発スピードが遅くなります。 これは業務未経験の方だと信じられないことかもしれませんが、プログラミングは一定のコード水準を保つ必要があるので、業務レベルに達していないメンバーのコードは全て詳細にチェックしなければいけませんし、場合によっては他のメンバーがその作業分を書き直す必要が出てきます。
また、半年から一年程度メンターとなる先輩エンジニアの時間が失われるということもあります。最終的に本人が 自走できる 状態にならないと手離れしません。つまり、自分で仕事を定義し、作業方針を決め、周囲とコミュニケーションをとり、発生する課題を自己解決しつつ、必要とあれば他の人に助けを乞うことができる状態です。
そのため、受け入れ企業は単にプログラミングを教えるだけでなく、コーチングをしてその人が自主的に思考して行動できるように促す必要があります。これは単に対面しているメンバーの時間だけでなく、どういう育成方針にするのかなど相当綿密な計画が必要になりますし、本人自身の努力が必要です。
特に中途未経験の場合であれば新卒研修のように時期で一斉に研修をおこなうことができないため、研修という研修も用意できないことも多いです。研修を用意するということは、あなたのためだけにカスタマイズして用意するということになります。
未経験者が一人で開発を進めることできるようになるためには半年程度のOJTが必要であり、そのため、中途未経験者の同時にトレーニングできる人数にも限りがあります。
上記の背景から、中途未経験を採用するというのは経営マターであり、そのような中途未経験採用をするという意思決定をしている企業は多くありません。また、そのような企業であっても採用枠は非常に少ないです。未経験者採用の場合は、そもそも企業を選ぶことは難しく、選択肢が多くないということを覚えておいてください。
未経験者採用はポテンシャル採用
企業がそこまでのリスクをとってまで中途未経験採用をするのはポテンシャルを見込んでいて、あなたと心から働きたいと考えているからです。また、そのような採用をしている会社は人手が極端に足りていない企業であることも多いでしょう。
なんにせよ、あなたが出来ることはWebエンジニアとして働く機会があれば、すぐにキャッチアップして会社に貢献できるということを示すことです。そのためにはWebエンジニアとして働く準備のために努力してきたことと、Webサービス作りという仕事が好きであること、その企業で働きたいという熱意を伝えることです。
もしかしたらWebエンジニアが楽で儲かる仕事であるという触れ込みで志望していたのかもしれませんが、そのような甘い期待は捨てましょう。今後3年くらいプライベートの時間を全てプログラミングに注ぎ込む覚悟でいましょう。
先ほど、コーチングについて書きましたが、これには素直さが何よりも大事です。素直でないとコーチングを受けることができないからです。変に驕っていたり、斜に構えている人はコーチングすることができません。お手上げです。謙虚な気持ちを持って、全てを学び直すつもりでいましょう。
それでもダメだったらどうするか
もしもあなたが本当にWebエンジニアになりたいのであれば学習を続けてください。また、不本意な職場であるとしてもまずプログラミングができる職場に就職するか、今の仕事を続けながらプログラミングの経験を積みましょう。
Web開発の仕事は成長産業です。いますぐの就職ができなかったとしても、多くの場合、努力を続ければいつかそれを仕事にすることができると思います。ですが、Webエンジニアの就職のハードルは高いのは事実であり、適性もあるため全ての人が確実に就職できるとは自分も思いません。これは他のどの職業であっても同様です。
まとめ
- 新卒未経験の場合は就職活動を頑張りましょう。インターンやポートフォリオ作りがおすすめです。
- 中途未経験の場合はいばらの道です。自分でWebサービスを作ったり、副業で開発経験を積みましょう。仕事は絶対にやめないでください。
- Webエンジニアに過度な期待を寄せるのはやめましょう。Webエンジニアになった後も学習は続きます。まだスタートラインに立ったばかりです。
- 希望の就職ができなかった時のことも覚悟しておいてください。長期の努力や適性が必要な場合もあります。
Discussion