こんにちは。
フリーランスエンジニアの有人(freese90)です。
「僕が『実務未経験』からフリーランスになるまでの『全過程』を公開」という記事でも公開した通り、
僕がフリーランスとして独立した当時は、全く実務経験のない状態でフリーランスのエンジニアとして独立しました。
https://frien.jp/p
通常は、1年程度は実務経験を積んだ後にフリーランスとして独立するのが一般的なので、最低限の “エンジニアの常識” は抑えた上で独立する人が多いですが、
僕はエンジニアの基礎スキルや実務を通してのプログラミング経験が0の状態で独立したので、最初はやはり苦労がありました。
ただ、フリーランスエンジニアを目指す上で、実務経験を積まずに独立することはオススメしません。
今日は、実務未経験でフリーランスのエンジニアとして独立してみて、
どのような点が大変だったのか?
なぜ、実務未経験でいきなり独立するのはオススメしないのか?
このテーマでお話していこうと思います。
結論としては、以下の3点です。
① チーム開発経験が無いこと
② コードを書く際のお作法
③ “テストコード” の概念
目次
① チーム開発経験が無いこと
システム開発では、“複数人” で1つのシステムを開発する(= チーム開発)のが一般的です。
ただ、僕の場合は独学でプログラミングを学習しただけで、個人でのシステム開発しか経験していない状態で独立しました。
勿論、独学での個人開発は、プログラミングスキルを向上させる上ではメリットが大きいのですが、独学だけだと、チーム開発で必要なスキルが全く身につきません。
具体的に、チーム開発で必要なスキルは以下の通りです。
・Github、gitの使い方、プルリクエスト(PR)の書き方
・Slackやチャットワークなど、文字ベースでのコミュニケーション
・ブランチ運用の理解(master、staging、develop…など)
・ソースコードの中でコンフリクト(競合)が起きた際の対応
など
Github、gitの使い方、プルリクエスト(PR)の書き方
独学の個人開発の場合は、コードを自分しか見ない訳ですが、チーム開発では、自分の書いたコードgitを用いてをGithubという共有スペースに上げて、他のエンジニアにチェック(レビュー)してもらう必要があります。
独立した際の僕は、Githubの使い方を分かっていなかったので、結構このあたりは苦労したかなと思います。
また、git以外でもSierなどであれば、SVNというバージョン管理ツールを用いている現場もあります
少なくとも、どちらか一方の使い方を理解している状態で現場に入ればよかったなと、今から振り返れば思います。
Slackやチャットワークなど、文字ベースでのコミュニケーション
特に、リモートワークが一般化した現代において、常に横にチームメンバーが居る訳ではないので、エンジニア同士のコミュニケーションは文字ベースでの会話がメインになります。
僕は当時、Slackやチャットワークといったツールの利用経験が無かったので、この点もけっこう苦労しました。
Slackやチャットワークなど、様々なコミュニケーションツールがある訳ですが、1つ使えればOKです。
他のツールの使い方も似ているので!
ブランチ運用の理解(master、staging、develop…など)
これは、僕が実務未経験で独立して一番困ったことです。笑
よくあるチーム開発の構成として、以下のようなものがあります。
masterブランチ:本番環境
stagingブランチ:検証環境
developブランチ:開発用
※ 現場によって多少の違いはあります
僕が独立したとき、これらの “ブランチ” という概念が全く分からない状態でフリーランスエンジニアになったので、ここの概念の理解がとても大変でした。
ソースコードの中でコンフリクト(競合)が起きた際の対応
これはチームで1つのシステム開発をしているとよくある事象なのですが、エンジニアAさんと、エンジニアBさんが、ソースコード中の同じ箇所を同時に触ってしまうという現象です。
これをコンフリクト(競合)と言います。
個人開発しか経験の無かった僕は、コンフリクトという概念が起こる理由すら分かりませんでした。
そんな中で、「コンフリクトをどうやって解消すれば良いのか?」という点でかなり詰まってしまいました。
3つをまとめると・・・
「そもそも “仕事” として開発業務を行うのが難しかった」ということです。
エンジニアとしての “常識” が身についていない状態だったので、技術力より、この部分は苦労したかなと思います。
逆に、技術的なことについては、ググれば解決できることが多かったです。
ただ、“仕事の進め方” は、ググって出てくるものではないので、現場に入ってから、業務をこなしつつ、その知識を補うのは大変だったなと思います。

