
初めて副業をする方に向けた、エンジニア副業ガイドなるものを作成しました。
前置き長いですが、ざっくりどういうことが書いてあるか分かるので読んでみてください。
ここでは、
- 「エンジニアとして副業したいけどどんなスキル必要なのかなー」
- 「そもそもどうやって副業案件探せばいいんだろー」 と、思っている方に向けての手助けとなるような内容をまとめています。
ガッツリ副業というよりは週に2,3回(土日とか平日)くらい数時間で 3〜5万円くらい副業収入ほしいな〜と思ってる方を対象としてます。
「スキル関係」や「契約関係」など、つまづきそうなところを網羅的にまとめています。
自分は本業のかたわら、ここ数年間「副業」を続けています。 個人的に「副業するならこういうスキルをこのレベルくらいで持っておきたいよな〜」という考えがあるので、 「副業するにあたって必要なスキル」を解説していきます。
またエンジニアの副業をしたことが無い方向けにも、どうやって始めるのか、探すのかも最後に解説します。
最初に技術的なスキルとその他のスキルについてまとめます。 ある程度自分でアプリケーションが作れる方は、スキル関係は読み飛ばしちゃってください。 スキルに関しては網羅的にざっくりとしか触れているので、各スキルに関して深く学習するようにしてください。
必要な技術的スキル
本業でエンジニアとして、網羅的にいろいろな技術に触れられていればいいのですが、
現実的に本業がエンジニアじゃないとか、エンジニアだけど一部の技術しかしたことないという人も多いと思います。
そういう方に向けて1つ1つ解説していきます。 ※ここで紹介するのは一例であるので、必ずしもこの通りの技術が必要になるとは限りません。参加するプロジェクトなどによって必要な技術はコロコロと変わると思うので、取捨選択を自ら行っていただければと思います。
共通で必要になるスキル
エンジニアとして副業するために、共通で必要な技術スキルがあるので、先にそれを押さえておきます。 その後職種ごととに必要と思える技術を紹介します。
Gitを必ず覚えてください
まずはGitです。 必ずGitは使いこなせるようになってください。本当に重要です! Gitはコードの管理を行うものですね。これを使わずにいると、せっかく書いたコードが消えてしまった時に元に戻せなかったり、開発者が増えた時に同じところを編集しちゃって上書きされるなどといったことが起こります。
とりあえずはじめは、
- add
- commit
- push を覚えて使えるようになれば良いでしょう。開発ではこれを繰り返していくことが多いので、まずかここから覚えましょう。 一度覚えてしまえば、コードを書くたびに毎度使うので、勝手に慣れていきます。
linuxコマンド、知識
ディレクトリ移動やファイルを作ったり、移動したり検索したりなど一通り基本操作を覚えておくと良いです。 VSCodeなどのエディタ上でも同様のことが出来ますが、覚えておいて損はありませんし、エンジニアとして副業していくなら覚えておくと重宝します。
通常コマンドはMacであればターミナル、WindowsであればPowershellとかで実行します。
アプリケーションサーバやリリースするときなど、コマンド実行をする機会は至るところにあるので、いろいろなコマンドを調べたりできる能力も伸ばしておきましょう
基本的なショートカットを覚える
余力があれば、ここも覚えておくと良いですよ。
linuxコマンドでもそうですが、ターミナルなどでコマンドを実行して、あのコマンドもう一度実行したいってときに、同じコマンドを入力するのは非効率的です。
上記のような場合は ctrl+p か↑キーを押すことで、過去打ったコマンドを表示することができるので、それを活用しましょう。
これ以外にも基本的なことですが ctrl+aの全選択、ctrl+cのコピー、ctrl+vの貼り付けなどたくさんあるので、何度も打って手に覚えさせておくと良いです! 最初は難しいかもしれませんが、慣れです!一度慣れるともう手が覚えているので、非常に楽に色々な操作ができるようになります。
作業効率化
コードを書く以外で、色々なツールを使うことで作業効率化できるので色々と紹介します。 ここは開発する上で必ず必要というわけではないですが、効率を求めることはエンジニアとして必要です。 これらのツールを取捨選択できるようになっておくと良いと思います。
これはポモドーロ・テクニックと呼ばれるものを組み込んだアプリですね。Chromeの拡張として使うことができます。 集中しすぎてしまうのを強制的に中断させ、5分の休憩タイムを25分おきに設けるといったものです。 頭はリセットされますし、より良い集中ができるようになります。 プログラミングしてると熱中しすぎてしまって、知らず識らずに脳が疲弊してしまうので、意識的に休ませてあげましょう。
clipy(MacOS)
こちらは、コピーしたものを記録しておくツールです。 通常コピーは一つものしか出来ないですが、過去のコピー履歴を保持することができます。 ちょっと前にコピーしたものもう一度使いたいといったときに便利です。
また、自分用のスニペットと呼ばえる「固定の文字列」を登録することもできるので、よく使う文字列などはそこに登録しておくと良いと思います。
spectacle(MacOS)
これは画面分割のツールです。 MacだとWindowsのように、ブラウザを画面右とかに寄せて、右いっぱいに広げるということがデフォルトだとできません。 そんなときにspectacleは重宝します。
かなり柔軟に画面寄せなどができます。 画面左半分に寄せるとか、左1/3に寄せるとか、上に寄せるとか。 好きなようにショートカットも登録できるので、ガンガン使っていきましょう。かなり便利ですよ。
Notionは使ってる人も多い人気ツールですね。 Markdownで記述できて、いろんな表現が可能なノートアプリです。
ブラウザ版やアプリ版などいろいろなプラットフォームで使うことが可能です。データもクラウドで同期されます。
Notionのいいところはなんと行っても、表現力の高さですね。 タスク管理をしてみたり、在庫のデータ管理をしてみたり、プロジェクトの進捗を管理したり、単純なメモに使ったりと多種多様です。
考え方次第で無数の使い方ができるので、使ってない方は一度使ってみると良いと思います。
こちらはブラウザなのですが、一風変わったブラウザになります。 UIが特殊で、横方向にたくさんWindowを開くことができます。
通常ブラウザは一つのページを開いたらそれで終わりなのですが、stackでは複数ページを同時に開くことができます。
使い方としては色々ありますが、メッセージ関連をstackにまとめたりするのはおすすめです。 例えばSlackやTeams、Gmail、Messanger、Discordなどなど。連絡のやりとりなど色々なツールを介して行う場合が多いので(副業などいろいろな人とやり取りをする場合など特に)、こういうときに重宝しますね。
また、ページのグループを複数作ることも出来て、ここはメッセージ関連のグループ、こっちは情報収集用のグループなどと言うようにグルーピングして置くと更に便利です。
この他にも色々と便利機能があるので、是非一度使ってみてください。若干重いんですけどね...。
Webの知識
共通で必要なスキルの最後はWebの知識です。 すごくざっくりして恐縮なのですが、要点を上げるとブラウザやサイト、インターネットがどういう流れで動いているかを知ることです。
例えば、Cookieやセッションとはどういうものなのか?これらはログインなどの認証するときに出てくるけど、どういう関係性なのか?などです。
またWebであればHTTPとHTTPSの違いや、HTTPプロトコルとはどういった特性があるのか?ステートレスってなに?IP?DNS?などなど。
たくさんあるので、Webの知識を漠然と勉強するというよりはアプリケーションを構築していきならが、少しずつ覚える、理解する、全体像を把握するということが必要です。
最初からじっくり理解しようとせず、手を動かしながらアプリケーションを作りながら学んでいきましょう。
ここから担当範囲に分けて解説してきます。 ここでは担当分けて説明していますが、副業をする場合各担当がオーバーラップしていることがよくあります。できれば自分のメインの担当以外も少しは触れるようになっておきましょう。
フロントエンド
フロントエンドの定義はあいまいですが、ここではHTML、CSSをガッツリするというよりはHTML、CSSはそこそこにJavaScriptをガッツリする人のことを指すことにします。
業務的な内容で言うとユーザーが使う画面でいい感じに動きをつけたり、データをバックエンド側からもらって(APIコールなど)、描画したり、フォームに入力した値をバックエンドに送信したりすることを行います。
JavaScriptで表現力を増やす
JavaScriptはWebでは必ず出てくるので必須の知識です。 割ととっつきやすい言語ではあるものの、落とし穴もたくさんあります。
ただ、学習はしやすいと思うので、JSでの表現力を伸ばしましょう。
例えば、学生の期末テストの結果のリストがあるとして、 それらの中から
C組人かつ、英語のテストのみを取り出して、「〇〇さんの英語テストは〇〇点!」
というリストを作成したいとします。 これを、オブジェクトを持つ配列で考えたときに、for文やif文を使って頑張る人もいるかも知れませんが、JSは表現力が高いのでこのコードは以下のように書けたりします。
// データはこんなかんじ
const testResults = [
{
"name": "きみとし",
"class": "A",
"subject": "社会",
"score": "60",
},
{
"name": "みなみの",
"class": "C",
"subject": "英語",
"score": "80",
}
]
// 上記を表現力の高いJSの関数をつかって書くと
const messages = testResults
.filter(test => {
return test.class === "C"
})
.filter(test => {
return test.subject === "英語"
})
.map(test => {
return `${test.name}さんのテスト英語テストは${test.score}点!`
})
console.log(messages)
このようにfor文、if文を使って頑張るのではなく、filterやmapなどといった関数を使って書くことで、コードが何をしようとしているのか明示的で、条件の変更も用意にできるようになります。
他にもたくさん便利な関数や構文が存在するので、少しずつ覚えていきましょう。
JavaScriptのライブラリやフレームワークを学ぶ
JavaScriptを主に使いますが、大抵の場合はフロントエンドのライブラリ、フレームワークを使うことが多いです。 もちろん、これらはJavaScriptなので基礎をないがしろにしないようにしましょう。
話を戻して、有名所だと、 ReactやVue.jsなどを始めとして、Angular、Svelteなどのライブラリがあり多くのサービスで使われています。
また、Reactをいい感じに拡張したNext.jsや、Vue.jsをいい感じに拡張したNuxt.jsなどがあります。これらはフレームワークというような立ち位置です。
これらを使うと更に、開発効率が良くなったり、表現の幅を広げることができます。
レンダリングの種類を知る
フロントエンドのフレームワークでは複数のレンダリング方法(画面を描画するのにどういう方法をとっているのか)がある場合が多いです。
レンダリングの種類によって、ユーザーが感じる表示の速さであったり、検索エンジンに対するSEO効果が変わったりします。
ここについては適切な技術、適切な場面で選べるようになると良いです。
レンダリングの種類には以下のものがあります。
- CSR(SPA) - 画面遷移は早い、アプリのように動作する - 業務的なアプリケーションに向いている - SEOにとても弱い
- SSR - 普通のWebサービスのように動作する - SEOに強い - 若干遅い
- SSG - 静的サイトのように動作する(HPみたいな感じ) - SEOに強い - コンテンツの反映ひと手間かかる
- ISR - 静的サイトのように動作する - SEOに強い - コンテンツの反映は用意にできる - 考えることが少し多い
これらはNext.jsやNuxt.js、他のフレームワークでもサポートされています。されてないものもあるので、適宜調べるようにしましょう。
バックエンド
続いてバックエンドです。
バックエンドは基本的に
- バックエンドの言語を1つ
- Webアプリケーションフレームワークを1つ
- データベース(RDBMS)を1つ
使えるようになっておけばOKです。 初心者でバックエンド周りを学習しようとする方は、データベース周りの知識がすっぽり抜けている場合が多いので、しっかりとDBを勉強しながらWebアプリケーションを作っていきましょう。
バックエンドはフロントエンドと違って目に見えない分、イメージすることが難しく、最初は理解に苦しくのかなと思います。
ただ、一度アプリケーションを最後まで作ってしまえば、なんとなく全体像がみえてきます。 その後、同じようなアプリケーションを何度も作ることで、解像度が上がっていき、より高機能なアプリケーションを作れるようになります。
言語とフレームワークについて
バックエンドの学習をするとして、どの言語をすべきかについてですが、 メジャーな言語であれば何でも良いかなと思います。
メジャーじゃない言語を学ぶのもたのしいですけどね。
ちなみに等サイトreloopでは言語はPHP、フレームワークはLaravelを主に扱っています。
かなり入門レベルから解説しているので、初めて触るよって言う方は一読してみると良いかと思います!
サーバサイドの言語で有名どころだと
- Java
- Kotlin
- Go
- C#
- NodeJS
- Python
- PHP
- Ruby
などなどがあります。 これらは副業でもたくさん案件があるので、どれを選んでも良いのかなと思います。
ちなみにJava、Kotlin、Go、C#はコンパイル言語と呼ばれ、コードを実行する前にコンパイルという処理をする必要があります。若干手間ですがコードの安全性が比較的担保されやすいです。
またNodeJS、Python、PHP、Rubyはスクリプト言語と呼ばれ、コンパイルする必要がなく、コードをすぐに実行することができます。 その分コードの安全性(バグなどの早期発見)が悪くなる場合がります。
個人的な使い分けとしては、さくっと簡単なアプリケーションを作る場合はスクリプト言語を使い、パフォーマンスを高めたり正確性を求められるようなアプリケーション(かっちりしたシステム)の場合のは、コンパイル言語を使うことが多いです。ご参考までに。
言語によって特性はさまざまですが、繰り返しになりますが最初は好きな言語を選んでアプリケーションを最後まで作り切るというところまで目指しましょう。
データベース(RDBMS)について理解・学習する
冒頭にもいいましたが、ここがすっぽり抜けてる人や、ここで挫折する人が多いので、
ここは必ず覚えてほしいです。
アプリケーションを作るにあたって、会員登録をしてもらったり、何かしらのデータを登録してもらって、表示したりなどすると思います。
これらをするにはデータベースの知識が必須になります。
RDBMSに関してはリレーショナル・データベースと呼ばれるもので、データ感の結びつきを指揮したDBとなっています。
RDBMSの中にもいろいろなDBがあって、どれを選ぶかは自由ですが
- MySQL
- PostgreSQL などが有名どころです。
これらのDBはでクエリ言語というもので、データを取得したり保存したりします。
通常のプログラミングと違って、書き方が大きく異なるので慣れが必要です。
また、データの結びつきという話をしましたが、ここの概念も理解するときに一苦労するかもしれません。
概念から抑えて、クエリ言語を学んで行く勉強法が良いかと思います。
バックエンドはこの他にもHTTPの知識などが入ってきますが、フレームワークを使っていく上で一緒に学べるはずなので、粛々とアプリケーション作っていきましょう!
インフラ
ここでのインフラは物理サーバーは対象としていません。物理サーバー触りたい人は自宅サーバーでも立てましょう!
ここではクラウドを利用したインフラ環境構築周りの話をします。
インフラはどいう場面で必要なるのか?
それは、公開するときですね。 開発環境を作るときにもインフラ知識は多少必要ですが、サービスをリリースするときガッツリとインフラを触ることになると思います。
副業案件でインフラを担当するというのは、割と難しいのかなと思うのが正直なところです。 理由としては責任が重すぎるし、それなりの知識が要求されるからです。 ただ、出来なくもないとは思います。
話をもとに戻すと、リリースする際にはフロントエンドやバックエンドの人たちが書いたコードをサーバーに上げて起動させる必要があります。
他にもSSL通信の設定をしたり、データベースをセットアップしたり、DNSの設定をしたり、バックアップの設定、ログの設定、アラートの設定等々色々あります。
非常に大変ですが、その分やりがいもありますし、 なんといってもインフラを抑えておくと、個人開発でリリースする際に必ず役に立ちます! 個人開発では、ダウンしてもいいから安い環境で構築したり、など色々試せるのでそっちで学習していくというのも良いですね。
どいういうクラウドを使うのか?
有名所でいうと
- AWS
- GCP
- Azure
などがあります。 これらは結構専門的な知識が必要なので、じっくり学習していくのが良いです。 いきなり副業案件で取らないほうが良いですね。そもそも未経験だと採用はほぼ不可能になると思いますが....。
またコストを抑えるという面では、動かくアプリケーションにもよりますが、VPSやレンタルサーバーを使うのも一つの手です。
- ConoHa
- さくらインターネット
- エックスサーバー
- カゴヤ などがあります。
ちなみにConoHaにはLaravelアプリケーションを簡単にリリースできる環境が備わってます。 https://reloop.dev/entries/dff73320a6f3e26fe1b3ae707d4866ac 自分もやってみたのですが、本当に簡単にリリースできますし、月1,000円もサーバー代がかからないので、とてもオススメです。
インフラをするにあたって覚えておいてほしいこと
インフラはほんとに多種多様な業務内容になって、どこを勉強すべきなのか難しいのですが、とりあえず以下2点だけは必ず抑えておきましょう。
- 権限管理
- ネットワーク
どのサービスを使うにしても、ほぼ必ずこれらの知識が必要になります。
権限管理というのはサーバーに対する権限管理です。ここを怠るとサーバーが攻撃されたり、不正にクラウドサービスにログインされたりとても危険です。 AWSだとIAMという権限管理のサービスがあるのですが、かなりセキュアに権限を絞ったりすることができるので、AWSをする場合は抑えておくと良いです。
また、ネットワーク知識もつけておきましょう。必ず必要になります。 VPSとかレンタルサーバーとかであれば必要ない場合もありますが、AWSなどを使う場合は自分で仮想的なネットワークをセットアップしたり、それらに対してセキュリティの設定をしたりします。
とりあえず、どこに行っても権限管理やネットワークの知識はつきまとうので、都度ブラッシュアップしてきましょう。
技術スキル周りのまとめ
様々な技術に関して、かなりざっくり解説してきました。 副業をするにあたっては、個々のスキルを伸ばすのはもちろん、それぞれの分野の関係性なども把握して、全体を俯瞰して見れるようになるとより良いです。
正直、上記のようなスキルを手に入れるには、個人開発が一番適していると考えています。
自分で企画して、フロントエンドの知識でフォームを作ったり、バックエンドの知識でデータを登録したり、インフラの知識でドメインをとってサーバー契約してリリース作業を行ったり。
学べることは本当にたくさんあります。一度最後までやりきると全体像がわかりますし、何より自信がつくと思います。
ちなみにreloopでは個人開発の後押しができるように、リリースまでちゃんとサポートできるような記事を書いていきます。
また、自分自身で「クライアント」と「開発者」になりきって開発していくと、無理難題が出てきて、それを調べたり、解決したり、代替案を出したりする能力が養われていきますし、技術力も向上します。
一人で個人開発するということは、フロント、バック、インフラまで幅広く技術力を身につける必要があり、この能力は副業に必ず活かす事ができます。
必要なその他のスキル
さて、やっと技術的な話が終わりましたね。
続いては副業をするにあたって技術以外の必要なスキルを解説していきます。 副業は人と人とのやり取りなので、きっちりと仕事をしていくこと継続して発注してもらえるようになりますし、紹介もしてもらえるようになると思います。
また、会社員をしている人であれば普段やらない税金周りの話などもあるので、そちらも抑えておきましょう。
契約・書類・税金周りの知識
いきなり小難しい話になるのですが、契約まわりについて解説していきます。
エンジニアで副業するときは以下の2つの契約どちらかで報酬体系が変わってきます。
請負契約と準委任契約
請負と準委任の違いについてなのですが、これは成果物に対して責任を負うかどうかということです。
ざっくりいうと、
- 請負契約: 作ったものがクライアントの意図通りに動いたら報酬がもらえる
- 準委任契約: は決められた時間仕事いしていれば、作ったものがどうであれ報酬がもらえる
作ったものがどうであれというのはオーバーに言っていますが、大体はこのよな認識です。
請負のほうが責任は重いイメージですね。 請負契約をする場合は、この機能を作ってもらえたらいくら報酬支払いますよという契約になります。
準委任の場合はこの〇〇時間働いてくれたら、その時間分の報酬を支払いますよという契約です。
ここはよく揉めるポイントなので、しっかりと契約内容を確認して進めていきましょう。
また準委任の場合は更に2つに分かれる場合があって、その場合成果に責任が発生するというケースもあるので注意です。
この辺の話はややこしいですが、一度頭に入れておくと良いでしょう。
見積書を作成してクライアントとの報酬の同意を取る
クライアントにどの程度の金額となるか、見積書を送付しましょう。 これがなくいきなり請求書を発行することも出来ますが、いざ請求となってクライアントが思っていた金額と異なったりするとトラブルの原因になります。 何よりいきなり請求するのは失礼にあたりますね。
どのような開発を行うのか?それにどのくらいの時間を要すのか?金額はどのくらいかなど、明記してクライアントと共有し、しっかり同意を取るようにしましょう。
見積書に記載しておいた方が良い項目は以下になります。
- 発行日
- クライアント名
- 開発者名
- 品目
- 単価
- 見積合計金額
請求書を発行してクライアントに支払いを要求する
ほとんど見積書と同じような内容となりますが、請求書は必ず発行するようにしましょう。 ただし法律上は請求書発行する義務はありません。それでも請求書は発行しておいたほうが良いです。
契約内容によって請求書の書き方も若干変わってきます。
請負の場合は、
〇〇機能: 〇〇円
準委任の場合は、
〇〇時間 × 単価円: 〇〇円
このような感じで算出して請求書を発行します。
では、なぜ請求書が必要なのかというと、以下の2つがあげられます
- 報酬金額に関してのトラブル防止の為
- 取引証明するため
トラブル防止に関してはクライアントに入金してもらう金額と、自分が受け取るべきと思っている報酬の不一致を防ぐことができます。 請求書が無いと、クライアントと思ってた報酬金額が異なってしまった場合にトラブルに発展する可能性があります。
取引証明では、本当にこの取引は存在するのかを確認する際に必要になります。例えば税務調査が入った際に取引があったのかを証明することができます。
また、クライアント側もその請求書を経費としているはずなので、それを証明できる書類として求められることがほとんどだと思います。請求書と領収書を求められる場合もあります。
請求書作成するソフトなどもたくさんあるので、必ず請求書は発行するようにしましょう。
確定申告で税金を収める
副業を行う場合は確定申告を行う必要があります。
副業20万円以下であれば税金を収めなくていいなどといった話がありますが、 それは所得税のみの話なので注意してください。
こちらの動画で詳しく解説されているので参考にしてみてください。
簡単に言うと、年間20万円以下であっても住民税を納める必要があるんです。 そう、税金は税金でも所得税ではなく住民税なんですね。 こちらを怠ると、追加納税しないといけなくなる可能性もあるので注意しましょう。ちゃんと税金は納めましょう。 住民税であれば、確定申告ではなくお住まいの市区町村で申請を行えば大丈夫です。
20万円を超えている場合は問答無用で確定申告が必要です。
副業として収益を上げている場合は、基本的に雑所得になります。 雑所得で納税するときは非常に簡単で、
- どのくらい儲かったか
- どのくらい経費が出たか によって税金が算出され、それをコンビニなどで収めるだけです。
※ちなみに、ふるさと納税をしている方は確定申告するとワンストップ特例制度が使えなくなるので注意です。確定申告の際にふるさと納税の記載もするようにしましょう。
見積もり・タスクスケジュール管理能力
工数の見積もりを行えるようにしましょう。 会員登録機能なら何人日くらいかかるとか、コメント返信機能は何人日で出来るなどなど。 これらの工数に単価をかけ合わせて、見積もりとしてクライアントに費用面問題ないか見てもらいましょう。 この機能を作るなら、〇〇円というのはいきなり過ぎて難しいので、工数×単価で考えていくとより詳細に算出できます。
また、上記は請負の場合ですが、準委任の場合は単純に時給となるので、エンジニアとしてどのくらいの給与体系が良いか、自分のレベルにあった時給を掲示してあげると良いでしょう。
ピンきりですが平均3,000円といったところでしょうか。 自分の場合は内容とクライアントによりますが、2〜4,000円で受けたり、難しい内容であれば単価を上げたりなどしています。
スケジュール管理はTrelloとかgithubなどのツールを使うと良いでしょう。この変はクライアントが分かりやすいようなツールを選定出来ると良いと思います。
請負と準委任でスケジュール管理も変わってきますが、基本的にどのくらいで何ができそうか、どのくらいの進捗であるかクライアントにすぐ伝得られるようにしておきましょう。 進捗のチャートなどを使って、視覚的に分かりやすくしておくと親切です。
コミュニケーション能力
なるべく即レスが出来るように心がけましょう。 ここのコミュニケーションが疎かになると、クライアントからの信用を失ってしまいます。 すぐに返信できない場合は、「〇〇頃までには確認します」などと連絡を入れておくと良いです。
準委任、請負の場合やクライアントの意向によっても変わっていきますが、 言われたことをそのままするのは、あまりエンジニアとして価値が発揮できていないので、適宜提案など出来ると良いでしょう。
例えば、
- 「この機能であれば、こういうアプローチの方が〇〇という理由で、利便性があがります」
- 「この機能から着手することで、全体としての工数が減ります」
- 「このリソースは無駄なので、コストカットしましょう」
- 「クライアントの実装依頼はこうだけど、クライアントの意図としてはこういうことだから、こういう実装で提案しよう」
このような提案がクライアントにできれば、エンジニアとしての付加価値が生まれ、 案件リピートにつながることが多いですし、何より信用を獲得することが出来ます。
ただし、言った内容をとりあえず実装してほしい、あまりやり取りをしたくないなどと思っているクライアントもいるので、事前に適宜提案可能か聞いておくとか、コミュニケーションを取る上でその辺の塩梅を見極める必要があります。 くれぐれも勝手に動くことだけはやめておきましょう。
「初めての副業」の始め方について
ここからは、案件獲得はどうすればいいのか、 どこで見つけることが出来るのかについて見ていきましょう。
まず副業の獲得方法に関しては、受動的か能動的の2つの獲得方法があります
受動的な副業獲得方法
受動的な副業獲得方法では、自分のプロフィール、技術力などを掲示することで仕事を紹介されることを目指します。
クラウドソーシングで依頼を待つ
CrowdWorksやLancersなどのクラウドソーシングサービスで、自分のプロフィールを充実させて置くことで、案件交渉依頼が来ることがあります。
自分の使用できる言語やどのようなサービスを構築したことがあるかなど、事細かく掲載していると、依頼が来ることがあります。
ですので、いろいろな言語に触れたり、深く一つの技術を突き詰めたりしておくと良いです。 また多種多様なサービスを自分で構築しておくというのも良いでしょう。 実務で行っていなくても、実際に個人開発でサービスを構築して運用して入れば実績と言えます。 ただ、チュートリアル程度のレベルであれば掲載しないほうが良いです。 初心者とみなされて、この人に依頼しても意図したものが出来なさそうと思ってしまうからです。
ココナラとかで自分のプロフィール掲載するのも良いですね。
GitHubやTwitterを使って情報発信をして依頼を待つ
GitHubでOSSにコミットしてみたり、自分でライブラリやサービスを開発してみたりしておくと企業などから声がかかる場合があります。 もちろん秘匿情報を含まない範囲でソースコードを公開しておく必要がありますが。プライベートでは見えないですからね。
またTwitterなどで情報を発信するのも良い手です。 技術に関してつぶやいてみたり、働き方についての自分の思いをつぶやいてみたりなどしていると、 人となりがわかって、声がかかる場合があります。 プロフィールも充実させておくと良いです。副業を求めているとかお仕事依頼はDMまでなど。 定期的に副業案件募集などつぶやいたりなどするのもいいでしょう。
知り合いからの紹介を待つ
これはハードルが高いですが、プログラミング学んでるとか、こういうサービスを作ったなど日頃から言っていると、「こういうのは作れる?」と言ってくれる方が現れるかもしれません。 知り合いの知り合いが「こういうのを作って欲しいって言ってるんだけど」などと相談を受けることもあります。
自らそういう知り合いを増やすという手もありますが、能動的な方法になるので、能動的な副業獲得方法で説明します。
能動的な副業獲得方法
次は自ら副業を獲得しにいく方法です!ハードルは上がりますが、案件獲得までは早く到達できるでしょう。
クラウドソーシングで応募する
受動的な方法でも紹介しましたが、自分で案件に応募することもできます。 ただしクラウドソーシングは競争率が激しかったり、単価が極端に低かったりするので、なかなかお目当ての案件に辿り着くのは至難の技です。
単価を極限まで下げて、最初に案件を獲得し後に単価交渉をしながら単価アップし長期契約ンにする方法もあります。
ただ、ある程度技術に自信がないときついかもしれません。
エンジニア副業案件紹介サイト
エンジニア転職ではなく、副業を紹介してくれるサイトなども存在します。 いろいろな副業案件が存在します。 例えば週10時間〜OKや週2日土日でも可能!など、多種多様です。
また、エージェントがついてくれて自分にあったエンジニア副業を探してくれるといったサービスも存在します。
完全に初心者だと厳しいかもしれませんが、サービスを1,2個作った、開発したなどの経験があれば案件獲得することは可能かと思われます。
ビジネスマッチングでクライアントを探す
こちらは自ら、依頼してくれそうな人を探すというものです。 ビジネスマッチングサービスというのがあるのですが、様々な業界の人とマッチングすることが出来ます。 スタートアップ企業だったり、大企業の役員だったり、エンジニアなども数多くいます。
エンジニアを探しているビジネス職の人もたくさんいるので、一度登録して話してみると良いでしょう。
勉強会に参加してエンジニアの知り合いを作り副業案件を紹介してもらう
勉強会に参加してエンジニアの知り合いを作るのも良いでしょう。 ただ、オンラインの勉強会であれば1対1で話たりするのは難しいので、オフラインで出来るとベストですね。
エンジニアは本業の傍ら、仕事を依頼されている方多くいます。 ただ、手が回ってない場合もあるので断っている人も多く見受けられます。 なので、エンジニアの知り合いを作って、副業をしたいと言うのをさり気なく伝えていると声がかかる場合があります。
積極的に知り合いを増やしていくと良いでしょう。