フリーランスエンジニアになって半年が経った

フリーランスとして独立してから半年が過ぎた。ちょうどいい節目でもあるので、ここで自分が今考えていることをまとめておきたい。

半年間何をしていたか

並行で稼働する期間がそれぞれありつつ、結果的に4社と関わらせてもらった。基本的には機能開発をメインの業務とするポジションで、内訳は以下の通り。

  • 週32h、Rails/React、Findy Freelanceからの紹介

    • 現在も稼働中で、途中から週24hにさせてもらっている

  • 週16h、Go/Nuxt.js、Laprasからのスカウト

  • 週16h、Go/Next.js、リファラル経由

  • 時間は決めずSlackに常駐し都度相談、Rails/Nuxt.js/AWS(Terraform)、リファラル経由

先方都合で契約を切られることはなく、おそらく満足はいただけていたのではないかと思う。
一時期は週7日に近い稼働をしてたりもしたが、2022年5月現在は週3日で1社稼働しつつ、アルゴリズムやWeb技術の基礎を勉強したり、運転免許を取得するために教習所に通ったりして過ごしている。

独立にあたった目的

前職を辞め独立した理由はこの記事に書いた。

シード期から関わり始め、思い入れもあるサービスだったこともあり辞めることには大きく悩んだものだが、今は非常に楽しく過ごしており、結果的には(少し残念ながら)辞めて良かったなと思っている。(注1)

楽しく過ごせている理由を考えると、独立にあたった目的がいくつかありそれらの仮説検証ができたのと、その結果を前向きに捉えられているのが大きい。要約すると以下の3つが目的に当たる。

  • 色んな会社や組織を知りたい・自身の振る舞い方を模索したい

  • 自身の経験が薄い技術を学びたい(TypeScript, Web技術)

  • 自身のキャリアパスを見定めたい

色んな会社や組織を知りたい・自身の振る舞い方を模索したい

文系かつスタートアップの現場上がりだったため、自身が他の環境でも通用するのかは確認しておきたかった。もし何らかの理由で一つの会社で働けなくなっても職にありつける状態を保つことで、リスクをコントロールしつつ挑戦できるようにしたい。そのため、前職とは毛色の違う組織で働いてみたかった。

またプロダクト開発をチームで進める上で、自身がどう振る舞うことが価値を発揮しやすいかを模索することも目的に含んだ。

自分は共感性が人より高いようで、自分事(他人事の対義語を意図)の範囲が広い性格らしいということがわかってきた。スタートアップの初期のような散らばったタスクを何でも拾ってとにかく前に進める動きは得意な一方、事業や組織が大きくなり職域が分散した時に自身の責任範囲を上手く区切れずキャパオーバーになってしまうことが多かった。他人の辛い気持ちをスルーできないというやつだが、無理なものは無理として他のメンバーに任せるべきで、セルフマネジメントの訓練がしたかった。

自身の経験が薄い技術を学びたい(TypeScript, Web技術)

前職ではバックエンドをメインに開発しており、フロントエンドはRailsのアセットパイプライン上の生JSとBootstrapなどで済ましてしまうことが多く(注2)、モダンフロントエンドやWeb技術の知識が乏しいことにコンプレックスがあった。

プロダクトデリバリーを自律的かつ速いスピードで進めるためには一人でフルサイクルに広いレイヤーを着手可能である方が望ましいと考えており、元々AWSとバックエンドは一人でことを前に進められる程度には自信があったため、フロントエンドも同じように触れるようにしたい。

自身のキャリアパスを見定めたい

フリーランスを長く続けるつもりはなくて、あくまでキャリアの途中での仮説検証の手段として捉えていた。マッチする会社があればコミットメントシフトのような形で就職したいとも考えていて、自分に合う会社やポジションをまったり探そうと思っていた。

自分はソフトウェアエンジニアリングを趣味の延長線上に捉えていて、この仕事を生涯続けられるのであれば楽しい人生だろうと今は思っている。そのためIndivudual Contributorのキャリアパスは明確に意識しているものの、とはいえマネジメントのポジションに就かない選択をするにはまだ時期尚早にも思う。また、10~20年後に心境が変化し楽しいと思えなくなっている可能性もある。

そのため自身よりレベルが高いエンジニアと働き、その人がどう振舞っているのか・何をモチベーションとしているのかを知ることは自身のキャリアパスを見定ることに繋がりそうだと考えた。



こうして書き出してみると、「サステナブルに働き続けられる状態を作ること」がこの半年のテーマであり不安だったんだろうなあと思う。
この3つの目的を果たすには、自己責任の上で柔軟に動けるフリーランスとして働くのが実現しやすいだろうということで転職ではなく独立を選んだ。


とはいえ業務委託エンジニアに仕事を依頼する企業としては、上記の目的など知ったものではないと思う。次項からはどのように仕事を受け価値提供をしたかについて書いていく。

どのように仕事を受けたか