② コードを書く際のお作法
個人開発であれば、自分1人しかシステムを触らないので、極論、”自分さえコードが分かっていればOK” な訳ですが、
チーム開発の場合は、複数人で1つのシステムを作るので、“他の人” を意識してコードを書く(他の人が見て理解しやすいコードを書く)ことが、非常に大切になります。
例えば、
・同じ処理は、極力まとめて同じコードをできるだけ書かない
→ 後から機能改修する際に、修正する箇所が増えるから
・”何のための” 変数、メソッドなのかを名前から類推できるようにしておく
・何を修正 or 開発したのか分かるコミットを積む
→ 他のエンジニアが、 後から自分の作った機能を改修することもあるから
独立したときの僕の感覚では、“プログラムは動けば良い” という発想だったので、コードレビューでは、結構たくさんの指摘(レビュー)をされました。
コードのお作法は、”現場によって” 違いますが、「他人が見ても分かりやすくコードを書く」という概念・意識が無かったので、ここも苦労した点の1つでした。
③ “テストコード” の概念
テストコードを書くことで、“今まで開発した機能が正常に動くこと” を保証できる訳で、後からデグレやバグが発生しないようにするために、テストコードを書く現場もあります。
テストコード:”今まで開発した機能が正常に動くこと” を保証するためのプログラム
※ テストコードを書かない開発現場もあります
代表的なテストツール:
Ruby → RSpec
Java → JUnit
PHP → PHPUnit
javascript → Jest
など
僕が独学で個人開発をしていた時は、テストコードを書いた経験が全くありませんでした。
また、テストコードだけでなく、テスト自体をやったことがありませんでした。
実際の開発現場では、自分が作った機能をしっかりとブラウザ上で確認し、問題なく動作しているかをドキュメントに残したり、コメントで残したりする現場は多いです。
テストコードに関しては書かない現場もあるので、経験のない人は案件に入ってからキャッチアップすればOKですが、テストに関しては少しでも経験がある方がよかったなと思います。
テストの経験がない方は、自分が作った機能において、正常系、異常系の洗い出しや、境界値チェックなど、簡単なものでもOKなので文字に起こしてみることをオススメします。
↑大半の人は経験したことあると思いますが
フリーランスエンジニアとして独立する上で補足
テストコードの経験は必須ではありませんが、テストコードを書く現場も中にはあるので、独学でもOKなので少し触ってみるとか、実務の中で経験できるなら尚良しといった感じです。
(テストコードに関しては、現場に入ってからのキャッチアップでもOKです)
ただ、“テスト” に関しては、上記で述べた基礎的な部分は最低限、抑えた上で現場に入るのが良いかなと思います。
まとめ
僕自身は実務経験は0でフリーランスエンジニアになりましたが、正直、上記のような壁にぶち当たることも多いので、1年くらいは実務経験を積んだ上で独立することをオススメします。
一番大きな理由は、エンジニアとしての”常識” を身につけた状態で独立した方が、フリーランスのエンジニアになってから困ることが減るからです。
正直、プログラミングのスキルだけで言えば、十分に独学でも習得することが可能ですがそれ以外の、「① チーム開発経験」「② コードを書く際のお作法」「 ③ “テストコード” の概念」などの知識は、実務経験を積まなければ身につきにくいので、そっちのスキルを身につけるための実務経験を積むのはとてもメリット大きいと思います。
しかし、チーム開発の概念などを学ぶのは1年で十分ですし、会社でも開発業務を行い、独学でも個人学習、個人開発を進めていけば、1年でフリーランスエンジニアになって年収を2倍にすることは十分に再現性があります。
https://frien.jp/p
本気でフリーエンジニアを目指したい人へ
TwitterやYoutube、ブログやInstagram等で情報発信をしていると、よく以下のような相談をいただくことがあります。
「今は未経験だけど、これからフリーランスを目指したい」
「既に実務経験があり、フリーエンジニアとして独立を検討している」
「現役のフリーランスだけど、もっと単価を上げたい」
☝️昔の僕がそうだったように、こんな目標がある方も多いと思います。
僕はどうせなら、自分だけではなく、周りでも「稼ぐ」エンジニアがもっと増えたらハッピーだなって思ってます。
また、単に「稼ぐ」だけではなく、「時間」や「場所」に縛られず自由に働けるエンジニアが周りに多いと、そのエンジニアの人たちと一緒に事業を作ったり、次の挑戦に向けて一緒に切磋琢磨できるので、
僕の周りに「お金」「時間」「自由」の3つが揃っている人たちが増えて欲しいなって思ってます(^-^)
そこで、公式LINE「最速で月収50万を達成するためのLINEマガジン」を用意し、具体的なノウハウの情報発信や個別の相談会を開催する取り組みを始めました。
登録者限定で、以下のプレゼントを準備しています▼
🎁 僕が月収88万を稼いだスキルシート(pdf)
🎁 フリーエンジニアを目指す教科書
✔︎『未経験からフリーランスを目指す方法』
✔︎『フリーエンジニアになれるスキル基準』
✔︎『フリーエンジニアが年収を底上げする方法』
✔︎『稼げるスキルシートの書き方』
✔︎『フリーエンジニアの面談対策』…など
🎁 【完全無料】個別相談会への参加(※ 実務経験のある方向け)
✔︎『自分のスキルで本当に独立できそうか?』
✔︎『今のスキルでどれくらいの単価の案件を獲得できそうか?』
➡️ 一人ひとりの状況に合わせた相談は、是非こちらで質問していただけたらと思います(^-^)
🎁 エンジニアに関する『質問』『相談』もできます
『独立相談会』を実施中▼
公式LINEで、フリーエンジニアを目指したい方の無料相談会も実施中です😁
✔︎ 対象
エンジニアの実務経験がある方
『相談会希望』とLINEをいただけたら、フリーエンジニアを目指すための相談にも乗れます🚀
※ 公式LINE限定特典や独立相談会は、完全無料です。
こちらをタップして参加できます▼
