web-dev-qa-db-ja.com

新しい機能を追加することの複雑さについてビジネスマネージャーを教育する方法は?

私たちは、新しい機能を急ピッチで追加することを要求するクライアントのためにWebアプリケーションを維持しています。私たちは彼らの要求に応えるために最善を尽くし、その結果、コードベースは飛躍的に成長しました。現在、非常に多くのモジュール、サブシステム、コントローラー、クラスライブラリ、単体テスト、APIなどがあり、新しい機能を追加するたびに、すべての複雑さを処理するのに時間がかかり始めています。また、QAやステージングなどを引き継ぐために、プロジェクトに追加の人員を引き込む必要がありました。これにより、リード開発者は開発に集中できます。

残念ながら、クライアントは各新機能のコストが上昇していることに腹を立てています。彼らは、新しい機能ad infinitumを追加できることを期待しているようで、各機能のコストは線形のままです。

私はそれがそのように機能しないことを繰り返し説明しようと試みました-これらのすべての機能が追加されるとコードベースがフラクタルな方法で拡張されるということです。コストを抑える最善の方法は、どの新機能が本当に必要かを慎重に検討することだと説明しました。しかし、彼らは理解していないか、私が彼らをだましていると思っています。彼らはただ目を転がして怒ります。それらはすべて完全に非技術的であり、ソフトウェアの作成に何が影響するのかわかりません。

ビジネス言語を使用してこれを説明できる方法はありますか?時間の経過に伴うコードベースの成長を示す視覚化はありますか?このクライアントに対処する上で他の提案はありますか?

12
Derrick Miller

いくつかのアドバイス。まず、アナロジーを使用します-これをコンピューターなしで実装しているふりをします、たとえば電子メールではなくメールで実行します。機能を追加するときに、顧客が記入するフォームがますます複雑になるのを視覚化します。スタッフが必要とするスキルの幅の拡大と、各機能を実行するために必要なスタッフの数について考えてみてください。管理、トレーニング、人事、給与など、増加したスタッフを管理するためのコストの増加について話します。コンピュータはこれをより速く実行できますが、他のほとんどの側面がまだ適用されます。

次に、見つかったバグの数、コードの複雑さ、自動テストカバレッジ、開発時間、時間リファクタリング(存在する場合)などのコードとQAメトリックを収集します等々。 QAがある場合は、完全な回帰に必要なテストの数と、それらすべてを実行するために必要な時間をキャプチャします。事実でコストの増加をサポートすると、議論がはるかに難しくなります。異なるモジュールの数と相互依存性を示す単純な図でも役立つ場合があります。

3番目に、顧客がソフトウェアをどのように使用するかについて分析を収集します。誰も使用しない機能を作成する場合、自動生成された監査可能な真実の情報源を指すことができると、作業の優先順位付け(最悪)または不要な機能の回避(せいぜい)に役立ちます。

第四に、外部の意見を得る。これは、会社の規模と構造に応じて実行できる場合と実行できない場合がありますが、他の場所からシニアを引き寄せ、公平な意見を得ることができます。彼らはおそらく、開発慣行の改善(リファクタリングや出力の増加のための時間を得ることができるようにあなたのための勝利)と機能のより良い優先順位付け(あなたがより少ない、より良い機能を持っているようにあなたのための勝利)の組み合わせを提案するでしょう。または、 "The Lean Startup" by Eric Ries のような関連資料を提案してください。

最後になりましたが、ビジネスケースを理解してみてください。なぜビジネスがこれらの新機能をこれほどまでに推進していると思いますか?彼らは競合他社に追いつくことを試みていますか?彼らは経営陣から提供するよう圧力を受けていますか?おそらく、あなたを運転している人々は症状であり、原因ではありません。 「私たちと彼ら」の考え方は逆効果です。最初は非常に難しいかもしれませんが、これは長期的には役立ちます。

7
akton

私は以前あなたの立場になっていた。そして、それはあなたが思っているよりも少し簡単です。彼らの立場になってください。つまり、フラクタルやコードベースなどの単語の使用を停止する必要があります...彼らはそれが何を意味するのか理解していません。私はここで意地悪をしようとしているのではありません。ただし、聴衆に理解できる方法で対応する必要があります。私の場合、私は彼らを開発プロセスに完全に関与させ、各リソースが何をしているのか、そして新しい機能を追加することがそのリソースにどのように影響するのかを彼らが知っていることを確認しました。先週あなたが要求した機能に取り組んでいるこのエンジニアは、1時間あたりxの支払いを受けていることを彼らに知らせることによって、彼らにコストを明らかにしなければならないかもしれません。今度は、来週必要な他の2つの機能に取り組むために彼の時間を割く必要があります。彼はそのスキルを持つチームで唯一のエンジニアです。ビジネスマネジャーは、より多くの詳細を知る必要がありますが、あまり技術的ではありません。それは理にかなっていますか?

3
Donald Harris

新しい機能を追加するためのリクエストを管理するための簡単な方法を使用しています。初期の範囲外の各新機能を推定する必要があります。

そのため、お客様から機能の追加を求められた場合、私と私のチームは、何をすべきか、どのようにできるかを考えます。必要な情報がすべて揃ったら、見積もりを作成し、機能の実行を要求するためにシステムのどの部分を更新する必要があるかを説明します。

多くの専門用語なし。そして、顧客がETAを見ると、最終価格を計算できます。それから彼は、この機能が必要かどうかを決定します。

言葉なしで各顧客の要求に同意しないでください。各機能について話し合い、合意し、見積もる必要があります。

2
pro100sanya