副業エンジニアが大活躍!Findyのプロダクト開発を加速させている話

2018.07.2

こんにちは、Findyプロダクト開発エンジニアの@kaacunです。

ハイスキルなエンジニアのプレミアム転職サービスFindyでは、フルタイムエンジニアである自分を中心に、5名の副業メンバーと共に開発を進めています。その内訳は、フロントエンド2名、バックエンド1名、機械学習1名、デザイナー1名です。

最初は自分も副業メンバーとの開発に少し戸惑いがあり、「大きなタスク渡しづらいやん」とか、「プルリクめっちゃコンフリクトするやん」など、強めの三重弁で悩みを吐露していたのですが、最近はだいぶスムーズに開発を進められるようになってきたので、少しでも副業エンジニアと開発している方のためになればと思い、知見を共有したいと思います。
あくまでまだ小さなスタートアップにおけるお話ですので、フェーズによってはもっと別の問題が発生するかもしれません。

スクラムをベースに、タスクを細かく分解する

Findyでは、2週間を1スプリントとして、スクラムをベースに開発を進めています。
スクラム開発では、タスクを細かく分解することが推奨されており、副業メンバーとの開発にとても適しています。なぜなら、副業メンバーには本業があり、稼働できるのは平均すると週に1人日程度となるためです。1人日以上のタスクを副業メンバーに渡してしまうと、週をまたいでしまうこともあり、納期遅れやコンフリクトの原因になってしまいます。
自分自身も以前にスタートアップで副業していたことがあるのですが、大きいタスクを週をまたいで開発しており、友人の結婚式などどうしても外せない予定が入ってしまった場合にズルズル開発が遅れて精神的にもかなり辛かった経験があります。

また、そうなると1人日以上のタスクは振れないじゃないかと思われるかもしれないですが、タスクを適切に分解すれば問題ありません
弊社ではZenHubを使ってタスク管理を行っているのですが、1人日以上のタスクはエピック(親タスク)とし、そこにサブイシュー(1人日以下)を刻んで紐づけています。
タスクの分解方法としては、わかりやすい例で言えば、機能開発の際にフロントのUI実装とバックエンドのAPI実装を別タスクにするなどです。リファクタリング等であれば、ファイル単位、メソッド単位でやってもらうなどもあると思います。

メンバーの強みを生かしてタスクをアサイン

タスクは基本的にはフルタイムメンバーから順にアサインしていき、フルタイムメンバーでは終わらない溢れたタスクを副業メンバーにアサインします。
また、スプリントには入らないがいつかやりたいタスクをNice to haveリストに入れておき、余力がありそうであれば自ら取ってやってもらいます。
あとは、メンバーによってフロントエンドが得意、バックエンドが得意など専門分野が違うので、そこも考慮してアサインしていきます。自分はフロントエンドがそこまで得意ではないので、フロントエンドの実装は大体副業メンバーにぶん投げています。とてもイケてるコードが上がってくるので自分もなぜか出来る気分になります。

週一でスタンドアップミーティングをやる

副業メンバーとは週に1回、30分程度は必ず顔を合わせるようにしています。
その理由としては、以下の点が挙げられます。

  • 困っていることを早めに解決してあげたい
  • 次会うまでに終わらせなければという締切効果
  • 仕様のイメージをすり合わせる

特に、3つ目の仕様のすり合わせはとても大事だと思います。
開発中に隣にいて常に質問できる状態ではないので、イメージがすり合っていないと間違ったものが出来上がってしまいます。
そのため、最初は割ときっちりと仕様をドキュメントに落とし込むという作業をしていたのですが、途中からその作業に使う時間がとてももったいないと思うようになり、途中からは仕様を細かく作らずに、頭の中のイメージをミーティングの際に伝えるという形に変えました。こちらの方が圧倒的に速いです。
メンバーが慣れてくるとイメージの共有も楽になってくるので、オンラインミーティングでも問題ないかもしれません。

プルリクエストは素早くマージする

上で説明したタスクの粒度の話と同じで、プルリクエストもなるべく分割して、基本週1でマージ可能な状態として上げてもらうのが望ましいです。
大きなリリースのサブタスクも、出来るだけ本番に影響を与えないようにして早めにマージしていくのが理想です。当然ですがコンフリクトが発生しにくくなるためです。
フロントエンドの変更は特に本番に影響を与えてしまうことが多いですが、リリースフラグで出力を制御するのも考えてみると良いかもしれません。ちなみにこれは副業メンバーに提案してもらった手法です。


if (localStorage && localStorage.getItem('release_feature_a')) {
    // リリース後の処理を書く
}

また、プルリクエストにはどうしてもレビューが必要になりますが、上記の原則に従うため、直したいところがある場合は積極的に自分で巻き取ってしまい、後でフィードバックするようにしています。
本来はプルリクエストを作成した本人が修正するのが望ましいですが、副業メンバーの開発の場合、レビューの直しまでの待ち時間がどうしても長くなってしまうので、リリースが遅れてしまい、コンフリクトも発生してしまいます。特に、フロントエンドの開発だと細かい文言修正などがよく発生しますが、明らかに指摘するより自分で直しちゃったほうが速いですよね。この辺は自分でも手を動かせるメリットですね。

まとめ

Findyにおける副業メンバーとの開発の進め方について書かせてもらいました。
現在、Findyの開発が進められているのも副業メンバーの活躍によるところが大きく、とても感謝しています。

Findyでは、副業メンバーもたくさん活躍できるような、新しい組織の形を目指していきたいと思っています。
それは、Findyのミッションである「働く個人の価値を見える化し、個人がもっと自由に働ける社会を創る」を体現するためでもありますし、その根底にある日本の労働人口減の問題を解決したいという思いがあるからです。

そんなFindyにもし興味を持っていただけるようでしたら、ぜひご連絡ください!
副業エンジニアを受け入れてみようと思った企業の方からのお問い合わせもお待ちしております!

一緒にお仕事してみたいかも? と、少しでも気になる方はこちらの採用情報からご応募ください。

読んで頂きありがとうございました! 宜しければ、エンジニアの皆様はFindyでご自身のスキル偏差値を測定してみてください。

[正社員の方]
ハイスキルなエンジニアのプレミアム転職サービス Findy

[フリーランスの方]
フリーランス・副業エンジニア向けの単価保証型の案件紹介サービス Findy Freelance

また、Findyでは年齢や勤務形態を問わず、様々な働き方で採用をしています。興味のある方は、こちらからご応募どうぞ!

Findyブログを購読してみませんか?
エンジニアの働き方やFindyの技術的な話などをお送りします!

GitHub連携するだけで、スキルを解析。
スキル偏差値やプロフィール情報を基に、人気のテック企業からオファーが届く

https://findy-code.io/
  • Category

  • About

  • Service

    フリーランス・副業向け
    単価保証型案件紹介サービス

    ハイスキルなフリーランス・副業エンジニア向けに案件紹介

    https://freelance.findy-code.io/
    ハイスキルなエンジニアの
    プレミアム転職サービス

    スキル偏差値が高いエンジニアに、人気のテック企業からオファーが届く

    https://findy-code.io/