5

私はプロジェクトの入札に勝ちましたが、クライアント (IT 部門の担当者) から、非常に特殊な方法でソリューションを設計/実装するよう求められています。パフォーマンスの問題で、アプリケーションがそのように失敗すると確信しています。また、簡単に拡張することもできません。

この特定のクライアント/ユーザーは、私が使用するプラットフォームと言語 (ASP.NET / SQL Server) について何も知りません。彼の唯一の知識は Cobol であり、彼に私の視点を理解させようとすることは、彼を怒らせるだけです。

彼は私に連絡しました。彼は入札で私を落札者に選んだ人です。彼は私の小切手を承認する人です。彼はこの会社との唯一の連絡先です。

失敗することがわかっているソリューションを提供することに不安を感じ、それを失敗させる愚かなプログラマーとして知られたくありません。私は過去に彼らのためにプロジェクトを行ったことがあるので、このアプリケーションに対する彼らの実際のニーズと使用パターンを知っています.

一方、彼のやり方でこれを行うと、コードを変更して問題を解決するために、私の契約をより多くの時間延長するだけです (したがって、より多くの金銭的利益を得ることができます)。

このクライアントを永久に失う可能性があることを知って、プロジェクトを辞任する必要がありますか?

または…</p>

ピルを服用して、拡張プロジェクトから経済的利益を得て、悪い評判を代償として想定する必要がありますか?

4

14 に答える 14

27

あなたはこれを完全に間違った視点から見ています。これは、テクノロジーについて何も知らないクライアントからの愚かな要求ではありません。これは、プロジェクトにリスクをもたらすと思われる設計上の制約です。

したがって、プロジェクトでリスクに遭遇した場合は、何をしても構いません。つまり、リスクを定義し、評価し、緩和戦略を推奨します。

  • リスクを定義します。 「パフォーマンスの問題」を引き起こし、「簡単に拡張できない」と言うのは、リスクを定義するものではありません。何を意味するのかを正確に指定する必要があります。実行されないのは何ですか?その理由は何ですか? これらの問題に直面するのは、どのような規模の変化でしょうか?
  • リスクを評価します。 さて、あなたは問題があると思います。どれくらい悪い?これらのパフォーマンスの問題が実際に発生することをどの程度確信できますか? そうした場合、ユーザーにどのような影響がありますか? あなたは、プログラムはスケーリングできないと言っています。規模が拡大すると、カードの設計上の欠陥が露呈するのでしょうか? 最も重要なことは、これをどのように知るかです。 ここでは、時間をかけてプロトタイプを構築してベンチマークすることで、無意味な議論を大幅に省くことができます。
  • 軽減戦略を推奨します。これを実装する正しい方法 は何ですか? なぜそれが正しい方法なのですか?繰り返しますが、どうやってこれを知っていますか? 繰り返しますが、プロトタイピングはあなたの友達です。

この演習を行うことで、いくつかのことが得られます。

最初に、すべての詳細について自分が正しいとしても、それらをすべてまとめると問題にならないことに気付くかもしれません。はい、このプログラムはうまく機能したり、うまくスケーリングしたりすることはありませんが、予測されたユースケースのいずれもこれらの問題に遭遇しない場合、それらを解決する価値はありません.

第二に、誰かに「これはうまくいかないだろう、私はそれを知っているだけだ」と言うのと、「私たちが期待するユースケースをベンチマークしました。このアプローチは4つの結果になるようです.または、ユーザー トランザクションあたり 5 秒の応答時間です。」

第三に、ソフトウェアが失敗する条件を知っていて、その懸念をクライアントに明確に伝え、クライアントが「私たちは本当にこのように動作することを望んでいるだけです」と言った場合、あなたは責任を放棄したことになります。あなたが特定したリスクをクライアントが軽減しないことを選択したためにこれが失敗した場合、誰もあなたを指摘して、それがプログラマーのせいだと言うことはできません。

