在决定某项功能时,您会怎么做?

时间:2022-10-19 21:45:43

Do you primarily think of reasons TO implement it, or reasons NOT TO implement it? What are the advantages of each?

您是否主要考虑实施它的原因,或者不实施它的原因?每个有什么好处?

9 个解决方案

#1


3  

This fine Joel Spolsky post basically says:

这篇精美的Joel Spolsky帖子基本上说:

  1. Make a list of possible features.
  2. 列出可能的功能。

  3. Vote to filter out the worst features.
  4. 投票过滤掉最糟糕的功能。

  5. Assign a cost for each feature.
  6. 为每个功能分配成本。

  7. Allot a limited feature budget to each participant.
  8. 为每个参与者分配有限的功能预算。

  9. Find out which features are popular when allocating the budgets.
  10. 找出分配预算时受欢迎的功能。

#2


2  

I usually do a cost benefit analysis. How much is this going to cost to implement (in money or time) and how much is the benefit worth (again money or time).

我通常会进行成本效益分析。实施(金钱或时间)需要多少费用以及价值多少(再次是金钱或时间)。

If the benefits outweigh the costs by enough of a margin, it gets done.

如果收益超过成本足够的保证金,那就完成了。

The measure is usually money for paid work, time for personal stuff although there's sometimes a crossover. I won't sacrifice too much quality time with the kids no matter how much money's on the table.

这项措施通常是付费工作的钱,个人的时间,虽然有时候会有交叉。无论桌子上有多少钱,我都不会为孩子们牺牲太多的时间。

#3


2  

I think first about the stakeholder (the client).
Will that feature help him ? Is it indeed a functional feature that brings value?

我首先想到的是利益相关者(客户)。这个功能会帮助他吗?它确实是一个带来价值的功能特征吗?

Then I think about technical implications and the resulting complexity, in order to evaluate the trade off between implementation cost vs. not having that feature.

然后我考虑技术含义和由此产生的复杂性,以评估实施成本与不具备该特征之间的权衡。

Based on those two first elements of reflexions, I can begin to know if I must implement it or not.

基于这两个反思的第一个元素,我可以开始知道我是否必须实现它。

I guess there is no clear cut between reasons to or not not implement it.

我想在没有实现它的原因之间没有明确的切割。

#4


1  

I think that it is important to consider both pros and cons, with the end result being a cost benefit analysis.

我认为考虑利弊是很重要的,最终结果是成本效益分析。

The landscape of that analysis can shift a lot depending on the sort of product the new feature is proposed for. A lot of my work is on big complicated applications that have evolved over time and are core to the business of my customers.

该分析的前景可能会发生很大变化,具体取决于新功能的产品种类。我的很多工作都是针对随着时间的推移而发展的大型复杂应用程序,并且是我的客户业务的核心。

Consequently a lot of analysis of a new feature focuses on why not to implement a feature; I will largely concentrate on risk:

因此,对新功能的大量分析着重于为什么不实现功能;我将主要关注风险:

  • How well architected is the area where the new feature is to be introduced?
  • 构建新功能的区域有多好?

  • What is the level of unit testing already implemented?
  • 已经实施的单元测试级别是多少?

  • Is the new feature being implemented right at the heart of the application?
  • 新功能是否正确应用于应用程序的核心?

  • What happens if we miss something and a bug gets out into the wild, could it bring the system down (either literally or by effectively making the system unfit for its purpose)
  • 如果我们错过了某些东西并且一个bug出现在野外会发生什么呢?它会导致系统崩溃(无论是字面上还是通过有效地使系统不适合其目的)

At the end of the day, it is the customer's decision on whether or not a new feature is devloped. As professional software developers it is our responsibility to inform them of possible costs that may not be visible to them beyond the bare dollars and time.

在一天结束时,客户决定是否开发新功能。作为专业软件开发人员,我们有责任告知他们可能的成本,除了美元和时间之外,他们可能看不到这些成本。

The happy flip side is that we also have the responsibility to propose new features that they may not have thought even possible!

幸福的另一面是,我们也有责任提出他们可能没想到的新功能!

#5


1  

A lot of the time we're asked to put in a certain feature. Part of my job is being able to interpret this in the context of users who think they know what to include all the time. Sure, they know what they want, but you can bet someone else wants something slightly different. Its important in my world that we can think one step ahead and deliver more. We're paid to think how the business works and provide for them.

很多时候我们被要求加入某个功能。我的部分工作是能够在认为他们知道要包含所有内容的用户的上下文中解释这一点。当然,他们知道自己想要什么,但你可以打赌别人想要的东西略有不同。在我的世界中,我们可以认为领先一步,提供更多,这一点非常重要。我们付出的代价是思考业务如何运作并为其提供服务。

