Process 在决定一项功能时,你会怎么做?

Process 在决定一项功能时,你会怎么做?,process,software-design,Process,Software Design,你主要考虑实施它的原因,还是不实施它的原因?每种方法的优点是什么?我首先想到的是利益相关者(客户)。 这个功能对他有帮助吗?它真的是一种带来价值的功能特性吗 然后,我考虑技术含义和由此产生的复杂性,以便评估实现成本与没有该功能之间的权衡 基于反射的前两个元素,我可以开始知道我是否必须实现它 我想在实施或不实施它的原因之间没有明确的界限。我通常会进行成本效益分析。实施这项计划需要多少成本(金钱或时间),效益值多少(金钱或时间) 如果收益超过成本的幅度足够大,就可以完成 衡量标准通常是有报酬的工作的

你主要考虑实施它的原因,还是不实施它的原因?每种方法的优点是什么?

我首先想到的是利益相关者(客户)。
这个功能对他有帮助吗?它真的是一种带来价值的功能特性吗

然后,我考虑技术含义和由此产生的复杂性,以便评估实现成本与没有该功能之间的权衡

基于反射的前两个元素,我可以开始知道我是否必须实现它


我想在实施或不实施它的原因之间没有明确的界限。

我通常会进行成本效益分析。实施这项计划需要多少成本(金钱或时间),效益值多少(金钱或时间)

如果收益超过成本的幅度足够大,就可以完成


衡量标准通常是有报酬的工作的钱,个人的东西的时间,虽然有时有交叉。无论桌上有多少钱,我都不会牺牲太多与孩子们在一起的优质时间。

客户可以决定功能。如果我想到了什么,我就由客户来运行它。我们一起考虑如何使客户最重要的功能最快地实现。

< P>我认为重要的是考虑利弊,最终结果是成本效益分析。 这种分析的前景可能会发生很大的变化,这取决于新功能所针对的产品种类。我的很多工作都是在大型复杂应用程序上进行的,这些应用程序随着时间的推移而不断发展,是我客户业务的核心

因此,对一个新特性的大量分析集中在为什么不实现一个特性上;我将主要关注风险:

  • 要引入新功能的领域的架构有多好
  • 已经实现的单元测试的级别是什么
  • 正在实现的新功能是应用程序的核心吗
  • 如果我们错过了一些东西,一个bug出现了,会不会导致系统崩溃(不管是字面上的还是实际上使系统不适合它的用途)
最终,是否开发新功能是客户的决定。作为专业软件开发人员,我们有责任告知他们可能发生的成本,而这些成本可能超出了他们的实际成本和时间


令人高兴的是,我们也有责任提出他们可能认为甚至不可能的新功能

幻想决策问题:
功能
是否提高了
产品
做它特别适合做的事情的能力?如果是,则执行
功能
,否则不执行


现实决策问题:我们是否有足够的资金来证明实现
功能的合理性?不废话。

很多时候我们被要求加入某个功能。我的工作的一部分是能够在用户认为他们一直知道要包含什么的上下文中解释这一点。当然,他们知道自己想要什么,但你可以打赌,其他人想要的是稍微不同的东西。在我的世界里,重要的是我们能够超前一步思考并提供更多。我们得到的报酬是思考企业如何运作并为其提供服务

因此,我提出了一个策略,即添加一些功能更强大的东西,然后也提供用户想要的东西。因此,当别人要求某样东西时,它已经在那里了。这可以节省大量昂贵的交付周期


不幸的是,这并不总是可用或实用的,但如果可能的话,我喜欢这样做。我喜欢以编码应该是主动的而不是被动的这一格言来运行。

应该由客户/客户/干系人/消费者来驱动需要的功能。客户可以是真实世界的用户(您交付的单个公司或个人),也可以不是(您为其制造产品的市场)。但无论如何,它都必须来自最终用户

我们将所有新功能称为“用户故事”

当然,您需要做的是了解用户想要该功能的原因-用户试图解决的问题是什么,或者想要获得的优势是什么。在了解“如何”之前,您需要从用户那里了解“为什么”部分。

这基本上是说:

  • 列出可能的功能
  • 投票筛选出最差的功能
  • 为每个功能分配成本
  • 为每个参与者分配有限的功能预算
  • 在分配预算时,找出哪些功能最受欢迎

  • 如果某项功能可以帮助用户更快地完成某项任务,或者使用更多的知识完成某项任务,则应实施该功能。如果它能帮助用户,那么就实现它;如果它能让你的应用看起来更好,但对用户的应用没有帮助(只是看起来不错),那么就不要实现它