我赢得了一个项目的竞标,现在客户(他本身来自IT部门)希望我以一种非常特殊的方式构建/实施解决方案。我确信应用程序会因性能问题而失败。而且它不易扩展。
这个特定的客户端/用户不知道我将使用的平台和语言(ASP.NET / SQL Server)。他唯一的知识是在Cobol,并试图让他了解我的POV只是让他生气。
他联系了我。他是选择我作为竞标赢家的人。他将批准我的支票。他是我与该公司的唯一联系人。
我觉得提供一个我知道会失败的解决方案感到不舒服,而且我不想被称为使其失败的愚蠢程序员。我知道这个应用程序的真正需求和使用模式,因为我过去已经为它们完成了项目。
另一方面,以他的方式执行此操作只会延长我的合同时间(因此,更多的财务收益),以便通过修改代码来解决问题。
我是否应该从项目中退出,知道我可能永远失去这个客户?
或者...
我是否应该服用避孕药并从扩展项目中获取经济利益,并将其视为成本不好?
答案 0 :(得分:27)
你从完全错误的角度看待这个问题。这不是来自对技术一无所知的客户的愚蠢要求。您认为这是一种设计约束,会将风险引入项目中。
因此,当您在项目中遇到风险时,您会做任何事情:定义,评估和推荐缓解策略。
这项工作将会产生一些事情。
首先,你可能会发现,虽然你对每一个特定的事情都是对的,当你把它们放在一起时,这并不重要。是的,这个程序不能很好地运行或扩展得很好,但是如果它的预计用例都不会遇到这些问题,那么很可能不值得解决它们。
其次,在告诉某人“这不会执行,我只是知道它”并告诉他“我对我们期望的用例进行基准测试”之间存在着天壤之别,看起来这种方法将会产生结果每个用户交易的响应时间为4秒或5秒。“
第三,如果您知道什么条件会使软件失败,并且您向客户阐明这些问题,并且客户说“我们真的只是希望它以这种方式工作”,那么您已经履行了您的责任。如果由于客户选择不降低您已识别的风险而失败,则没有人可以指向您并说这是程序员的错误。
最重要的是,证据胜过意见。你把这整个问题都描述为你的意见与客户的对比。这是一个失败的主张。您需要做的是将其描述为“这是我们需要解决的问题”。要以这种方式构建问题,你必须证明问题的存在,为此,你需要证据。
最终,客户决定是否应该减轻风险,而不是你。你可以向他提供最好的信息来支持他的决定。而且你需要明确表明,这是他的决定。
我不止一次地发现,一封简单的电子邮件可以完美地吸引注意力:
我一直在审查这个设计,我认为这里存在一个我们需要讨论的风险。 [方法A]对交易量非常敏感,我担心我们会有足够的用户,我们会遇到麻烦。
我使用[方法B]进行了一些测试,但它的灵敏度要低得多;在我的简单原型中,我能够每秒获得X次交易。这是有道理的,因为[技术比较两种方法如何处理事物]。
我特别担心这个因为[描述程序如果表现不佳会如何失败]。
这对我来说似乎是一个重大问题。如果是我,我会使用[方法B],因为[描述这种方法将如何降低风险]。
但是你对[方法A]比我更熟悉,我很乐意遵从你对此事的指导。您认为我们应该怎么做?
这条消息非常明确地说:“如果你忽视我告诉你的内容,这就是项目将如何失败,我将会有文件证明你告诉我这样做。”它实际上并没有说那个。
答案 1 :(得分:6)
我想你需要和他坐下来,并提出一些澄清问题。
您需要了解为什么他希望以特定的方式实施它。您需要证明您希望提供满足业务需求的可行解决方案。
可能存在一些潜在的问题,需要解决的问题,正如您所说,他可能不熟悉您提出的技术并需要一些保证。
如果做不到这一点,请确保完整记录并签字。
答案 2 :(得分:4)
选项1:离开,你已经有了不好的关系,而且不太可能改善。
然而,不要这样做,因为你想延长合约,这是最好的狡猾,最坏的是不诚实,但如果你需要合同......
选项2:请他记录他的架构选择和原因并将其作为规范签名。在合同中添加一个条款,表示您不保证使用他生成的规范的性能和/或可伸缩性,然后以他的方式实现它。向他发送您喜欢的方法和推理的演示文稿。
如果项目失败(他可能是对的)那么你总是可以指出你告诉他并提供了替代方案。
确保您善意地实施他的架构,即不要故意让它失败。做早期测试证明你的观点,并确保他知道他们失败了。在项目的整个生命周期中给出明确的书面警告,说明它正在偏离轨道。
祝你好运。认真考虑选项1.对于这个人来说,一个非常重要的记录是值得尝试的。答案 3 :(得分:3)
是否有可能创建一个像应用程序这样的小型原型来证明他是错的,而你是对的?如果你有扎实的证据,谈话就容易多了。
答案 4 :(得分:3)
我不想成为客户服务警察,但是将此视为“愚蠢的客户请求”可能是一个坏主意,除非它真的是(在这种情况下你应该毫无疑问地走开)。我认为一个更好的术语是“消息灵通的客户要求”。
考虑到这一点,请记住您的客户可能有真正的需求,您应该认识到(口头上对他们而言)。它只是被他们(知情度不高)的解决方案想法所掩盖。稍微探讨并试着了解他们真正想要的东西,然后提出一个你认为会更好的解决方案并解释为什么它会更好。这样做是为了让你不会对客户的能力提出疑问。没有人愿意与任何让他们感到愚蠢的人合作。
答案 5 :(得分:2)
很难建议采取具体步骤,因为我不知道这里的细节,但这是我的想法:
如果你构建了他想要的东西(而不是他需要的东西)并且你知道解决方案是错误的,那么你就是同谋的失败该项目。如果你知道它不会起作用而且无法扩展并且你无论如何构建它,那么如果你最终成为项目失败的“堕落者”并且不要感到惊讶下次不要再花更多的钱去做。
如果这个家伙生气,可能有很多原因,其中一个原因可能是他不了解技术并且困扰他。但是,我不知道情况,所以谁知道呢?我个人宁愿让这个家伙生气,并提出正确的解决方案,坚持正确的解决方案,而不是让他的情绪开车。
他可能是客户,他可能会持有支票,但这并不能使他聪明或正确。尽管有古老的格言,客户总是错的。现在,你可以用错误的方式或正确的方式接近他,他可能会对两者做出同样的反应。但无论如何,你都希望以正确的方式接近他。
最后,如果他坚持你按照自己的方式去做,除了主张和情感之外什么也不能支持他的方式,我会礼貌地离开这份工作。老实说,钱不值得。他可能会对你生气,但你知道你并没有浪费公司的钱来解决这个问题,你可以好好睡一觉。
至少,这就是我要做的事。
祝你好运!
答案 6 :(得分:2)
倾听和学习。真正对客户方法的利弊感兴趣。
以客户可以理解的方式声明您自己解决问题的方法确保记录您的方法的利弊。
然后讨论两种方式与客户做事,但不是“你的方法是愚蠢的,我是对的”方式,但真正感兴趣的是他的方法带来的好处即可。
如果你在他的方法中看到问题,请问他。但不是在“这不会起作用”的方式,而是好奇'这将如何规模'。 不要只是第二次猜测他的想法,而是知道这样做的事实和数据,这些和这些情况下的流量不会出现问题吗?
你甚至可以学到一些东西。努力!最后,您可能需要以他的方式对其进行编码,如果您真的了解陷阱会更好!
答案 7 :(得分:1)
基本上只有你才能回答这个问题。您最了解您的客户和您的情况,如果您能找到一种方法来完成这项工作,那就是您的来电。
就个人而言,我会拒绝这个项目。如果他们想留住你,请解释为什么你不能按照规定的要求服用该项目。
告诉他们如果他们想要你来实施项目,那么他们就会雇用你的专业知识,而不是他们在 IT部门的人员的专业知识
答案 8 :(得分:1)
如果你觉得不舒服,那就走开吧。 尽管我们抱有最良好的祝愿和最佳建议,但我们一直致力于为客户提供特定的解决方案,并且这使我们在将来不会感到悲伤。
如果它是一个财务问题并且你“需要”这项业务,那么我肯定会从时间的角度来看待这个项目。
告诉他们在什么样的时间表中可以实现的目标。当您遇到不同的里程碑时,请确保以模块化方式获得报酬。至少就是这样,如果你成为一个没有赢家的话,它会给你机会在将来离开。
另一个选择可能是向他们展示以他们的方式比你的方式花费多少钱。
答案 9 :(得分:1)
提出您的解决方案并解释(借助演示文稿 / 文档)为什么它更好。或者甚至做一个原型。
如果您证明,您的客户应该了解您在该领域具有技术领导力,并且信任您。
答案 10 :(得分:1)
如果你需要客户,他也需要你(可能更多)。毕竟,他是选择你的人。他是需要解决问题的人。
坚持认为你不会被他关于“如何”工作的指示所决定 - 该怎么做肯定是他的号召。你可能会看到一些冰融化。
答案 11 :(得分:1)
我建议和他一起尝试一些错误的方法。让他知道你对他的方法的顾虑是什么,并为他提供一些其他解决方案,以满足你的需求和他的需要。尽量避免咄咄逼人(不要说他错了),但要说你认为有更好的解决方案可以整合你的两种选择。
尝试练习“动词柔道”。对抗并不会给你带来任何积分,只会让他更加确定你只是在困难。同意他,建立与共同想法的融洽关系,然后轻轻地引导他走向解决方案。
答案 12 :(得分:1)
签订一份包含您的疑虑的合同,即使在客户的错误决定导致失败的情况下也会付款。然后让他们签名。
确保由经验丰富的律师执行该合同,因为很容易让它稍微出错,以便法院通过你,如果坏事变得更糟,你需要起诉这笔钱。
在签署之前让客户知道合同中的那一部分,也许他们会重新考虑。
或者,正如其他人所建议的那样,而不是经历所有这些麻烦:保释,离开或更好:跑。以你最快的速度。除非真的是很多钱,否则它不值得卖掉它。
(编辑:darn,Simon几秒钟就打败了我。)
答案 13 :(得分:1)
我会尽最大努力说服客户说他的方式可能会失败,然后我会尽力找到其他人为他做这份工作。