何よりも、証拠は意見に勝ります。この質問全体を、クライアントの意見に対するあなたの意見のケースとして組み立てました。それは負ける命題です。あなたがしなければならないことは、「ここに私たちが解決しなければならない問題がある」という枠組みを作ることです。質問をそのように構成するには、問題の存在を実証する必要があり、そのためには証拠が必要です。

最終的に、リスクを軽減するかどうかを決定するのはクライアントであり、あなたではありません。彼の決定を裏付けるために、あなたができる最善の情報を彼に提供するのはあなた次第です. そして、それが彼の決定であることを、気にせずに明確にする必要があります。

私は、単純な電子メールが注意を完全に集中させることを何度も発見しました。

私は設計を見直してきましたが、議論する必要があるリスクがここにあると思います. [アプローチ A] は、トランザクションの量に非常に敏感であり、問​​題が発生するほど多くのユーザーがいることが心配です。

[アプローチ B] を使用して少しテストを実行しましたが、感度ははるかに低くなります。私の単純なプロトタイプでは、1 秒あたり X 件のトランザクションを取得できました。[2 つのアプローチが物事を処理する方法の技術的な比較] であるため、これは理にかなっています。

[パフォーマンスが悪い場合にプログラムがどのように失敗するかを説明する]ので、私はこれについて特に心配しています。

これは私にとって重大な問題のように思えます。私だったら、[アプローチ B] を使用します。なぜなら [このアプローチがどのようにリスクを軽減するかを説明する] ためです。

しかし、あなたは私よりも [アプローチ A] に精通しており、この件に関するあなたのガイダンスに喜んで従います. 私たちは何をすべきだと思いますか?

このメッセージは、「私の言うことを無視すれば、プロジェクトは失敗するだろう。あなたがそうするように私に言ったことを証明する文書を手に入れるつもりだ」とはっきりと言っています。また、実際にはそうも言っていません。

于 2008-10-25T22:25:09.317 に答える
6

彼と一緒に座って、明確な質問をする必要があると思います.

彼がその特定の方法で実装したい理由を理解する必要があります。ビジネス ニーズを満たす実用的なソリューションを提供したいと考えていることを示す必要があります。

あなたが提案した技術に精通していない可能性があり、いくらかの安心が必要であるとあなたが述べたように、いくつかの根本的な懸念、対処する必要がある問題がある可能性があります.

物事が完全に文書化され、承認されていることを確認できていない。

于 2008-10-25T19:04:20.063 に答える
4

オプション 1:離れてください。すでに悪い関係にあり、改善される可能性は低いです。

ただし、契約を延長したいという理由でやらないでください。それは良くてずる賢く、悪くすると不誠実ですが、契約が必要な場合は...

オプション 2:アーキテクチャの選択と理由を文書化し、仕様として承認するよう依頼します。彼が作成した仕様を使用してパフォーマンスやスケーラビリティを保証しないという条項を契約に追加し、彼の方法で実装します。あなたの好みのアプローチと推論のプレゼンテーションを彼に送ってください。

プロジェクトが失敗した場合 (彼が正しい可能性があります)、いつでも彼にそのように伝え、別の方法を提案したことを指摘できます。

彼のアーキテクチャを誠実に実装するようにしてください。つまり、故意に失敗させないでください。あなたの主張を証明する初期のテストを行い、彼らが失敗していることを彼が知っていることを確認してください. プロジェクトのライフサイクル全体を通して、プロジェクトが軌道から外れるという明確な書面による警告を彼に与えてください。

幸運を祈ります。オプション1を真剣に検討してください。その男とオフレコで心を通わせることは、試す価値があります。

于 2008-10-25T19:16:03.830 に答える
3

彼が間違っていて、あなたが正しいことを証明するアプリケーションのような小さなプロトタイプを作成することは可能ですか? 確固たる証拠があれば、話はずっと簡単です。

于 2008-10-25T19:03:17.740 に答える
3

