程序员如何理直气壮的拒绝乱改需求

图0:程序员如何理直气壮的拒绝乱改需求

【编者按】或许你听过这样一个段子:一如代码深似海,后面从此有无数的跟句:从此妹子是路人,从此代码是节操……或许,许多写代码的程序员每天应对的就是写不完的代码和改不完的bug。只想说,如果你只需要解决这两件事情算是幸福的了,因为多数程序员同志遭遇的不仅是以上的挑战。

本文出自CSDN

以下为正文:

我曾担任过开发人员和项目经理,现在是一家开发咨询公司的CEO。在担任这些角色期间我学到了一个经验教训:过多地屈从于客户的需求、希望和一时的心血来潮,将会限制你实际的工作能力以及正确解决问题的能力。

为什么说你需要学会说不,才能让客户和开发项目可以得到最好的结果呢?其中有三个原因:

1. 并非所有客户都适合你的团队

最近,一位客户告诉我他们不愿意支付预付款。我告诉他们可以选择即刻退出而不用付任何费用,我解释说:“我们提供定制软件,而非定制流程。”

最后,他们没有签约。虽然这在财务上并不是最好的结果,但对我的团队和业务来说这是最好的结果。

我没有在这个问题上变通并不是我想为难他们,而是因为我们已经开发出了久经考验的流程,而且如果我们希望持续扩大规模和盈利,就不能为了每个客户而调整我们的流程。

虽然这个问题关系到付款,但是也适用于我们业务的所有方面。如果客户希望由最合适的团队来负责他们的项目,那么他们也必须是我们最合适的客户。

Forrester的一份报告预测,2018年雇主可能需要为高级开发者和其他急需的人才支付高于市场20%的薪水。在技术人才短缺的情况下,相对较易找到新客户,但是却很难找到最好的开发人员。

要求客户同意我们的条款可以帮助我们管理项目,但同时也表明,与有困难的客户的付款相比,我们更加重视我们的开发人员的工作。即便没有新客户我的业务可以照常运转几个月,但是如果所有经验丰富的高级开发人员都离职的话,我们就完蛋了。

2. 客户付钱聘请的是专家,而不是听话的人

由于害怕失去客户或收到差评,很多领导被迫应允所有事情。然而,如果答应的事情会让团队陷入极大困境的话,那么你面临的风险更高。

没有人会跑到一家米其林的星级意大利餐厅,然后抱怨厨师不会做印度咖喱。因为你很明白,如果让别人做他们不擅长的事情,那一定无法满足你的期望。

因此,我和我的团队非常清楚我们提供的服务和不提供的服务。我们只做:PHP、Laravel、Java、Vue.js、Node、Ionic和Electron。这些都是现代的成熟的技术,我们可以快速地构建和扩展产品。

客户之所以付钱给你,是因为在某些事情上你做得比他们更好、更快。我们经常遇到的一个问题是,客户会拿出很多他们认为对达成目标所必需的功能或整合方案。我们所要做的是拒绝,并向他们展示我们可以用最简单和对用户更友好的方式来实现。

另一个常见的问题是,客户希望等到产品尽善尽美再开始让用户使用。但这不利于我们的工作。我们利用久经考验的敏捷方式来构建软件,并鼓励客户尽可能在早期让更多真正的用户来使用软件,以便我们做测试,发现故障,并改进功能。

3. 客户参与得太多或太少

在精益软件开发方法流行之前,公司的一个项目开发三年之久,到头来却发现产品并不符合实际目标的现象非常普遍。我相信如果使用迭代周期,你没有理由无法在三个月内做好软件的某个功能。但是有效地运转迭代周期需要客户从头到尾参与整个过程。

既然我和我的团队负责解决问题,那么遇到客户只给出简单需求就消失得无影无踪,最后还希望我们可以交付完整产品的时候,我们会选择拒绝。相反,我们希望与客户密切合作,推进快速迭代的开发过程。

我认为沟通和合作是开发项目的命脉,而且我们应该将成对的高级开发人员指派给客户,这些客户则需要在每个迭代周期结束时负责检查。

研究表明,与单个的程序员相比,成对的开发人员可以更好地考虑更多设计选择,并且可以开发出更简单、更加易于维护的最终产品,且设计问题和bug更少。

同时,也有客户参与过多的现象。关注管理细节的客户往往会分散开发团队的注意力,并可能极大地降低项目速度。因此,在每个迭代周期结束的时候,我们会提供两周(敏捷开发中每个迭代周期一般为两周)的进度汇报,而在迭代的关键时期,只有财务经理或项目经理作为联络人员负责维系客户,同时他们可以添加重要的任务到后备需求列表中。

客户最终选择你的原因是因为他们不想聘用并管理每个开发人员。如果你放任他们随意地推进你的开发项目,那么合同就没有意义了。所以在客户听到太多NO之前,如果你希望提供最好的服务,那么你需要掌控大局并知道何时必须坚定立场。

链接:https://thenextweb.com

作者: Phil Alves

译者:弯月,责编:琥珀

余下全文(1/3)
分享这篇文章:

请关注我们:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注