見出し画像

ソフトウェア開発における期限は悪なのか

こんにちは、ストックマーク株式会社でエンジニアリングマネージャーをしている岩谷と申します。ストックマーク Advent Calendar 2023の10日目の記事をお届けしていきます。

ソフトウェア開発において、過去に横行していたデスマーチや、現場を無視した期限設定などの反動からか、開発チームが、外部から期限を持たされることに対しネガティブな印象が持たれがちだと思います。

実際には、健全な目標タイムラインを持つべきだと思っており、このことについて徒然と書いていきたいと思います。


なぜ期限は嫌われるのか

ストックマークで事前学習したLLMであるstockmark-13bに聞いてみます。

ソフトウェアシステムはブラックボックスの集合体で作られるため、リスクヘッジするには、実際に作って使ってみないとわからない部分が多く、全てを計画しようとすると、結局実際に作るのと近い時間をかけた検証を行う必要があり、2度手間となります。そのため、一定の不確実性がある前提で進めながらQCDSを調整した方が効率的であると思います。

時には、ビジネス目標の達成のためにS(スコープ)の変更が難しい場合もあります。その時D(納期)が変更できないと、品質を犠牲にして中長期的な負債を残して開発を急ぐか、デスマーチをすることになります。

品質を犠牲にして作られた負債は「暫定構成でリリースして、後から直そう」という話になるのですが、厄介なのはリリースしてしまうとエンジニア以外からは負債について興味を失われ、実際に直すタイミングなどこないということです。そうして残された負債のせいで開発者の生産性が低下しているにも関わらず、経営から「なんでこんな開発が遅いんだ!」なんて言われた日には最悪です。
(誤解のないよう補足ですが、ストックマークでは品質への取り組みに理解があり、新規開発とは別に、開発生産性・品質向上に関する活動をエンジニア主体で企画し、しっかり稼働を充てて活動しています)

これはあくまで1例ですが、ソフトウェアの複雑性を無視して期限を使うと様々な問題を引き起こすことは間違いない事実だと思っています。

期限は悪なのか

stockmark-13bさんに見解を伺います。

そもそも、資本主義における企業というものは、経済活動(ビジネス)を前提としており、ビジネス戦略上タイミングやスピードは極めて重要な変数です。そのため、ビジネス戦略と連動させより大きな結果を出すためにデリバリー目標を立てることは極めて重要です。

例えば、マーケットの動きに合わせて、素早く機能のリリース・メッセージングを打ち出していきたいといった場合には、品質や機能にこだわって時間をかけることが悪にもなり得ます。

ソフトウェア開発の不確実性を無視して期限と機能を固定することは悪ですが、ビジネスと連動させた目標としての時期感を認識するのは必要なことだと考えています。

理想的には、なぜ、何を、いつリリースしたいのか、背景となるインサイトまで開発チームが理解した上で、自律的にQCDSをコントロールしてアウトカムの最大化に向けて創意工夫しながら行動することです。

自律的なQCDSコントロールの難しさ

しかしながら、開発チームが自律的にQCDSをコントロールしアウトカムの最大化に向かうというのは、多くの困難さを抱えています。

まず1つとして、「なぜ、何を、いつリリースしたいのか、背景となるインサイト」は非常に情報量が多く複雑であり、より良い選択を導く上でシンプルな構造になっていないことです。これを全ての人が完全に理解するのにはどうしてもエネルギーが必要になります。具体的な開発と向き合い続けている開発メンバーがこういった問題に向き合うには、時間・コンテキストスイッチが発生し、一筋縄ではいきません。技術や開発に向き合う時間を減らしてもっと事業戦略理解に時間を使えと言うべきかは、私にとっても非常に難しい問題です。

2つ目に、情報の膨大性を解消するために、チームは分解されたシンプルなKPIを持ち、それだけにフォーカスするという方法があると思いますが、実際にはKGIに繋がるKPIを設定すること自体が極めて難しい問題です。KPI自体の正しさも疑わなければならない、となると結局その裏にあるインサイトまで理解している必要があり、1つ目の問題に戻ってしまいます。

このような難しさにどう立ち向かうべきか、まさに今悩んでいるところなのですが、当たらなくてもKPIは設定する、その上でKPIを見直す頻度を取り組みの不確実性に応じて変えていく、といったあたりを方向性として考えています。

最後に

本記事は良くわからないポエムのようなことを書いてしまいましたが、ストックマークのプロダクトメンバーはみんなが「良いプロダクトにしたい」という想いを持って開発に取り組んでいます。

私および本記事に興味がなくても、素晴らしいメンバーとプロダクト開発がしたい方は、お気軽にご連絡ください!

この記事が気に入ったらサポートをしてみませんか?