開発スピードを上げるための二つの効率
immedioに開発統括として入社して半年が経過しました!
入った当初は一つ意思決定するのにも何時間も議論するような状況でいかにスピードを上げていくかが課題だったのですが、ありがたいことに今では開発速度を褒めていただけるような状況になりました。
そこに至るまで、開発チームとしてデプロイ頻度や変更リードタイムの改善に取り組んできたのですが、本記事ではソフトウェアエンジニア以外の方にも伝わる形で取り組んできたものを共有できればと思います!
ペアプロの効率は良いか?
さて、開発手法の1つにペアプログラミング(通称ペアプロ)というものがあります。
これは『プログラムを書く人』と『指示を出す人』のペアになり、2人1組で開発を進めるものです。
では、これは効率が良いでしょうか?悪いでしょうか?
素直に考えると1人でできる作業をわざわざ2人で行っており、効率が悪いように感じますよね。
しかし検索するとわかるように、ペアプロは開発効率を上げるために取り入れられる手法なんです。
とはいえペアプロが非効率的なのも、また間違ってないように感じます。
ペアプロが向上させる効率性を理解する上で、何を基準とした効率なのかが重要な観点となってきます。
2種類の効率
『This is Lean 「リソース」にとらわれずチームを変える新時代のリーン・マネジメント』では、効率には2種類あるとしています。
リソース効率
リソース効率は、簡単にいうと仕事を小さなタスクに分け、異なる働きを持つ個人や組織で分けて行うやり方です。
専門家が同じ仕事を繰り返すことで練度は上がりますし、そこに最適化していくことができます。
たとえば専門医であれば専門性の高いX線の機器を買ったとしても高い稼働率を維持できますが、町医者が買ってもほとんどホコリをかぶることになってしまうでしょう。
一方で価値を受ける側からするとどうでしょうか?
一つの専門家のアウトプットが他の専門家に渡るまでのリードタイムが発生し、全体としての待ち時間は長くなってしまいます。
フロー効率
そこで価値を受ける側に注目したのがフロー効率です。
フロー効率は、待ち時間(価値を受けない時間)が少ないほど高いとされます。
開発組織における2種類の効率
開発組織に当てはめると、機能がリリースされるまでの時間に注目するのがフロー効率と言えます。
たとえば1つの機能を複数の専門チームで開発するのがリソース効率を重視した開発体制であり、1人のソフトウェアエンジニアで開発するのがフロー効率を重視した開発体制と言えるでしょう。
開発効率を上げるための戦略
リソース効率とフロー効率はトレードオフの関係ではなく、どちらも高めていくことが重要です。
しかしリソース効率が高い状態からどちらも高い状態にいくのは難しいとされています。
そのため、まずはリソース効率を落としてでもフロー効率を高め、その後にどちらも高い状態を目指す必要があります。
ソフトウェアエンジニアのみの体制
immedioではできる限り分業せず、1人のソフトウェアエンジニアがタスクの全領域を担う形で開発を進めています。
過去に「デザイナーを採用したほうが良いのでは」等の意見も出ましたが、フロー効率を重視するためにあえてソフトウェアエンジニアのみの体制を維持しています。
とはいえこの先ずっとこの体制を維持するわけではなく、今後リソース効率を重視しデザイナー等を採用するフェーズももちろんやってくるでしょう。
CI/CD(自動テスト・自動デプロイ)への投資
どんなに開発のリードタイムが短くなっても、テストとリリースに時間がかかるようでは限界があります。
テストとリリースはあらゆる開発で共通して発生するものなので、CI/CDへの投資は特に優先して、継続して行っています。
高い開発効率を支えるValue
さて、ここまで教科書的な話をしてきましたが、何よりimmedioの高い開発効率を支えているのは会社のValueです。
immedioは『顧客の成功に寄り添う』『素早く事を起こす』『挑み続ける』の3つのValueを行動指針にしています。
とにかく課題をミニマムで解決し最速で顧客に届ける意識が強く、そのために可能な限り開発工数を落とした形でタスクに落とし込んでいます。
immedioでは一人のエンジニアが幅広い領域を担当しながら、1日にタスクを何個も消化するような開発スタイルで仕事を進めています。こうしたスピーディで刺激的な環境が面白そうと思っていただいた方、こうした開発チームと共に働いてみたい方のエントリーをお待ちしております!