私は顧客サービス警察になるのは嫌いですが、これを「ばかげたクライアント要求」として話すことは、実際にそうである場合を除き、おそらく悪い考えです (その場合は、疑いなく立ち去る必要があります)。より適切な用語は、「情報不足の顧客要求」になると思います。

それを考慮して、クライアントはおそらく真のニーズを持っていることを覚えておいてください。あなたはそれを(口頭で)認識する必要があります。それは、解決策に対する彼らの (十分な情報に基づいていない) アイデアによって偽装されているだけです。少し詳しく調べて、彼らが本当に求めているものを見つけようとし、それから、より良いと思われる解決策を提案し、それがより良い理由を説明してください。そして、クライアントの能力に疑問を投げかけないようにそうしてください。自分を愚かだと感じる人と一緒に働きたいと思う人はいません。

于 2008-10-25T19:14:25.987 に答える
2

聞い学ぶ。クライアントのアプローチの長所と短所に心から関心を持ってください。

顧客が理解できる方法で問題に対する独自のアプローチを宣言し、アプローチの長所と短所も文書化してください。

次に、「あなたのアプローチはばかげていて、私は正しい」という方法ではなく、顧客と物事を行うための両方の方法について話し合いますが、彼のアプローチがもたらすメリットに心から関心を持ってください。
彼のアプローチに問題がある場合は、彼に尋ねてください。しかし、「これはうまくいかない」という方法ではなく、代わりに「これがどのようにスケールするか」に興味を持ってください。彼の考えを推測するだけでなく、「このようにすれば、これらのケースやこれらのケースでトラフィックが多すぎると問題が発生するのではないか」という事実と数字を知ってください。

あなたも何かを学ぶかもしれません。がんばってね!最終的には、彼のやり方でコーディングする必要があるかもしれませんが、落とし穴を本当に理解している方が良いでしょう!

于 2008-10-25T19:51:39.327 に答える
2

ここで詳細がわからないため、具体的な手順を提案することは困難ですが、以下に私の考えを示します。

彼が望んでいるものを(彼が必要としているものではなく)構築し、解決策が間違っていることを知っている場合、プロジェクトの失敗に加担していることになります。それが機能せず、スケールしないことがわかっていて、とにかくそれを構築した場合、プロジェクトの失敗の「堕落者」になって、それ以上のお金を得ることができなくても驚かないでください。次回は正しく実行してください。

その人が怒っている場合、それはさまざまな理由である可能性があります。そのうちの 1 つは、彼がテクノロジーを理解しておらず、それが彼を悩ませていることです。でも、状況がわからないので、誰が知っていますか?私は個人的には、彼の感情に任せるよりも、男性を怒らせて正しい解決策を提案し、正しい解決策を主張したいと思っています。

彼は顧客かもしれませんし、小切手を握っているかもしれませんが、それは彼を頭が良いとか正しいとは言えません。古い格言にもかかわらず、顧客は常に間違っています。今、あなたは彼に間違った方法または正しい方法でアプローチすることができ、彼は両方に同じ反応をするかもしれません. しかし、あなたは彼に正しい方法でアプローチしたいと考えています。

最終的に彼が自分のやり方でやれと主張し、主張と感情以外では彼のやり方をサポートできないとしたら、私は丁重にその仕事を辞めます。正直、お金はもったいないです。彼はあなたに腹を立てているかもしれませんが、あなたが彼の会社のお金を問題の悪い解決策に浪費していないことを知っているので、あなたはぐっすり眠ることができます.

  • 正直に言ってください。
  • 彼の言うことを聞いてください。
  • 彼の感情であなたの判断を曇らせてはいけません。
  • 最後に、正しいことをしてください。

少なくとも、それは私がすることです。

頑張ってください!

于 2008-10-25T19:25:07.447 に答える
1

