- ランサーズ株式会社
- プロダクト開発部 エンジニア
- 上野 諒一
見積もりは「規模で語れ」!ランサーズの新規事業で見えた、プロジェクトの進め方
〜新規事業を次々と始動させるランサーズ。そのひとつ「ランサーズストア」での、プロジェクト改善への取り組みを公開〜
クラウドソーシングサービス「ランサーズ」を運営する、ランサーズ株式会社。近年、次々と新規サービスをリリースし、その事業の幅を広げている。
その新規事業のひとつ、ユーザーが自分のスキルを売買できるスキルマーケット「ランサーズストア」の責任者を務めるのは、新卒3年目の上野 諒一さんだ。
2ヶ月という短期間での開発を任された上野さんだが、プロジェクト開始直後に「工数の見積もりが全く機能しない」という壁にぶつかった。その壁を乗り越えるため、様々な改善を実施したという。
▼上野さんが責任者を務める「ランサーズストア」
今回は上野さんに、スクラム開発のエッセンスの導入、「GitHub(ギットハブ)」のテンプレートを活用した意識付けといった施策から、新規事業開発の進め方まで、詳しくお話を伺った。
新卒3年目で、新規事業開発の責任者に!
2014年に新卒でランサーズに入社しました。プログラミングはほぼ未経験でしたが、エンジニアとして機能開発をしたり、ディレクターのような役割をしたり、幅広く担当してきました。
そして2015年の末からは、新規サービス「ランサーズストア」の責任者をしています。
クラウドソーシングの「ランサーズ」には、仕事の依頼をいかに増やすか、そして仕事を請けるランサーさんの情報を提供して、いかにマッチングできるのかという2つの軸があります。当時、後者の「ランサーさんとその情報をストックする」ところが、まだ弱いというのが課題でした。
そこで、ランサーさんが自分が「何ができるのか」を公開し、そのスキルを売買できるスキルマーケット「ランサーズストア」の開発を開始したんです。
開発を開始するも、見積もりの難しさが…
新規事業として始まったランサーズストアですが、事業の最大化を図るために、ランサーズのユーザーイベントと同時期にリリースしようと考えました。イベントまでは約2ヶ月しかなくて(笑)、開発は私を含めて2名で進めていきました。
そうして開発がスタートしたのですが、すぐに問題が発生して。プロジェクトの開始当時、もう一人の開発メンバーがPHPを触り始めたレベルで、私との実装スピードの差が大きかったんですね。私が工数をすべて見積もってタスクを割り振っていたのですが、それが全く信用ならなくて(笑)。
2週間が経ったくらいで、「これはダメだね」という判断をして、スクラムのエッセンスを取り入れながら、いくつか改善をしていきました。
まず、タスクを工数ではなく「規模」をベースにしたポイントで見積もるように変えました。タスクの一覧はGoogleスプレッドシートで管理し、そこにポイントを書いていきました。
▼タスクと合わせてポイント(P)も記載
タスクが完了したら、実際にかかった工数も記録していき、毎週の振り返りの場でポイントを集計してベロシティ(開発速度)を出していきました。
▼スプレッドシートでベロシティも算出
すると次第にベロシティは上がり、見積もりの精度も良くなっていきました。バーンダウンチャートも作ったことで、「これは人を入れないとダメだ」という判断が早期にできたのも良かったです。
見積もりは「規模で語れ」。コミュニケーションミスを無くす方法
そのような問題もあったので、今では「工数で語るな、規模で語れ」と、口酸っぱく言っています。
「工数がどれくらいかかる?」と聞いても、さらっとしか答えないエンジニアも多いですから。「1日で終わります」というのが、丸一日時間を取れば終わるのか、明日までに終わるのかは、全然違いますよね。
ちょっとしたコミュニケーション不足で生まれる認識の違いですが、タスクがいつ終わるかなんて、誰がアサインされて、何人でやるのかによって変わります。
だから、認識がずれないように、絶対的な「規模」で話さないといけないんです。
GitHubのテンプレートも活用し、品質への意識を高める
他にも、ランサーズストアのプロジェクトで改善したポイントとしては、「GitHub(ギットハブ)」のPull Requestテンプレートの活用です。
Pull Requestのテンプレート機能は全社的に使っていて、「実装の目的・背景」「画面・機能」「非機能要件」といった項目を書いています。これに加えて、ランサーズストアのチームでは、「ソースコードの複雑度」などを追加しています。
▼テンプレートに沿ったPull Requestの内容
テンプレートを使うと、Pull Requestの粒度が揃うという狙いもあるのですが、それは第一段階だと思っていて。私は、テンプレートがあることで「気にするようになる」ということが大事だと思います。
テンプレートにあると、その項目を書かないといけなくなるじゃないですか(笑)。何かを書かざるをえない状況になるので、コードを書くときに、常に気にするようになるという効果があるのかなと思っています。このテンプレートは、全社に広げていきたいですね。
複数のロールを持つ人は、「ロールの切り替え」への意識が重要
このプロジェクトを通して感じたのは、アジャイルやスクラムも万能じゃないということですね。
あれは5人や10人くらいの開発チームで、一番効率が上がるものだと思います。新規事業だと、それほどの人数をかけられないので、そうなると1人でいくつものロールを担う必要があります。
私も、エンジニアとしてのロールと、プロダクトマネージャーとしてのロールという、2つのロールを持っていたんです。このときに重要なのは、ロールの切り替えを意識して、「今自分がどのロールとして話しているのか」を明確にすることです。
やっぱり「プロダクトマネージャーとしてはこうして欲しいけど、とは言えエンジニアとして言うとこうだよね」ということもあるので。メンバーに何かを伝えるときには、「ここからエンジニアの立場として話すよ」と明確にしてから伝えるようにしています。
「属人化させた」フェーズから、次のステップへ
複数のロールを担っているというのはデメリットに見えますが、メリットがある部分もあって。例えばエンジニアとプロダクトマネージャーのロールを併せ持っていたら、仕様を決めて作るところまでが、素早くできます。
その分属人化は避けられないのですが、そこは割り切って、リリースまでのフェーズは「今は属人化させるよ」と宣言をしていましたね。
ただ、これからはフェーズが変わってくるので、他の人も自立して動けるように、属人化していた部分の整理を始めています。
例えば、「この企画はどういう戦略に基いて、何を考えて実施したのか」ということを伝えたりしています。他にも、会議の中でもやっとした雰囲気を感じたときは、それを吐き出させて、解決したら書き残しておく。そういうことを、地道に進めています。
そうして、自分の中での答えを1パターンでも2パターンでも確立しながら、進めていけたらと思います。(了)