見出し画像

一人前のWeb系エンジニアになるまでに4500時間の経験が必要!未経験から3ヶ月でフリーランスは罠

どうもこんばんは。エンジニア歴10年超えのnshiraです。今回は、巷でよくある『未経験者でもたった3ヶ月であなたもエンジニア・フリーランスデビュー♪』みたいなものについて、注意喚起をしていきたいと思います。全て主観なので、反論があればコメントください。

未経験から3ヶ月でフリーランスになれるの?

結論から言うと、なれるにはなれます。なれますが、安定して食べていくことは難しいです。せいぜい、ラン●ーズやクラウドワー●スで案件受注して、200時間かけて20万円稼ぐのが関の山です。いや、10万円くらいしか稼げないかな?とにかく、案件を受注できない期間もあるので、ワーキングプア必至です。しかも、納品物の品質が低いのでクレーム率も高いはずです。

レバレ●ーズとか営業会社にフリーランス登録したところで、客先常駐でもまず案件は決まらないと思います。理由は、戦力外だからです。

自社で開発体制が無い会社が社外に案件を発注する場合、求めるものは『プロが作った品質が一定水準以上のシステム』です。これをより安価で作る事を目的に、外部に発注します。社内で開発するエンジニアを長期で抱えるつもりが無い場合、客先常駐という形で外部へ発注します。

その時の最低条件は、実務経験2年以上が大半です。だって、即戦力求めてますから。教育とか勉強しながら仕事するような人を外注で雇うくらいなら、普通に社内にエンジニア作った方が良いですよね。

実務経験一年未満の人の案件は、客先常駐ではかなり決まりにくいです。単体での参加はほぼ無理で、経験者とセット提案が基本です。20代の場合は、スクールや独学で学んだ後にポートフォリオを作ってIT企業に就職することをおすすめします。

「えっ?3ヶ月で一人前になれるの?スクールはいろ!」と思っていた人がいたら、一度冷静になって情報収集して欲しいです。

一人前のWeb系エンジニアの定義

まずは一人前の定義からです。あくまで私の主観ですので、下記とします。

・顧客と打ち合わせができ、会話でシステム要件を汲み取り、提案ベースでの話ができること
・顧客の要望を実現するために必要な技術力を有しており、実装から単体テストまでの必要時間数を経験から割り出す事ができること
・作ったシステムをサーバーにデプロイし、公開・運用ができること
・トラブルが発生した際に、迅速で的確で真摯な対応ができること

以上をLAMP環境で実現できるPHPエンジニアを「一人前のWeb系エンジニア」と定義します。

必要なスキルと習得時間

必要なスキルとそれを「自己の能力のみで実装ができる(=習得)」レベルに至るまでの習得時間の一覧です。実装は勿論ググりながらでOKです。習得時間は個人的な感覚値です。

HTML:300時間
CSS:300時間
JavaScript+jQuery:450時間
PHP:1800時間
MySQL:900時間
Linux:150時間
Apache or nginx:100時間
単体テスト:100時間
脆弱性試験:200時間
負荷試験:100時間
顧客折衝:100時間

ということで、一人前のWeb系エンジニアに必要な経験時間は、計4500時間です。

仕事で習得する場合

これを新卒未経験者(大学でプログラミングの基礎は実施済み、入社後に即実践をやった想定)が仕事で実務経験を積んだと仮定してシミュレーションします。

月間労働日数は20日、実労働時間は月160時間で1日8時間、1日のうち約25%程度はメールなり会議なりでWeb系エンジニアのスキルアップに直結しない時間があるとして、1日6時間15分はWeb系エンジニアのスキルとみなす。

この場合、月の習得経験時間は125時間。年間1500時間。一人前の4500時間÷1500時間はちょうど3。

つまり、実務経験3年で一人前と一致します。感覚値で上記の習得時間をポンポン入力していきましたが、経験2,3年は必要という持論に完全に一致しました。やっぱ、感覚って正しいですね。

独学で習得する場合

フリーランスでやる場合には、仕事を探す必要が出てきます。当然、その時間は自分のスキルにはなりません。また、経験が少ないフリーランスに対するそもそも仕事なんて見つかりません。見つかったとしても、話が流れる事もしょっちゅうあります。また、案件が終わる前に次の案件を取るというのが非常に難しいです。請負開発の場合、常に競合他社との品質・価格競争なのでワーキングプアになりがちです。

『高いけど、是非あなたにお願いしたい!!』と言われるくらいの能力が無ければ、未経験からフリーランスで安定した収益(最低200万円以上)を得る事は難しいでしょう。

また、他の仕事をしながら仕事が終わってからや休みの日に学習するスタイルもあると思います。その場合、せいぜいできて週に10時間だと思います。たまに休むとして月に40時間勉強したとします。年間約500時間です。4500時間を達成するまで9年もかかります。3倍です。

更に言うと、9年で到達することは非常に難しいです。なぜなら、フリーランスや独学の場合には『ベストプラクティス(正解)』や『より良くする方法』がわからないからです。隣に経験豊富な先輩がいる会社で働くのと、フリーランス・独学で働くのとでは、成長率に雲泥の差があります。普通の会社なら、プログラミングしたらソースコードレビューを先輩にしてもらう事ができるので、逐一自分のダメな箇所が見つかります。

もし未経験からWeb系エンジニアになるのであれば、素直に会社員になることをおすすめします。就職して5年〜8年くらい経験してフリーランス・独立される事をおすすめします。

一人前になってからが本番

しかし、Web系エンジニアの世界はまだまだ先が長いです。実務経験3年を積んで見積もりや顧客折衝してみればわかると思いますが、かなり難しいです。特に請負開発なんて受注する場合、見積もりが難易度めちゃくちゃ高いです。チーム開発する場合には、自分をベースに考えるのではなく他人の実装時の工数で見積もる必要があります。また、3人で開発したら開発速度が3倍になるわけではなく、コミュニケーションによるロスなどがあるため2倍〜2.5倍など色んな問題があります。こうした経験は、たかだか必須スキルを手に入れる3年だけだと足りないはずです。

10年以上携わっている私でも、まだまだ勉強が必要だと感じます。技術面でもNoSQLやNode.js、Vue.js、Nuxt.js、kubernetesなどなど…挙げればきりがないくらいにキャッチアップが必要なものが出てきます。ビジネススキルの面でも、顧客折衝もそうだしマネジメント力もそうだし。

どんな仕事でもそうだと思いますが、結局は日々精進なわけです。