Thus, i come up with the strategy of adding something a bit more powerful, and then also delivering what the user wants as well. Thus, when someone else asks for something, its already there. This can save a lot on costly delivery cycles.

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

Unfortunately, this is not always available or practical, but if possible, i like to do it. I like to run with the motto that coding should be proactive rather than reactive.

不幸的是,这并不总是可用或实用,但如果可能的话,我喜欢这样做。我喜欢这样的座右铭:编码应该是主动的而不是被动的。

#6


0  

The customer gets to decide on features. If I think of something I run it by the customer. Together we figure out how to get the customer's most important features implemented soonest.

客户可以决定功能。如果我想到了一些我由客户经营的东西。我们一起弄清楚如何最快地实现客户最重要的功能。

#7


0  

Fantasy decision-making question: Does feature improve product's ability to do what it is particularly suited to do? If yes, implement feature, else don't.

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

Reality decision-making question: Do we have enough money to justify implementing feature? No? Crap.

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

#8


0  

It should be the client/customer/stakeholder/consumer that should drive what feature needs to be there. The client can be a real world user (single company or individual you are delivering) or not (a market you are making a product for). But either way, it has to come from an end-user.

应该是客户/客户/利益相关者/消费者应该推动需要的功能。客户可以是真实世界的用户(您正在交付的单个公司或个人)或不是(您正在为其制作产品的市场)。但不管怎样,它必须来自最终用户。

We call all our new features "user stories".

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

What you certainly need to do is to understand why the user wants that feature - what is the problem that the user is trying to solve or advantage it wants to gain. You need to get the 'why' part from the user before you get to 'how'.

你当然需要做的是理解用户为什么想要这个功能 - 用户试图解决的问题是什么,或者想要获得哪些优势。在进入“如何”之前,您需要从用户那里获得“为什么”部分。

#9


0  

Implement a feature if it will help the user complete a certain quicker or complete it with more knowledge. If it will help the user, implement it, if it makes your app look better but doesn't really help the user around the application (just looks good) then don't implement it.

实现一项功能,如果它可以帮助用户更快地完成某项功能或完成更多知识。如果它会帮助用户,实现它,如果它使你的应用程序看起来更好但是并没有真正帮助用户围绕应用程序(只是看起来不错)然后不实现它。

#1


3  

This fine Joel Spolsky post basically says:

这篇精美的Joel Spolsky帖子基本上说:

  1. Make a list of possible features.
  2. 列出可能的功能。

  3. Vote to filter out the worst features.
  4. 投票过滤掉最糟糕的功能。

  5. Assign a cost for each feature.
  6. 为每个功能分配成本。

  7. Allot a limited feature budget to each participant.
  8. 为每个参与者分配有限的功能预算。

  9. Find out which features are popular when allocating the budgets.
  10. 找出分配预算时受欢迎的功能。

#2


2  

I usually do a cost benefit analysis. How much is this going to cost to implement (in money or time) and how much is the benefit worth (again money or time).

我通常会进行成本效益分析。实施(金钱或时间)需要多少费用以及价值多少(再次是金钱或时间)。

If the benefits outweigh the costs by enough of a margin, it gets done.

如果收益超过成本足够的保证金,那就完成了。

The measure is usually money for paid work, time for personal stuff although there's sometimes a crossover. I won't sacrifice too much quality time with the kids no matter how much money's on the table.

这项措施通常是付费工作的钱,个人的时间,虽然有时候会有交叉。无论桌子上有多少钱,我都不会为孩子们牺牲太多的时间。

#3


2  

I think first about the stakeholder (the client).
Will that feature help him ? Is it indeed a functional feature that brings value?

我首先想到的是利益相关者(客户)。这个功能会帮助他吗?它确实是一个带来价值的功能特征吗?

Then I think about technical implications and the resulting complexity, in order to evaluate the trade off between implementation cost vs. not having that feature.

然后我考虑技术含义和由此产生的复杂性,以评估实施成本与不具备该特征之间的权衡。

Based on those two first elements of reflexions, I can begin to know if I must implement it or not.

基于这两个反思的第一个元素,我可以开始知道我是否必须实现它。

I guess there is no clear cut between reasons to or not not implement it.

我想在没有实现它的原因之间没有明确的切割。

#4


1  

I think that it is important to consider both pros and cons, with the end result being a cost benefit analysis.

我认为考虑利弊是很重要的,最终结果是成本效益分析。

