エンジニア副業ってまじで人によっては見つからない
zennに技術ネタ以外のポエム記事上げてほんとすまないと思ってる。
本業にも副業にも通じる話なのですが、ガムシャラに頑張ったと言ってもうまく期待するエンジニアにはなれないと思う気がするの。
ここで言うガムシャラに頑張って期待する結果につながらないのシナリオは、市場にマッチしない技術では副業先の選択肢も少なくなる(副業しにくい)というということにスコープを絞ってポエムっていきます。
エンジニアは休日または退勤後に勉強を頑張る
Twitterで情報を収集する意識が高いエンジニアの方は、仕事の後や自分の余暇の時間を勉強に当ててるのではないでしょうか?ほんとにそれはすごいことだと思います!自分を信じて自身に投資するのはなかなかできることではありません。
ぜぇぜぇ、こんなに休日に頑張っているのだから、副業だって簡単に見つかるはず!
ただ、がむしゃらにやっていてはその努力が報われることは少ないと思います。需要と供給があるので、頑張って勉強した分野が、供給過多
だったり需要がなければ
、副業先の母数が少なくなるので必然的に厳しい現実が待っています。
どんな副業の仕方を選ぶのか?
まずはエンジニアとしてどんな副業をしたいかを決めないといけません。
パッと思いつくよくあるエンジニアの副業はこんな感じでしょうか?
- 他の会社のお手伝いをして業務委託として収入を得る
- クラウドワークスなどで仕事を受けて収入を得る
- メンター業で、メンティーの課題を解決して収入を得る
- アフィリエイトなどの広告を利用して収入を得る
- 個人開発をしてそのアプリやサービスから収入を得る
- 自身のコンテンツを作って売る。
- 完全にエンジニアとは別の仕事をする
とはいえ、エンジニアになってはじめの頃はメンター業やコンテンツにできるような経験などはないと思うのと、クラウドワークスは経験がなければ時給換算して雀の涙ほどの利益しか挙げられないので、オーソドックスな路線としては
他の会社のお手伝いをして業務委託として収入を得る
こちらになると思っています。あってますよね?
【副業】他の会社のお手伝いをして業務委託として収入を得る
業務委託って?簡単に言えば、正社員などとはちがって短期間で雇われる人たちのことですね。この働き方を専門にしているヒトはフリーランスなどとも言われます。実際に契約をするときは請負の契約と準委任の契約など気をつけることはありますが、くわしくはしらべてみてください。
どうやって仕事を探すかというと、専門のサービスがありますのでそちらから自分のプロフィールや経歴を入力してスカウトされるのを待つか、自分から案件に応募していくかになります。
なので一番大事なのはこちらのことだった記憶があります。
自分のスキルで副業可能な案件がどのくらい市場にあるのか?
自分はGolangが得意だけど、市場にはGolangの副業の10件しか案件がない。PHPの案件は市場に100件ある。その場合は、どちらが副業に適しているでしょうか?
私が登録している副業サイトの調査ですが、
言語またはフレームワーク | 件数の多さ | 難易度の高さ |
---|---|---|
Ruby on Rails | ◎ | 低~中 |
React | ◎ | 低~中 |
HTML, CSS, JavaScript | ◎ | 低~中 |
WordPress | ◎ | 低~中 |
Node.js or TypeScript | ◯ | 低~中 |
Laravel | △ | 低~中 |
Vue.js | △ | 低~中 |
AWS | △ | 低~中 |
Golang | △ | 低~中 |
だいたいこんな感じだと思います。なので、案件数が多くて低~中までのくらいの難易度のものが副業に向いていると思います。低~中というのは、WordPressはweb制作するのにいろいろな知識を必要としますが、Railsであれば、Railsだけを知っていたらなんとかなります。MVC的なものやmoduleくらいでしょうか。
Ruby on Railsの副業
案件数が圧倒的に多いですし、Ruby on Railsがフルスタックフレームワークなので、あとはどう組み合わせてメンテナンス性を高めるかという問題になるのでそこまで問題にならないと思います。
Reactの副業
ReactはRailsに次ぐ案件の多さだと思います。もはや、フロントのUIライブラリとしてはデファクトスタンダード感があるので採用している企業も多く今後も保守や機能開発の案件は亡くならないと思います。
AWSの副業
ただ、AWSの場合はかなり深い知識を要求されますし、すでに出来上がっているものの運用ならともかく初期構築を知識がない状態でただ動くだけに着目したのであれば斬首ですね。
Golangの副業
Golangを選ぶのは、私が本業でずっとGolangを使っていているので断言しますがwebとは結構相性が悪いので、なにか特殊なことをしてたり、パフォーマンスが要求されるものだったりすると思います。そもそもGolangの案件は少ないので、初心者から中級者を副業で募集していることは少ないのでやる必要がないと思います。
以降はよくある間違った準備・勉強方法について
業務委託としての副業先を探すためにサービスを作って勉強する
サービスを作って勉強するって何が行けないの?モチベーションにもつながると思うけど。
本気でそのサービスを作ってそれでやっていこうと思っているのであれば、むしろ副業はするべきではないのでその個人開発を本気でやるのがいいと思います。
8割くらいの人は多分途中まで作って凍結させると思います。というのもそれくらい大変でそれくらい、一からマーケットを見つけるのはセンスと労力が必要とされるほどwebサービスを作るハードルは下がっていると思います。
どれくらい大変なのかと、それをやったからといて技術力に直結しない。
多くの開発者の方は、サービスを作って技術も学びつつお金稼ぎができたらいいかなとか思っていると思います。かく言う自分もそのように2,3年やってましたが一向にサービスも技術力が上がりませんでした。
どうしてそのようになってしまうかについてちょっと反省して原因分析
サービスを作るということ
詳細な方法は省いたとして大体の流れはこうなるでしょう。
STEP1
そのサービスで解決したい課題の設定
そこに需要があるかを、自分の経験やほかのヒトにヒアリングして、需要があるかを確認します。または、アプリを作るのであれば、すでにあるアプリでイケてないものなどで競合もいない分野を見つけて自分で作るのもありです。
STEP2
市場調査
これから何十、何百時間をかけて開発していくのに市場調査をしたら完全に同じサービスやアプリが先行して存在して、新しく提供できる価値がなければつくっても使われないので調査をします。
STEP3
プロトタイプを作る
XDやFigmaやNoCodeのツールを使って、大体の画面の設計を作って機能や使い心地をだいたい決めます。実装するよりも何十倍もそっちの作業のほうが簡単なので絶対にこっちをやってからのほうがいいです。うまく画面に落とせなかったり、プロトタイプの結果やはり需要がなさそうであれば、この段階で諦めてしまったほうがいいと思います。
STEP4
実装をする。
環境の構築を行います。使う技術などを決めてホスティングするサーバーをどうするかを考えます。実際に実装していきます。
STEP5
リリースして、広告を売って改善を重ねていく。
ドメインなどを取得して、アプリであればAppStoreやPlayStoreにリリースします。
大まかにはこのような流れになります。作っているうちに本当にこの仕様で良いのかや、ログインなどの処理、何度か作ったことのあるユーザーのテーブルなどを新たに作るなどすると思います。ここで一つ質問です。
Q. これで技術力がつくでしょうか?
A. 少ししかつきません。だった技術以外にやることが8割!
サービスを作るというのは、技術力を身につける側面よりも市場やビジネスに詳しくなるという側面が強いです。
ログイン機能の技術的な側面に詳しくなるのであれば、認証系のドキュメントを作ったり、その部分だけ技術的検証てきにデモを作ったほうが早いです。
設計に強くなりたいのであれば、CleanArchitectureを仮組みしてみたり、ValueObjectを作ってみたり、その技術的側面だけに着目したscrap codeを作るのが良いでしょう。
サービスを作るのはできるだけ早くリリースしたほうがいいので、SaaSを組み合わせてメンテンナンス性やある程度犠牲にしてもユーザーの反応を見るべきです。
なので、はっきりいいます!
一人でイチから作るサービス開発と技術力を向上させるという行動は相反する行動です
副業の業務委託を採用する側の意図
ここで本題の副業の話に戻ってくるけど、採用したい側は、全てができるオールラウンダーをほしいとは思っていません。彼らが採用したいと思っているのはこんなヒトです。
- 自分たちのチームでは知見がない領域に対して、すでに知見を持っているヒトを雇いたい。
- 開発するにあたって、単純に手が空いていないのでその領域の開発ができるヒト。
なので、実務ですでにその領域の経験があって、ドキュメントや記事から得られる知識ではなく経験としてい生の知識をインプットしているヒトを即戦略としてスポットとした雇いたいのです。
実務で全く経験のない分野の副業を狙う・受ける
新しい技術を学べるし、ぜんぜん違う技術学べたほうがいいと思うのだけど
副業を一回でもやったことはわかると思います。副業というのは、自分のプライベートの時間を切り取って働いているということに。
何を知ってほしいかといいますと、プライベートの時間がまったくないのはかなり辛いのです。
特に実務でやったことがない領域を副業で受けると次の辛さが出てきます。
- 副業は短時間で成果物を作ることを望まれる
- 副業で使用したことのない技術を調査したり、ベストプラクティスを探すのは更にプライベートの時間を削る
- 本業に副業で得た知識を活かせないことも多い
- 副業に本業で得た知識を活かせないことも多い
- 退勤後に時間を取れるかは、本業次第。
私も、本業ではやったことのない領域で副業をしたことがあります。そのときは、Nuxt.jsとTypeScript、Firestore、Firebase、TerraformにLINEのAPIや決済サービスを使った領域で副業させてもらいましたが、結構大変でした。
結果的には、NoSQLのDBの知見を得られたり技術選定の視野が広がりましたがそれ以上に時間が無限に足りない状態でした。
あとは、自分が得意な分野であるアプリケーション設計の部分には同程度の実力を持ったヒトがすでにいたので、そこでも強みを出せなかった苦い記憶があります。だいたい、同じことを考えていたので改めて私が口出しすることはありませんでした...
まとめ
業務委託のエンジニアとして副業を得るための準備としてのポイントはこちらです。
- 副業のために一からサービス開発をしない
- 本業と副業は必ず似たような技術スタックもしくは、すでに経験済みの領域であるところを選ぶ
- 市場を見極めて、本業でも副業がしやすそうな技術を触れる機会を狙う。
私としては、副業をしていろんなサービスや思考に触れるのはエンジニアとしての幅を広げるために大いに役立ったので、少なくとも一度は副業をしてみることおすすめします。
Discussion