Call for Job Offers

まずは求職のための資料を用意し、自身が提供できること・やりたいことを整理した。

これはとても良い試みだった。will-can-mustを言語化することのメリットは言わずもがな、この資料経由でお話をいただけることもあり、そこから契約に至った会社さんもある。他の求人媒体経由でお話をすることになったとしても、これを事前に読んでもらうことで多くのコミュニケーションをスキップすることができた。今後も継続して保守していきたいし、広まってほしい。他の方のも読みたい。

求職媒体への登録

独立直後は契約・請求がうまく回るか懸念があったため、流れを知るためにも求職媒体に登録した。その際利用してよかったのはFindy Freelanceで、担当のカスタマーサクセスの方に案件の提案・面接の同行・契約の締結をしていただいた。面接ごとに改善のための率直なフィードバックをいただけたのがとてもありがたく信頼できるなと思った反面、こんなにユーザーに時間を割いてFindyさん大丈夫なの?とも思った。本当にありがたい。


最終的には興味のある企業で週2〜4の稼働で4社お世話になった。参画すると決めた理由はそれぞれ違うが、判断軸は上述の目的の通りで、例えば「今まで経験したことのないような、PLGの小さなチーム」「フルリモートのレベルが高いチームで、その開発プロセスに興味がある」「自身よりレベルの高いエンジニアが在籍しており、その人が何をモチベーションにしているかを知れそう」などがあった。


別の転職エージェントに「あなたは経験が少ないため、業務委託としては脂が乗っておらず仕事がもらえない可能性がある」と言われてまあそうだなと思ったものの、いざ仕事を探してみると経歴を理由に断られたことはなかった。GitHubで公開しているソースコードや書いた記事を評価していただけたようだ。

素早くチームに溶け込むことの再現性を出せるようにする

ここからは働き始めてから意識した点について。
チームに新しいメンバーが参画した際に、その方が能力を最大限発揮できるようになるまでには3ヶ月〜半年かかるとどこかで聞いたことがあるが、自分の場合「色んな会社で働きたい」を目的とする以上可能な限り短縮したいと考えた。この記事ではあまり深掘りはしないが、以下のような振る舞いを意識して稼働していた。

  • 参画して初日の仕事は環境構築資料のアップデート

  • 社内資料・ソースコード・コミットログを可能な限りなんでも読み込む

  • 分報などでとにかく思考を垂れ流し、他のメンバーに助けてもらいやすい状況を作る

  • 既存仕様調査も言語化して社内記事化すれば価値になる

契約解除

「色んな会社で働きたい」を目的にすると、契約を解除させてもらうことは避けられなかった。契約解除を打診した理由は「他に魅力的な企業からオファーを頂いた」「組織と自身のミスマッチがあった」などだが、可能な限り丁寧に理由を伝え納得してもらいつつ、丁寧に引継いでから去った。

企業としてのエンジニア採用の難しさは理解しているつもりなので、短い期間で離れることの申し訳なさはあるが、稼働期間中はできる限り価値を提供できるよう心がけた。険悪に別れることはなく、今でもTwitter等で交流がある方もいる。機会があればまた働きたい方も多い。

半年間の振り返り

ここからは実際どうだったかを書く。良かったこと・悪かったこと のように落とし込むことは難しかったため、トピックごとに述べていく。

フリーランスは幅広く浅く技術を学びやすい

経験の薄かったモダンフロントエンド技術を学ぶためにいわゆるジャムスタック構成の技術スタックの仕事を多く請けたが、そこで感じたのはフリーランスは幅広く浅く技術を学びやすいということだった。

新しい技術を学ぶ際にはまず公式ドキュメントのGetting Startedを読むものだが、それに加えて実プロダクトに導入され試行錯誤されたコードが読めるのはキャッチアップに大きく役立った。抽象と具象を反復横跳びして両方の理解を深めるイメージ。フリーランスで複数プロジェクトに参画するとなると、この未知の技術に触れる機会が増えるというのも良かった。

もちろん既存コードをそのままコピペするのはご法度で、自身の書くコードの意味を理解し説明できるようにしておかなければ良くないコードが再生産されてしまう。良し悪しを判断できる程度には深く学習する必要がある。

また、この方法では一つのプロダクトを長く保守することで得られる知見やシステム全体のアーキテクティング能力などは得づらく、そこはトレードオフとなる。目的の「経験の薄い技術を学びたい」は短期的な課題かつ実行に移すだけと認識していたため、この方法が合っていたように思う。

色んな会社で働くこと

結果的にスタートアップが多くなってしまったが、組織の色のようなものはどこも違うなと感じた。やはり大事なのは人なのだと思う。

今まで会ったことのないような優秀な方と出会い、動きを学ばせてもらうことはまさに求めていたことだった。エンジニアから事業責任者に挑戦してチームを牽引する活躍をされている方や、Goの言語仕様にかなり強く品質の領域からスタートアップを後押ししている方など。自身のキャリアを考える上で大きな助けになった。

