フリーランスエンジニアの成長論

# はじめに
この記事は、G's ACADEMY アドベントカレンダー2022の二日目です。

一日目のtaro_osgさんの[Denoのフレームワーク「Fresh」で爆速開発](https://taroosg.github.io/blog/posts/1470809396.html?fbclid=IwAR2GuqqDfJMtdrfeEYUVjqzkOG8uMQH_3GkwnlMEU-W_KaG8zHBt7U1H1XU)面白いですね。
Denoは触ったことありませんが、確かnpmモジュールが最近使えるようになったとかで、開発の幅が広がりましたね。
Node.jsの開発者が当時の反省を活かして作ったとかで、個人的にも気になっている技術です。

さて、G'sは起業家育成が目的のプログラミングスクールですが、卒業生のその後のキャリアは多岐に渡り、起業家はもちろん、エンジニアとして就職したり、私のようにフリーランスエンジニア兼起業家になる人もいます。

先日、ある経営者の方から「フリーランスエンジニアってかわいそう」という話を聞きまして、まあ、間違ってはないんですが、一家言ある私としては、戦略さえ持てばむしろ社員になる理由の方がないと思っているぐらいなので、筆を執りました。

## 伝えたいこと
社員とフリーランスのどっちがいいとかではなくて、どっちも自分のキャリアに沿って合う方を戦略的に選べばいいと思いますし、選択肢は多いほうが人生設計に柔軟性が出ていいと思います。

どうすれば社員でないことによるデメリットを克服することができるのかを中心に、フリーランスでも工夫さえすれば全然問題ないよということが伝えたいです。

## 想定する読者
- フリーランスになろうと思っているが、以下のようなことが心配で踏ん切りがつかない方
    - 社員ではない環境で成長し続けられるのか
    - スキルが陳腐化しないか
    - 仕事をもらい続けることができるのか
- その他フリーランスエンジニアの実態を知りたい方

## 得られるもの
- 成長し続けるフリーランスエンジニアとしてのキャリア戦略の一例

# フリーランスエンジニアはなぜ「かわいそう」か
冒頭の話ですが、これは話者の意図としてはこんな感じでした。

- フリーランスは社員じゃないので、会社として育成は行わない
- フリーランスはあくまで社員の手が回らない部分の穴埋めとして雇う・解雇するので、できることが増えない

これは会社によっては正しいですし、フリーランスの方が何も工夫しなければこの通りになります。
そもそも、会社がフリーランスを雇う目的は、その人の持つ即戦力としての専門性によって、目の前にある開発を効率よく行うことなので当然です。

じゃあ、具体的にどうすればいいのでしょうか。

# フリーランスエンジニアとしての価値を定める
どうすればいいのかを考える前に、そもそも到達地点が不明では打ち手もクソもありません。
まずは、自分にとっての「成長」、つまり目標と現在の差分がなにかを定義します。

今後のキャリアを考えるという意味では、これはフリーランスに限らず、社員でも同じです。

フリーランスをやっていると、社員のときと違って、少しだけ自分の提供価値を客観視する機会が増えます。契約の際に、「このお客さんは何に困っていて、自分がどんな価値発揮をすると嬉しいのだろうか」などと考えるからです。

※なんとなく自分の専門スキルを提供しても稼げてしまうのがフリーランスエンジニアですが、そのままだと尻すぼみのキャリアになるので、やったことがない方は今やりましょう。

フリーランスエンジニアとしての価値は本当に様々で、正直ここで語ることはできませんが、一例を挙げると、一番簡単なのは「●●の技術の専門家」でしょう。しかし、ある一つの技術の専門家というだけではすぐに価値が頭打ちする（その先に行くにはものすごい勉強が必要）ので、大抵はなにか他のスキルを掛け算します。

私の場合だと、ビジネス構築 x UI設計 x フロントエンド開発 x クロスプラットフォーム開発 の掛け算です。
つまり、事業のゼロイチフェーズにおいて大きな価値を発揮できます。
逆に、大きなプロジェクトでの保守・運用フェーズでは価値がほとんど出ません。

決めたら、この価値を大切にします。

フリーランスエンジニアは事業主という意味では受託会社と変わりませんが、決定的に違うのがリソースは自分ひとりということです。

会社であれば、売上を伸ばすためにいろんな案件に手を出すのは可能ですが、1人でそれをやってしまうと「いろいろやったことがあるけれど、全部中途半端なスキル」という、経験してきた時間の割に市場価値が低い厳しい状態になってしまうので、一般人の私たちは取り組む領域はある程度絞る方がいいです。

# 価値を伸ばす案件を選ぶ
自分の価値を伸ばせる案件にしか手を出してはいけません。
今はまだエンジニアの売り手市場なので、ある程度のレベルであれば選ぶことは簡単なはずです。

案件は山程あるので、単価が高くて特に何も勉強せずとも自分の既存の技術でまかなえるものをよく見かけます。
しかし、これは麻薬みたいなもので、その案件をやる間成長しないので自分の将来価値が下がっていくのに、成長しなかったがために他の案件に就くことができなくなり、ずっと辞められない、みたいになっていきますから、絶対にやってはいけません。

具体的に自分の価値を伸ばせる案件ってなんなの、というところですが、当然人によって異なるのでこれ、というのが難しいです。
が、私なりに言語化していて、「自分の価値となる領域において、今の自分の力量で8割は対応できるが、2割は全くイメージが沸かないもの」です。

8割という数字は本当に感覚ですが、あんまり簡単すぎると成長しないし、難しすぎても納品に支障が出てしまいますので、そうならない範囲で難しい案件という感じです。

例えば、私がちょうどよかったと思う案件の例を挙げると、
- React Nativeで自作のアプリは作れる、かつWordPressでWeb制作の納品はできるころに、React Nativeの開発
    - 経験のあるフレームワークかつ、フリーランスの仕事が分かってきたころだったので、ちょうど本格的なWeb開発の経験ができた
- Reactを用いたSPA開発ができるころに、Vue(Nuxt)とクリーンアーキテクチャをフロントエンドに適用したもの
    - Reactが書けるので、Vueの学習コストはそんなに高くなく、それだけだとむしろあまり成長しなかっただろうが、クリーンアーキテクチャに初めて触れるので、そこの学習がちょうどいい塩梅で負荷になった

こんな感じで、案件ごとに必ず新しいスキルを手に入れてきました。

常に新しいスキルが獲得できるので、自分の価値発揮する領域において成長し続けられます。
むしろ、会社員だと自分で仕事を選べないこともあるので、その分効率よく成長しているとすら言えます。

# それで実際どのぐらいになれるのか

私はフリーランスエンジニアとして稼働している時間はそんなに長くない（ハーフコミットぐらい）のですが、結果的に到達したレベル感としては、エンジニアになっての年数相応かなという感じです。

ちょうど5年目になる頃にYahooやリクルートのリーダクラスのエンジニアの方々(エンジニア6年目ぐらい)とお仕事をしましたが、さすがに彼らには劣るが、ディスカッションも問題なくできましたし、実際に仕事内容も評価していただけていたので、エンジニア5年目と言って差し支えないレベルになっていそうな感覚はありました。

そして、安定的に納品を続けていると、その納品行為自体が営業となって、周りの方々から紹介で仕事をいただけたりします。

# 終わりに
来年もまた書こうと思いますが、そのときは今年未達に終わった海外案件の獲得方法と、案件の実態についてレポートできればと思います。