The landscape of that analysis can shift a lot depending on the sort of product the new feature is proposed for. A lot of my work is on big complicated applications that have evolved over time and are core to the business of my customers.

该分析的前景可能会发生很大变化,具体取决于新功能的产品种类。我的很多工作都是针对随着时间的推移而发展的大型复杂应用程序,并且是我的客户业务的核心。

Consequently a lot of analysis of a new feature focuses on why not to implement a feature; I will largely concentrate on risk:

因此,对新功能的大量分析着重于为什么不实现功能;我将主要关注风险:

  • How well architected is the area where the new feature is to be introduced?
  • 构建新功能的区域有多好?

  • What is the level of unit testing already implemented?
  • 已经实施的单元测试级别是多少?

  • Is the new feature being implemented right at the heart of the application?
  • 新功能是否正确应用于应用程序的核心?

  • What happens if we miss something and a bug gets out into the wild, could it bring the system down (either literally or by effectively making the system unfit for its purpose)
  • 如果我们错过了某些东西并且一个bug出现在野外会发生什么呢?它会导致系统崩溃(无论是字面上还是通过有效地使系统不适合其目的)

At the end of the day, it is the customer's decision on whether or not a new feature is devloped. As professional software developers it is our responsibility to inform them of possible costs that may not be visible to them beyond the bare dollars and time.

在一天结束时,客户决定是否开发新功能。作为专业软件开发人员,我们有责任告知他们可能的成本,除了美元和时间之外,他们可能看不到这些成本。

The happy flip side is that we also have the responsibility to propose new features that they may not have thought even possible!

幸福的另一面是,我们也有责任提出他们可能没想到的新功能!

#5


1  

A lot of the time we're asked to put in a certain feature. Part of my job is being able to interpret this in the context of users who think they know what to include all the time. Sure, they know what they want, but you can bet someone else wants something slightly different. Its important in my world that we can think one step ahead and deliver more. We're paid to think how the business works and provide for them.

很多时候我们被要求加入某个功能。我的部分工作是能够在认为他们知道要包含所有内容的用户的上下文中解释这一点。当然,他们知道自己想要什么,但你可以打赌别人想要的东西略有不同。在我的世界中,我们可以认为领先一步,提供更多,这一点非常重要。我们付出的代价是思考业务如何运作并为其提供服务。

Thus, i come up with the strategy of adding something a bit more powerful, and then also delivering what the user wants as well. Thus, when someone else asks for something, its already there. This can save a lot on costly delivery cycles.

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

Unfortunately, this is not always available or practical, but if possible, i like to do it. I like to run with the motto that coding should be proactive rather than reactive.

不幸的是,这并不总是可用或实用,但如果可能的话,我喜欢这样做。我喜欢这样的座右铭:编码应该是主动的而不是被动的。

#6


0  

The customer gets to decide on features. If I think of something I run it by the customer. Together we figure out how to get the customer's most important features implemented soonest.

客户可以决定功能。如果我想到了一些我由客户经营的东西。我们一起弄清楚如何最快地实现客户最重要的功能。

#7


0  

Fantasy decision-making question: Does feature improve product's ability to do what it is particularly suited to do? If yes, implement feature, else don't.

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

Reality decision-making question: Do we have enough money to justify implementing feature? No? Crap.

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

#8


0  

It should be the client/customer/stakeholder/consumer that should drive what feature needs to be there. The client can be a real world user (single company or individual you are delivering) or not (a market you are making a product for). But either way, it has to come from an end-user.

应该是客户/客户/利益相关者/消费者应该推动需要的功能。客户可以是真实世界的用户(您正在交付的单个公司或个人)或不是(您正在为其制作产品的市场)。但不管怎样,它必须来自最终用户。

We call all our new features "user stories".

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

What you certainly need to do is to understand why the user wants that feature - what is the problem that the user is trying to solve or advantage it wants to gain. You need to get the 'why' part from the user before you get to 'how'.

你当然需要做的是理解用户为什么想要这个功能 - 用户试图解决的问题是什么,或者想要获得哪些优势。在进入“如何”之前,您需要从用户那里获得“为什么”部分。

#9


0  

Implement a feature if it will help the user complete a certain quicker or complete it with more knowledge. If it will help the user, implement it, if it makes your app look better but doesn't really help the user around the application (just looks good) then don't implement it.

实现一项功能,如果它可以帮助用户更快地完成某项功能或完成更多知识。如果它会帮助用户,实现它,如果它使你的应用程序看起来更好但是并没有真正帮助用户围绕应用程序(只是看起来不错)然后不实现它。