飢えていない限り、私はそのプロジェクトを救済するだろう. 私自身コンサルタントとして、私がお客様に提供できる唯一の価値は、私が所有している知識であると感じています(そして、彼らは持っていないか、そうでなければ彼らは私を雇ってくれないでしょう)。失敗することが「わかっている」ことに取り組むことは、コンサルタントの倫理規定に違反することになります (もしあれば)。

私は、クライアントのやり方が失敗する可能性が高いことをクライアントに納得させるために最善を尽くします。

于 2008-10-25T19:54:31.523 に答える
1

基本的に、この質問に答えられるのはあなただけです。クライアントと自分の状況を最もよく知っているのはあなたであり、これを機能させる方法を見つけることができるなら、それはあなた次第です。

個人的には、私はプロジェクトを辞退します。彼らがあなたを維持したい場合は、定められた要件の下でプロジェクトを引き受けることができない理由を説明してください.

彼らがあなたにプロジェクトを実装してほしいのなら、IT 部門の担当者の専門知識ではなく、あなたの専門知識を雇ったことを伝えてください。

于 2008-10-25T19:03:39.487 に答える
1

居心地が悪いと思ったら離れてください。私たちは、最善の願いと最善の推奨事項にもかかわらず、以前はクライアントに特定のソリューションを提供することに固執してきました.

それが経済的な問題であり、ビジネスが「必要」である場合、私は間違いなくタイムボックスの観点からプロジェクトにアプローチします.

どのようなタイムラインで何が達成できるかを伝えます。さまざまなマイルストーンを達成するたびに、モジュラー方式で支払いを受けるようにしてください。少なくともそうすれば、それがあなたにとって勝者にならない場合、将来立ち去る機会が得られます.

もう 1 つのオプションは、彼らのやり方でそれを行うと、あなたのやり方よりもどれだけ費用がかかるかを彼らに示すことかもしれません。

于 2008-10-25T19:04:58.533 に答える
1

ソリューションを提案し、(プレゼンテーションドキュメントを使用して) なぜそれが優れているのかを説明してください。または、それからプロトタイプを作成することもできます。

あなたがそれを証明するなら、あなたのクライアントは、あなたがその分野で技術的なリーダーシップを持っていることを理解し、あなたを信頼するべきです。

于 2008-10-25T19:07:09.357 に答える
1

あなたがクライアントを必要とするなら、彼もあなたを必要としています(おそらくそれ以上)。結局のところ、彼はあなたを選んだ人です。彼は問題を解決する必要がある人です。

仕事の「方法」に関する彼の指示に左右されないという立場を取りましょう-何をすべきかは確かに彼の呼びかけです. いくつかの氷が溶けるのを見る可能性があります。

于 2008-10-25T19:08:52.487 に答える
1

彼と一緒に誤った方向への戦術を試すことをお勧めします。彼の方法に対するあなたの懸念を彼に伝え、あなたと彼の両方のニーズに合った別の解決策を彼に提案してください。攻撃的になることは避けてください (彼が間違っているとは言わないでください) が、両方のオプションを統合するより良い解決策があると思うことを伝えてください。

「口頭柔道」を実践してみてください。対立的になっても、彼との関係がうまくいくわけではなく、あなたがただ難しいだけだということを彼に確信させるだけです. 彼に同意し、共通の考えについて親密な関係を築き、あなたの解決策に向けて彼を優しく導きましょう。

于 2008-10-25T19:09:50.193 に答える
1

あなたの懸念を含み、クライアントの悪い決定のために失敗した場合でも彼らがお金を支払うようにする契約を結びます. それから彼らに署名させます。

ただし、その契約は経験豊富な弁護士によって実行されていることを確認してください.

署名する前に、契約書のその部分をクライアントに認識させてください。クライアントは再考するかもしれません。

または、他の人が提案したように、このすべての問題を経験する代わりに、保釈するか、立ち去るか、より良い方法である実行してください。できるだけ早く。それが本当に大金でない限り、それを売り払う価値はありません。

(編集: くそー、サイモンは数秒で私を打ち負かしました。)

于 2008-10-25T19:16:47.993 に答える