「フリーランスエンジニアになりたいけど、スキル不足だったらどうなっちゃうんだろう」
こんな悩みはないだろうか?
筆者はフリーランスエンジニアとして2回活動した経験がある。1回目はエンジニアを始めて3年目の時だ。そして2回目はエンジニアを始めて7年目の時だ。この2回の経験からスキルの有無によって、フリーランスエンジニアとしての活動が大きく異なることを肌身を持って実感した。
具体的には、スキル不足な状態でフリーランスになると短期的にも長期的にも厳しいということだ。逆に、スキルが十分にある状態であればフリーランスとして活動することのメリットはとても大きい。
そこで、この記事ではスキルが足りない状態で背伸びをしてフリーランスエンジニアになるとどうなるかを実体験をベースに解説する。
この記事が筆者のように辛いフリーランス活動を経験する人を減らすことに貢献できたら光栄だ。
①すぐに契約を切られるストレスに押し潰されそうになる
まず「すぐに契約を切られるストレスに押し潰されそうになる」点についてだ。
実際に筆者は次のような状況に陥った。当時エンジニア3年目でフリーランスになった。2つの案件を掛け持ちしていて、それぞれの報酬は月30万円だった。この状況で一つでも案件を切られると、30万円を失うことになり生活に多大な支障が出てきてしまう。そこで毎日ビクビクしながら業務を行うと同時に、常に切られた場合に備えて新しい案件を探す時間をとっていた。その結果、毎朝寝ても寝ても疲れが取れない状況が続き、朝シャワーを浴びる時にため息が止まらなかった。
スキル不足の場合は、特に簡単に契約を打ち切られる可能性がある。そのため、こう言った状況になりがちだ。
なぜなら、スキルが高くないエンジニアの場合、クライアントとしては以下のような状況になるからだ。
新規に代わりの人を採用するのが容易
まず一つ目の「新規の採用が容易」についてだ。
フリーランスエンジニアのスキルがそこまで高くない場合は、フリーランスの求人市場から同じようなエンジニアを見つけることが簡単だ。なぜなら、他にも同じようなことができるフリーランスエンジニアはたくさんいるはずだからだ。
新規に採用した人がキャッチアップするコストがそこまで高くない
次に二つ目の「キャッチアップコストが高くない」についてだ。
フリーランスエンジニアのスキルがそこまで高くない場合は、人員交代してもキャッチアップのコストは高くないと認識されやすい。なぜなら、プロジェクトの文脈をしっかり認識していないとできない案件をお願いしているわけではないからだ。
逆にどういうエンジニアがキャッチアップコストが高いと思われるかというと、以下の2つの方向性がある。
Aについては、要するにビジネスサイドと要件を一緒に考えていくことができるエンジニアと言える。彼らがいなければ、ビジネス要件をブラッシュアップすることが難しくなり、またビジネス要件をシステム要件に落とし込んでいくスピードが遅くなり、プロジェクトの進捗が長期的に悪くなってしまうだろう。
Bについては、システムレベルやコードレベルのアーキテクチャなどの設計を行うエンジニアだ。彼らがいなければ、設計意図に沿っていない改修を入れてしまいパフォーマンスが出なかったり、バグが起きやすくなったりしてしまうだろう。
以上のように、「採用コスト」と「キャッチアップコスト」という2つの理由から、クライアントサイドにコストの見直しが入ると簡単に契約が切られる可能性がある。
②単価が低いので長時間労働になりワークライフバランスが激崩れ
次に「単価が低いので長時間労働になりワークライフバランスが激崩れ」についてだ。
筆者は最初にフリーランスになった時、2つの案件を掛け持ちしていて平日は1日に13〜14時間程度働いていた。また週末も自分の勉強のために5〜6時間勉強や案件の事前準備などをしていた。その結果、ほとんど休んだりリフレッシュする時間がなくなり肉体的にしんどい状況が続いた。
当時は週2. 5日稼働の案件を2つ行なっていて、両方ともスタートアップにエンジニアとして参画していた。そして、両方とも筆者以外のエンジニアは10〜20年程度の経験があるエンジニアの方に混じってコードを書いていた。(筆者は3年目)
その結果、周りの出しているアウトプットと自分が出せているアウトプットの質・量ともに大きな開きがあることを感じた。これに対して、最初はかなり焦った。そして、時間をそれぞれプラスアルファで使うことで補おうと考えたのだった。
スキル不足の場合は特にこう言った状況に陥りやすい。
前章で述べた契約終了のリスクに備える方法の一つとして、案件を掛け持ちすることが考えられる。すると、長時間労働に陥りがちになり、ワークライフバランスが崩れてしまう。
なぜなら、スキル不足のエンジニアを週2稼働で雇ってくれる案件があまりないからだ。そのため、良くても週3の案件を2つ掛け持ちにするか、悪いとそれ以上の案件を掛け持ちすることになる。
また、週2の案件と週3の案件を掛け持つことができた場合でも安心はできない。なぜなら、各案件で周りのレベルの高い人たちに合わせてアウトプットを出そうとして、契約時間以上に働いてしまう可能性もあるからだ。例えば、「アウトプット不足で契約終了」にならないように、週3の案件でもレベルの高い人たちに合わせてアウトプットを出そうとしてしまったりすると、途端に時間が足りなくなる。
③技術的な挑戦が出来ないのでスキルがなかなか伸びない
次に、「技術的な挑戦が出来ないのでスキルがなかなか伸びない」についてだ。
基本的にフリーランスエンジニアが任せてもらえる案件は、そのエンジニアの成長を加味したものではないという前提を抑えておきたい。なぜなら、そういった案件は社内の正社員のエンジニアに任せた方が組織の中長期的な成長につながると言えるからだ。
それに加えて、スキルが不足しているフリーランスエンジニアに関しては、なおさら技術的な挑戦ができる案件は回ってこないだろう。一般論として、スキル不足のエンジニアに挑戦させる場合は、伴走としてよりレベルが高いエンジニアをサポートにつける必要がある。しかし、これがフリーランスエンジニアの場合は、わざわざ挑戦させてそのために社内のリソースを使うという判断はしづらい。なぜなら、それは組織の中長期的な成長にはつながらないと言えるからだ。
実際、筆者が最初にフリーランスを始めた時も行なっていたのは、LPの作成(HTML/CSS)かバグの調査と解消といった守りの案件が多かった。
新機能の開発や設計などの上流工程を目指したいエンジニアの方には、ここで述べたことはぜひ頭の片隅に入れておいてほしい。
④複数案件の掛け持ちでミスが連発するという悪循環に陥る
次に、「複数案件の掛け持ちでミスが連発するという悪循環に陥る」についてだ。
1章で、契約終了のリスクヘッジのために複数案件の掛け持ちを挙げた。ただし、これをやると短期的にワークライフバランスが崩れるリスクだけではなく、中長期的なリスクもあることを述べる。
スキル不足の状態で複数案件を掛け持ちすると、ワークライフバランスを崩しがちになることは前述した。その状況になると、一刻も早くタスクを消化したいという気持ちになってくるだろう。
すると、じっくりと考えを深めて作業をするというのが難しくなる。なぜなら、一見すると考えるという作業は何も進めていないように感じてしまいがちだからだ。
その結果、本来であればじっくり考える必要があるタスクでもあまり深く考えず対応してしまう。すると、ミスが連発し、バグ修正などの追加タスクが発生する。そして最終的に自分のアウトプットが少なくなってしまい、より余剰時間を使って作業をするか、成果の低い人と認識されて契約が終わるという悪循環に陥る可能性がある。
実際、筆者も自分の実力より圧倒的に高いメンバーに混じって複数の案件を行なっていた時この状況に陥った。当時は、とにかく自分のプライベートの時間がほとんどなかったので、簡単に見えるタスクはどんどん流れ作業でやっていき、タスクを「こなしていく」という感覚が強かった。
その結果、最も初歩的な部分では、チームのコーディング規約に沿った実装ができていなかった。他にも、Rails案件をやっていた時にRailsの書き方に沿ったコーディングができていなかったために、大量の初歩的なレビュー指摘をもらった。さらに最悪なのは、ローカル環境でテストのために書いたコードをそのままリリースしてしまい大量のバグとユーザからの問い合わせをもらってしまったことがあった。
⑤専門領域が全然伸びない
最後に、「専門領域が全然伸びない」についてだ。
フリーランスエンジニアであれば、当然エンジニアリングをすることを求められる。そしてそれ以外の領域については挑戦することが難しい。
この点がネックであると感じたのは、1回目のフリーランスエンジニアを経験し、その後フリーランスをする前に勤めていた会社に出戻りで復職した時のことだ。
1回目のフリーランスになる前、その会社では自分と同い年のエンジニアがいた。しかし、フリーランスを経験し出戻って見ると、その彼はマネジメントになっていた。この時、ずっとスキルがない状態でフリーランスエンジニアをし続けていた自分と、正社員としてエンジニアをやっていきつつマネジメントにも挑戦させてもらえている彼との間に圧倒的な視座の違いが生まれているのを感じた。
つまり、自分は一現場のエンジニアとしてどうやって早くタスクをこなしていくかしか考えていなかったが、彼はどうやってチームの生産性を上げていくかを考える立場になっていたのだ。
この経験の差はとても大きく、1章でも述べた「キャッチアップコストが高いエンジニア」の方向に足を踏み出すのはスキル不足のフリーランスでは難しいと痛感した。
フリーランスエンジニアとして独立するならこのレベルまでスキルを身につけたい
ここまでの章で、スキル不足な状態でフリーランスエンジニアになってしまった場合に待ち受けている厳しい現実を述べてきた。
ここで述べたことはどれも私が過去にスキル不足の状態でフリーランスになって痛感した内容だ。
そのため、ここまで読んでくれた方には焦ることなく、スキルが十分についてからフリーランスとして活動してもらえたらより良いエンジニアライフを送れるのではないかと思っている。
月収60万円を目指すなら、DB設計や基本的なアーキテクチャの設計はできるようになろう
月収60万円を目指すなら、少なくとも自分が任された案件の開発は問題なく実行できるし、チームの設計思想に反った内容でそれを実現できるようになろう。
そのためには、普段から以下についての知見をため実践するようにしたい。
・ER図
・デザインパターン
・アーキテクチャの知識(クリーンアーキテクチャ、ヘキサゴナルアーキテクチャ)
月収100万円を目指すなら、要件定義やプロジェクトのマネジメントはできるようになろう
月収100万円を目指すなら、開発プロジェクト全体の進行をスムーズにできるような役割を担えるようになろう。
そのためには、普段から以下についての知見をため実践するようにしたい。
・要件定義
・プロジェクトマネジメント
フリーランスエンジニアに必要な具体的なスキル
フリーランスエンジニアに必要なスキルは以下の記事を参考にしてもらいたい。
まとめ
スキル不足のフリーランスエンジニアを待ち受ける厳しい現実と、だからこそスキルをつけてからフリーランスになろうという内容で書いてきた。
この記事が多くのフリーランスを目指すエンジニアの方の参考になれば幸いだ。