アプリエンジニアは副業に向いてる?
はじめまして、アプリエンジニアとして副業をしている @jumboOrNot です。本業ではレアジョブという会社でマネジメントをしています。
「副業エンジニアとして3年目に突入したのでコツをまとめる」という記事をnoteに書いたり、副業イベントで登壇したりしていたのですが、もう少しアプリエンジニアとしての視点にフォーカスした形で文章を書きたいと思い、筆を執りました。この記事を通じて、少しでも副業に興味がある人が増えればと思います。
ここで言うアプリエンジニアとは、SwiftやKotlin、ないしはObjective-CやJava、またはFlutterやReactNativeのような技術を使ってネイティブアプリを作る人を指します。バックエンドやインフラと比べて副業のハードルは低く、案件も獲得しやすいと考えています。
というのも、アプリ開発自体が下記のような特性を持ち、「他の現場のやり方を想像しやすい」からです。
- 環境再現性が高い(エディタやビルドシステム含めて)
- 開発アカウントの管理やリリース手順含めて、プラットフォームの標準化がされている
- プログラミング言語の選択肢が少ない
インフラ構成やバックエンドの設計などはビジネスやリソースに大きく依存しますが、アプリは開発手段の選択肢がそもそも少なく、決められたやり方でなければリリースすらできないので、他の現場に入ってもワークしやすいと考えています。
ただ、もちろん例外はあり、「AさんのPCじゃないとビルドできない!」といったハードな現場もあります。
アプリエンジニアとして副業をする理由
ポートフォリオを広げるため
エンジニアとして「何ができるか」「何を作れるか」を説明するシチュエーションは多々あります。その時に必要なのが、ポートフォリオとして説明できるプロダクトです。
言葉でスキルを紹介していくよりも、「こんなアプリが作れます!」と実際に制作したものを見せながら話す方が早いですよね。そうしたポートフォリオとして見せられる実績を意識的に積む手段として、副業は非常に有効だと考えています。
ちなみに私は、下記のような点に注意してただプロダクトを作れる人ではなく、再現性を持ってプロダクト(アプリ)を改善できる人になろうとしています。自分の価値を市場と照らし合わせて常に把握することポイントです。
- なぜそのUI/UXなのか
- それはどのように実装されたか
- その設計はマッチしているか
- マッチしていなくてもその課題をどのように考えているか
- どうやってその質を担保してきたか
- その機能にはどんなビジネス的背景があるのか
3年ほど副業をしてきて、ありがたいことに10以上の現場を経験することができ、いろいろなものづくりに携わることができました。本業一本だといかに新規事業や部署異動を経験しても、ここまでの数のプロジェクトに携わることはできなかったと思います。
また、SESやフリーランスのような働き方だと現場を選べないので、これは副業ならではの強みではないでしょうか。
自分の市場価値を把握するため
会社員としての単価はどうしても組織への依存性が高く、これからの時代あまり評価軸として重要視されないのでは? と考えています。またフリーランスでなくても、自分のスキルの単価に無関心なのは非常にもったいないと思います。
副業を通して「自分のスキルがどれくらい需要があり、次に何に投資すべきか」を理解・実践することで、市場価値と価値観をアップデートし続けることができます。
この経験は発注を受ける側としてだけでなく、本業で管理職として採用や発注をする際にも大きく役立っています。
アプリエンジニアの副業にはどんな案件があるのか?
では、具体的にはどんな案件があるのでしょうか?
私が受けてきた業務の一例としては下記のような案件があります。
ツール系アプリの立ち上げ
- 組織:5人チーム、アプリエンジニア1人 バックエンド2人 企画2名、大企業の新規事業部
- 言語:Swift + Objective-C、たまにAndroidのためにJava
- 稼働:50時間/月 程度
- 契約:8ヶ月ほど
- 単価:3000〜5000円/時
- ツール:Jira、slack
- 概要:週次で業務後にMTG、月に1,2回オフィスに訪問。新規事業の立ち上げに社員が見つかるまでのつなぎとして参画。結果として一人で実装、リリースまで。
この案件の特徴は、主プロダクトのアプリを担当するエンジニアが1名で、しかも副業として参加していたことです。今まで受けてきた案件では、アプリエンジニアがそもそもいないというケースも珍しくありませんでした。
時には“開発外”の業務を期待されることも
開発者として活躍することを期待されるのは前提にありつつ、開発の流れを決めたり、ビジネスの意思決定をサポートする相談役的なロールを期待されることも多いです。私自身、実際に手を動かす以外に以下のような方法・観点を議論し、その現場のおける最善手を決めてきました。
- アプリのリリースまでの流れや配布方法
- プラットフォームのアカウント管理やルール整備方法
- モダンなデプロイメントパイプラインの構築・運用方法
- アプリに特化したテスト仕様書の作り方
- CI/CDの改善やツール
- AdjustやFirebaseなどアプリマーケティングに関する知見や数値分析
もちろん、すべての知識を持っている必要はありませんが、ものを作る以外でどれだけ価値を提供できるかを求められるシーンは多いと感じました。その場合、開発以外の業務がどれだけ発生するのかをクリアにして、単価や稼働のすり合わせをするのが大切です。
例えば、アプリ事業の立ち上げのようなケースでは、プラットフォームの前提知識(リリース方法やリジェクト後も置く)の有無がスピードを大きく左右しますし、そもそもの実現性にも影響します。
過去あったものとして「β版を作りたい、ユーザーにもそれがわかるように明記したい」という要望がありました。しかし、Apple Review Guideline はこれを許可しておらず、通常とは異なるステップを踏んでリリース計画を策定しました。
こういった単価計算しにくいコミュニケーション関しては、そもそもベースの相談料として1〜2万円をあらかじめ上乗せしていくこともありました。
副業案件の獲得の方法は2つ
基本的に案件獲得の手段は、案件を探すのか・案件に来てもらうのかの2つありません。
案件を探す
Webサービスに登録するだけではなく、人に会って営業をかけることも視野に入れて動くことをおすすめします。
「私、エンジニアだしそういうのは……」と少し怪訝に思うかもしれません。しかし、副業は自分という会社の自分という製品を販売することなので、適切に案件を獲得するために営業してみることをオススメします。
私も過去、yentaや勉強会で会った方との話の流れで「こんなことできますよ、資料はspeakerDeckにまとめているのでお力添えできるかも!」という感じで案件化したことがあります。
案件に来てもらう
▲Githubの職務経歴書
過去に登壇した副業についてのイベントでも「どうやって仕事をもらいましたか?」という質問をたくさんいただきました。これに関しては、転職とやることはあまり変わらないと思います。自分がやれることを整理して公開するだけ。
ただ、下記の点に注意しましょう。
- 今副業が可能なステータスかどうか
- 稼働時間イメージ
- 副業(orフリーランス)経験の有無
- やりたくないこと
採用側がアプローチしやすいようにステータスや経験を開示することが重要です。そして常にアクセス可能な場所に置いてたり、名刺に記入したりして常に管理してください。私の場合、Github で常に経歴をアップデートしておき、すぐ自分の状況を共有できるようにしています。
振り返ってみるとQiitaや勉強会で登壇した時の資料を見て依頼してくれた人が多いように感じるので、信頼感を持ってもらうためにもアウトプットはとても大切です。
単価と稼働
会社員をしているとあまり意識しないかもしれませんが、自分の労働時間を値付けするステップが必要になります。これは何度も発生する作用であるとともに、常に変動するものだと意識してください。
会社員の場合、収入は一概に金銭面の話だけではなく信頼や成長、キャリアチャンスによって決定します。しかし、昇進が存在せず、すぐ契約終了できる副業エンジニアにとっては成果とスキルを評価する仕組みは単価しかありません。そのため、自分の単価には自分で考え続ける必要があります。
アプリエンジニアであれば、以下のような項目が考えられているかをすり合わせておく必要があります。
- タスクは何で管理するか
- チーム内への配布のタイミングはいつなのか、頻度はどれくらいなのか
- 見積りと実績のトラッキングはするか
- タスクの終了承認は誰がするか
- 月次の請求ではなにか特記することはあるか
単価は市場価値と自身の能力を照らし合わせて決める
専門的な知識やスキルがあることを前提にすると、アプリエンジニアの単価は3,000 〜 5,000円/時あたりが一般的でしょうか。これを前提に双方で納得のいく金額をすり合わせることになります。
ここでは「何を作るか」ではなくて「どう作るのか」「誰と作るのか」が重要だと思います。単純にコード書くだけでよければ、単価は中央値でいいでしょう。しかし、コーディング以外のバリューが出せるのであれば単価を上げることができますし、逆に経験のない技術や設計が含まれていれば下げることも考えましょう。
また前述の『開発外』の業務がどれだけ発生するかも検討項目の一つです。
単価交渉は相手の期待値を上回っているかで判断
上記の例では「単価:3,000〜5,000円」と書いていますが、これは契約時に3000円/時で開始して後半のパフォーマンスが上がってきたところから少しずつ上げて最終的に5000円にしています。
この時に「私のスキルが上がったので単価を上げてくれ」という交渉は悪手です。大事なのは双方の納得感。誰が見ても納得感があるように成果を言語化することを心がけましょう。
私が単価アップしたケースは、「開発業務だけでなくQAやディレクションのサポートもして行く中で、役割が契約時と変わったので単価を上げたい」というケースが多かったです。泥臭く「何でもやります!」という精神ではなく、意識してやれることや求められていることを拾いつつ、単価を自分で定義し続けることが重要だと思います。
自分の働き方をアップデートするのに副業は最適
副業の経験は、エンジニアとしてのキャリアにメリット大きいとは思います。一方で、どうしても副業していなかった時と比べて、労働時間は増えるので、自分の稼働のコントロールや本業の調整は必要になってきます。金銭獲得の手段ではなくて、キャリアアップや生存戦略としての副業という視点で自分の働き方をアップデートしていきましょう。