自身としても価値を提供するために尽力した中で、ありがたいことにメンバーから振る舞いを評価していただけることがあり、スタートアップであればとりあえず職に飢えることはないだろうと思えた。

メンタルコントロール

「業務委託」という一線を区切ることは、自身の責任範囲を明確化しながら進めることに一定の効果があった。
限られた時間の中でことを前に進めるために、自身ができることとできないことを整理する癖が付いた。安定して価値提供を続けるためにこれは継続していきたい。

生活と仕事のコントロール

フリーランスのメリットの一つとして良くも悪くも自己責任であることは挙げられ、自身もそれなりに享受したと思う。

独立してすぐは結果的に週7稼働になってしまった時期もあったが、リスクヘッジのための貯金がしたかったのでまあ良いだろうと判断し、支出も多くないためそれなりに貯金が溜まった。しかしこの週7稼働の生活を長く続けるのは体力的に難しそうだ。

現在は1社で週3稼働だけで、空いた時間で運転免許を取得するために教習所に通っている。週3だけでも自身の支出を超えて貯金ができる程度の収入は得られているし、このような調整が効きやすいのもフリーランスのメリットだと思う。

少ない時間で価値を提供することの難しさ

一方、週2日(週16時間)稼働でストリームアラインドチームに加わり価値を発揮することはどうしても難しいと感じた。ミーティングが多いと圧倒的に作業時間が足りなくなったり、例えば月・火稼働とすると火曜日が終われば次の月曜までコミュニケーションブロックになり、機能リリースのフロー効率が下がってしまう。

この問題については曜日ではなく時間で稼働するのは一定効果があった。午前はA社・午後はB社のように短い時間で毎日稼働する。コミュニケーションの問題はある程度解決でき、1日の3時間程度の稼働で何かしらPRを出す努力をすると細かくインクリメントができるのも時間価値としては良さそうだった。しかしコンテキストスイッチが大きく毎日体力を大幅に使うという課題はある。

稼働時間を決めずにSlackに常駐し、単発でタスクを請ける

これはエンジニアの副業の選択肢としてはアリかも?と思うので記載してみる。契約上の問題がないかどうかは保証しない。(問題があれば気になるので教えてください)

元々時間契約で稼働していた企業で、契約を解除する相談の際にこの方式に変更することになった。メインの開発には加わらず単発のタスク単位で相談し、稼働した時間だけ請求する。
時間契約の頃はAWS/Fargateでのインフラ構築やRailsアプリの機能追加を担当していたが、単発稼働になった後はこのようなことをした。

  • S3+CloudFrontで動いていたNuxt.js製のSPAを、SSRも対応するためにVercelに移行する

  • RDSのストレージ料金が突然増え始めたので調査し対応

  • Instagramアカウントのフィードをサイトに埋め込む技術調査と実装

優先度低だが重要度がそこそこといった感じのタスクを依頼され、プロダクトのドメイン知識があるためタスクの着手はしやすく、かつ時間の調整がしやすいのはよかった。

一般論として、外の世界を見る目的での副業は自分は良いことだと考えているが、週5フルタイムで働いた上でさらに週2等で副業するのは体力的に厳しい面もあると思う。現実的にこの単発稼働パターンでの稼働をするとなると、転職のタイミングで業務委託に転換しSlackには残り続ける、みたいな形ならなんとか実現できそうだが、副業の一つとしてこういった選択肢もあると良いなーと思う。

これから何をするか

ここまでこの半年やってきたことについて振り返ってきた。「色んな会社で働きたい」についてはある程度納得したため、結論としてはこれからはマッチングしたら就職する前提で仕事を探し、1社ずつ稼働するのが良いかなあと考えている。

前職を辞める理由に漠然とした成長の停滞を感じていて、「技術力を高めたい」とは思うものの具体的に何をすればいいのかわからなかった。
今思えば、流行っている技術も含め「この経験を積めばシニアエンジニアになれる」ものなどはなく、ただひたすら目の前の課題に向き合ってコンフォートゾーンを抜け続けるしかない という当たり前な結論に至った。複利の力を信じるしかない。

どこに向かって挑戦するべきかについては「英語が身近になる環境」「ユーザー数が大きいサービスに関わる」が良さそうと考えているが、まだ解像度は高くない。これからの半年で考えたい。


といった感じで楽しくやってます。自分の力で自分の人生のハンドルを握れていることが楽しいのかもしれない。今後もやっていき!


注1:この表現は独立時にロールモデルにしていた@KatsumaNarisawaさんの振り返り記事の表現が、同じような感覚を抱けたためお借りした。
注2:現在のタイミー社はNext.jsによるジャムスタック構成への移行を進めている。採用情報はこちら

この記事が参加している募集

振り返りnote

この記事が気に入ったらサポートをしてみませんか?