Project management 如果允许每个客户更改代码,您如何支持产品开发?

Project management 如果允许每个客户更改代码,您如何支持产品开发?,project-management,specifications,branch,Project Management,Specifications,Branch,你是如何应对的 允许客户随时更改软件是正常的吗?我在一个没有规范和不断要求更改的环境中工作 对于每一个新客户,我们都必须创建一个新的分支,并进行如此多的更改,到我完成时,我就有了一个完全不同的产品。正因为如此,我对编程几乎失去了兴趣 那么,我说不应该允许客户随意更改软件,这是不是错了 英语是我的第二语言,请原谅我的错误 相关: 你的公司正在毫无希望地陷入困境 你应该马上去找工作。指定应用程序与实施同样重要(甚至更重要)。至少给客户一个基线文档、UI模型或类似的东西,我认为这是至关重要的 随着系

你是如何应对的

允许客户随时更改软件是正常的吗?我在一个没有规范和不断要求更改的环境中工作

对于每一个新客户,我们都必须创建一个新的分支,并进行如此多的更改,到我完成时,我就有了一个完全不同的产品。正因为如此,我对编程几乎失去了兴趣

那么,我说不应该允许客户随意更改软件,这是不是错了

英语是我的第二语言,请原谅我的错误

相关:


你的公司正在毫无希望地陷入困境


你应该马上去找工作。

指定应用程序与实施同样重要(甚至更重要)。至少给客户一个基线文档、UI模型或类似的东西,我认为这是至关重要的

随着系统的发展和成熟,您必须接受更改请求,否则系统将受到熵的影响,您付出的任何努力都将永远失去。如果它是一个更商业化的产品,试着限制所有客户想要的更改。然后每个人都会得到附加值

如果您有基线文档,则可以收取定制费用。你想做的定制越少,收费就越高:P确保记录并估计所有变更请求。(我使用fogbugz进行此操作,但还有许多其他工具)如果客户为更改付费,那么在tleat,您将因更改系统的痛苦而得到补偿

我说错了吗 不应允许更改 按他的意愿使用软件

谁拥有这个软件?你还是他们

如果我拥有一所房子,如果我想的话,我可以每周雇人把它漆成不同的颜色。如果画家抱怨,我可以找一个新画家。如果我没钱了,可能是因为我是个白痴。但是画家在粉刷我的房子、拿到我的钱并用它养活他的家人方面没有做错什么


如果我拥有某个软件,我可以用它做任何我想做的事情。如果你不这样做,那么我会问其他人。

编辑:我最初错过了一部分,即你有很多客户,正在为每个客户定制一个软件。我将保留我的原始答案供参考,但它并不真正适用于这种特殊情况

在您的情况下,我建议您需要不同的策略来解决客户的问题。我见过的一种技术是,任何更改都需要与使产品对所有客户更有用保持一致。这意味着您可以对许多更改说“是”。例如,通过模板使UI可自定义。这将使所有客户受益,但可能是由于特定客户希望将外观和感觉符合其标准。但这也意味着你需要对某些请求说不,或者以一种对所有人都有用的方式修改它们

您可能还希望让您的客户使用类似的东西来提出功能(和bug)请求并对其进行投票。这允许您的客户对产品的方向有一些直接的输入,但强制通过所有请求进行过滤。同样,您不必总是接受最高级别的请求,也可以接受一些较低级别的请求。指导原则应该是使您的产品对最广泛的客户有用

我不认为为每个客户设立一个单独的、定制的分支机构是可行的,除非您计划只有有限数量的高薪客户。最终,您的版本控制系统将成为您的瓶颈,不允许您的公司发展,甚至不能很好地为您当前的客户服务

一旦进入更可持续的功能选择模式,我最初的答案可能仍然适用。希望这有帮助

原创

我要说的是,有些客户根本不值得拥有。只有你才能知道什么时候是这样

但是,我们的工作通常是发现客户的实际需求并提供这些需求。我建议遵循敏捷开发方法来实现这一点。很少有客户真正预先知道他需要什么。开发人员在开始编写代码之前,很少了解客户的需求。敏捷方法接受这一现实,并遵循使变更对流程的破坏性更小的实践

首先,敏捷方法采用轻量级流程,并将决策延迟到可能的最新时刻。有“足够”的前期规划来布置基本的架构框架,但在大多数情况下,它是随用随用的设计。这不像听起来那么随意,因为敏捷方法中使用的技术,如TDD、结对编程、重构等,都是鼓励良好设计和设计改进的可靠技术

第二,敏捷方法对文档的要求很低。这些方法虽然不是免费提供文档,但将文档维护保持在最低限度。变更最糟糕的一个方面是文档变得过时,必须不断更新以确保正确。敏捷方法识别那些真正有用的文档并维护它们,但是其他过时的文档可以被丢弃。它们会在需要的时候使用,但你不会被它们束缚。敏捷方法重视代码和测试的自我文档化

第三,敏捷方法鼓励基于相互信任的合作式开发。这是双向的。客户必须相信你考虑到了他们的最大利益,而你必须相信客户知道,或者至少在他看到我时能够认识到他需要什么