Web 开发人员与其他专业人士一样,必须克服多年来形成的习惯和观点。
Web 开发人员有标准的流程和技术来完成工作。他们还有一些非正式的习惯和观点,这些会影响他们的工作——这些内容没有经过正式培训,而是从同事那里随时间积累起来的。
在本文中,我将分享一些自 2004 年以来作为开发者所经历的一些常见信念。当然,并非所有开发者都持有这些观点。
一名电子商务开发者的自白
完美的特性是不存在的。你向开发人员请求一个功能,他完成了它,但它与你想要的完全不同。这种情况发生得太频繁了。
构建完全符合某人需求的软件极其困难。第一次就做得完美无缺的情况很少见。即使在我自己的软件开发中,很多时候功能最终也没有完全按照我的计划实现。
通常有两个根本原因:沟通失败和资源不足。
当客户没有向开发者提供足够的信息,或者开发者没有提出关键问题,甚至可能是引发项目的数据本身存在缺陷时,就会出现沟通失败。
另一个原因是资源稀缺。我经常想,如果我有无限的时间、金钱和人力,我就能创建任何功能的软件。
但在现实商业世界中并非如此。时间、金钱、人力和计算资源都是有限的。在这些约束条件下,有时根本无法按请求完成该功能。
因此,开发者形成了“完美功能不可能实现”的观点。但始终有改进与开发者沟通的空间。增加资源几乎总是会有帮助的。
时间永远不够用。开发人员中另一个常见的感受是时间永远不够用。
- 随着截止日期临近,功能被仓促赶工。
- 开发过程比预期更困难,导致超支。
- 只有足够的时间完成一般水平的工作。出色的工作需要更长时间。
- 错误或不良数据使原始功能变得复杂。开发者必须花费更多时间,或者带着错误交付。
- 客户更改了功能需求,导致开发者的工作白费。
有许多情况会导致开发者认为缺乏时间是问题所在。实际上,每种情况都是一个不同的问题,可以通过不同的方式解决。
向你的开发人员明确说明,怎样才算是一个成功的功能。例如,如果五个选项中有三个在一周内就准备好了,这是否足够好?要把这些要求传达给你的开发人员。
代码运行正常,但按道理它本不该运行正常。有时代码会运行正常,尽管根据所有推理它本不该如此。这对开发人员来说是一个令人愉快的惊喜,但它可能会产生负面情绪。他们看到它在运行,但他们不明白为什么。
有时这与缺乏经验或信息不足有关。但其他因素也可能导致这种情况。
这在 bug(缺陷)中很常见。例如,客户报告了一个 bug,但随后有人在不告知开发人员的情况下将其修复了。结果,开发人员无法复现该问题,并认为这是一个糟糕的 bug 报告。
当这种情况发生时,我会尝试更彻底地测试它,以确保它确实能正常工作。如果一切正常,那我就耸耸肩,庆幸一番,然后继续前进。
当开发人员认为 bug 已修复时,让她花额外的时间进行测试,以确认无误。额外的测试时间几乎总是值得的。
软件系统本质上是不稳定的。经验丰富的开发人员共享的一个铁律信念是软件实际上是多么不稳定。一切如何协同工作并且确实能够运行,这看起来简直是个奇迹。
有一些关于流行且成功的软件系统的故事称,在幕后有人每小时重启一次服务器,只是为了保持系统在线。(这些故事是在公司成功之后才披露出来的。)
因此,一个导致整个商店崩溃的变更几乎是正常的。而每次都能完美运行的情况反而是不正常的。
经验丰富的开发人员创建了流程和工具来帮助稳定软件系统。(事实上,我上个月在“为防止软件故障,请使用自动化测试”中讨论过其中一个。)要求你的开发人员使用这些流程和工具,认识到它们只会提高稳定性,而不能保证稳定性。即使是亚马逊也会发生全站崩溃。

