tobb422のブログ

スタートアップエンジニアの奔走

チームの開発速度をあげる

はじめに

one visa というスタートアップ企業にてエンジニアをしています。
開発チームを発足するということになり、最初はわたし1人の開発チーム? だったところから
現在は、5人のエンジニアで開発を進めるまでにチームが大きくなってきました。
β版プロダクトから正式版リリースに向け、チーム一丸となって開発を進めており、
より一層スピード感を持って開発できるよう日々試行錯誤しています。
今回は、「スピードをあげるために何が必要かと」いままで考えたことをまとめておこうと思います。

チームの開発速度を上げる

チームの開発速度を上げるためには、以下2点を実現する必要があると考えました。

  • 同時に実装できる機能を増やす
  • それぞれのリードタイム(企画 ~ 実装, リリース)を短くする

以降、上記2つを実現する方法を考えます。

同時に実装できる機能を増やす

現在、開発チームでは、ストーリー毎に開発を進めており
(たとえば、ユーザーがサインアップできるといったイメージ)
要は、同時にこなすこのストーリーの数を増やせば良いと考えています。

  • 新たに開発者を増やす
  • 既存の開発者が分身する

これまでの経験から、同一人物が同時に複数のストーリーをこなすのはあまり現実的ではないと考えており
並行するストーリーを増やすためには、新たに開発者を増やすことが必要だと考えています。
(絶賛、採用中ですwよろしくおねがいします!)
ただ開発者を増やせば良いというわけではなく、
プロジェクトを任せて要件定義〜実装, リリースと一貫して担当していただける方を採用しなければなりません。
逆に言うと、ストーリー数を増やすために採用するので、
人物像(スキルセット)は明確になり、ターゲットは絞りやすいです。
採用して、同時進行できるストーリー数が増やせなければ意味がないので、採用をゴールにしないよう心がけています。

また、新たにエンジニアがジョインしてから、自走できるまでに1年を費やすようでは、
結局開発速度をあげることにはつながっていないので、
自走できるようになるまでのコストを低くしていくことも必要だと考えています。
たとえば、

  • チーム思想が明確にあり、意思決定の指針となっている
  • ドキュメントが充実している

といったことが満たされていれば、自走までのキャッチアップもしやすいと思います。

それぞれのリードタイム(企画 ~ 実装, リリース)を短くする

1ストーリー辺りにかかる時間が短くなれば、プロジェクトは全体的に前倒しになるため
リードタイムを短くできるよう心がけています。
もちろん、担当者のレベルに依存してしまう場合もありますが、
仕組み化を進めて、あらゆる面でチューニング可能だと考えています。
たとえば、以下はチューニング可能な項目です。

  • 変更・拡張しやすいアプリケーション設計になっている
  • ドキュメントが書かれており、属人化していない
  • タスクのゴールが明文化されている
  • CI/CDが自動化されている
  • チームの思想やバリューが明文化されていて、意思決定時の指針がある
  • MTGを集約して、開発にまとまった時間を確保できるようにする

上記のようなことが実現できていると、要件定義, 実装, もちろん実際のデプロイ時間など
あらゆる工程を少しずつ短くでき、トータルでかかる時間は大幅に短縮されると考えています。
漠然と開発速度あげろといわれると施策が思いつかなかったですが、
各工程を割り出して、それぞれのリードタイムを短くするためには?
と考えることで、より具体的な施策へ繋げらることができたと思います。
(今後、具体的にどういったことに取り組んでいるかもブログで紹介できるといいなぁとおもっています。)

まとめ

チームの開発速度を上げるためには、

  • 同時に実装できる機能を増やす
  • それぞれのリードタイム(企画 ~ 実装, リリース)を短くする

ことが必要ではないかと考えています。 そこから下位分析をしていくと、

  • ドキュメントをしっかり書く
  • チームのバリューを明確にする

といった割とよく言われているプラクティスにつながりました。

開発チームとしては、クライアントに継続的に価値を提供し続けられる開発体制を作るべきであり、
その際に、開発速度は非常に重要な指標ではないかと考えています。
ここは、根性論で乗り切ることは無理で、リソースが限られているスタートアップだからこそ よりハックしていかなければいけないのではないかなぁ〜と日々思っている今日このごろでした。

(最近ブログ更新をサボっていて、久々に書くとうまく文章かけない。)