尽管Steve Yegge 很有智慧,但大多数开发人员都面临着从非技术客户那里收集到的需求。有时有项目经理与客户打交道并翻译他们的要求,有时则没有。无论如何,需求将发生变化的事实是不可避免的。
构成“良好编程实践”的大部分内容都与开发适应性强的系统有关,以便它们能够承受不断变化的需求。YAGNI、DRY、松散耦合等原则促成了这一点。诸如敏捷之类的迭代开发过程也试图解决试图击中移动目标的问题,当然,拥有一个正在测试的系统使得进行更改变得更加可行。
尽管如此,对于我们中的许多人来说,不断变化的需求似乎不仅会损害我们的软件质量,而且还会消耗我们的动力,让我们想要刺伤某人。
这个问题是关于如何管理客户,使他们能够以他们需要的方式改变他们的需求,同时阻止随意或轻率的改变。你怎么做呢?
- 您是否有项目经理将开发人员与客户隔离开来?
- 您有正式的变更管理流程吗?更换经理?
- 客户在真正需要时获得更改有多难?
- 相反,当“轻率”时,客户获得更改有多容易?
- 在解释变更成本时,您向客户提供了多少细节?
- 在收到更改请求后,您能多快向客户提供此信息?
- 哪些因素会破坏流程(例如无法对客户说不的 PM?)
- 什么对你有用?