I like the Scrum concept of velocity when going from size estimates to schedule estimates and have applied it successfully for years.
The problems, user stories or features are estimated using some size unit: lines of code, function points, story points, ideal work hours, gummibears, whatever. Let's say we are estimating the size in "points".
To go from this size estimate to a schedule estimate, you apply the velocity: how many points worth of completed functionality the team produced in a given time, say a n-week sprint (iteration) where n is e.g. in the range 1..4. So if you have a velocity of say 300 points per 2-week sprint and you have 500 points worth of user stories to implement in your backlog. Therefore you need two 2-week sprints to complete them all. But usually it is applied the other way around: given a fixed duration sprint, which stories can be implemented bringing the maximum value and which stories should be postponed.
How do you get a velocity number? At first you have to guesstimate it. But right after the first sprint you will have some historical velocity data for your team. Start basing your velocity estimates on this data instead of guessing. The less you tweak the numbers, the more accurate they will be over time.
This way problem sizing does not have to consider anything else than the problem itself. Team characteristics such as experience, jelling etc. manifest themselves in velocity.
这可能取决于许多因素,例如团队对 Web 框架和 Web 技术的熟悉程度、应用程序的复杂性以及它与 Web 模型的契合程度 - 有些应用程序非常适合 Web 模型,而其他应用程序则不然。 例如,当 ASP.NET 刚刚问世时,我曾尝试将具有多个网格的内部桌面实用程序转换为 ASP.NET。 所有功能都已移植,但我无法获得用户接受,因为与原始桌面应用程序提供的类似电子表格的可用性相比,“点击次数太多”。
It probably depends on many factors like how familiar the team is to the web framework and web technology in general, complexity of the application, and how much it fits the web model -- Some application fit well into web model, while others don't. For example, I have attempted to convert an internal desktop utility with several grids into ASP.NET when ASP.NET just came out. All the features were ported, but I could not get the user acceptance because there were "too much clicking" compared to spreadsheet-like usability the original desktop app provided.
You may see increase in internal work due to splitting up work into (for instance) database, DAL, BLL, WS, UI, and reporting layer compared to more traditional desktop application. Another concern may be performance issues caused by network, browser, and/or centralizing computation to the server. You also might have to worry about browser compatibility.
Likely the only way to really know is to actually try doing some significant development in the framework you are interested with the team, implementing software of equal value and behavior.
发布评论
评论(2)
我喜欢 Scrum 的速度概念,从规模估算到进度估算,并已成功应用它多年。
问题、用户故事或功能是使用某种大小单位来估计的:代码行、功能点、故事点、理想工作时间、橡皮熊等等。 假设我们正在估计“点”的大小。
为了从这个规模估计到进度估计,您可以应用速度:团队在给定时间内完成功能的价值,例如n周的冲刺(迭代),其中n是例如在 1..4 范围内。 因此,如果您的速度为每 2 周冲刺 300 点,并且您有 500 点的用户故事需要在待办事项中实施。 因此,您需要两个为期两周的冲刺才能完成所有这些任务。 但通常它是以相反的方式应用的:给定固定持续时间的冲刺,哪些故事可以实现带来最大价值,哪些故事应该推迟。
如何获得速度数? 首先你必须猜测它。 但在第一个冲刺之后,您将获得团队的一些历史速度数据。 开始根据这些数据来估计速度,而不是猜测。 您对数字的调整越少,随着时间的推移,它们就会越准确。
这样,问题大小调整就不必考虑问题本身以外的任何事情。 团队特征(例如经验、凝聚力等)体现在速度中。
关于该主题的一个很好的参考是Mike Cohn 的敏捷估算和规划。
I like the Scrum concept of velocity when going from size estimates to schedule estimates and have applied it successfully for years.
The problems, user stories or features are estimated using some size unit: lines of code, function points, story points, ideal work hours, gummibears, whatever. Let's say we are estimating the size in "points".
To go from this size estimate to a schedule estimate, you apply the velocity: how many points worth of completed functionality the team produced in a given time, say a n-week sprint (iteration) where n is e.g. in the range 1..4. So if you have a velocity of say 300 points per 2-week sprint and you have 500 points worth of user stories to implement in your backlog. Therefore you need two 2-week sprints to complete them all. But usually it is applied the other way around: given a fixed duration sprint, which stories can be implemented bringing the maximum value and which stories should be postponed.
How do you get a velocity number? At first you have to guesstimate it. But right after the first sprint you will have some historical velocity data for your team. Start basing your velocity estimates on this data instead of guessing. The less you tweak the numbers, the more accurate they will be over time.
This way problem sizing does not have to consider anything else than the problem itself. Team characteristics such as experience, jelling etc. manifest themselves in velocity.
A good refence on the topic is Mike Cohn's Agile Estimating and Planning.
这可能取决于许多因素,例如团队对 Web 框架和 Web 技术的熟悉程度、应用程序的复杂性以及它与 Web 模型的契合程度 - 有些应用程序非常适合 Web 模型,而其他应用程序则不然。 例如,当 ASP.NET 刚刚问世时,我曾尝试将具有多个网格的内部桌面实用程序转换为 ASP.NET。 所有功能都已移植,但我无法获得用户接受,因为与原始桌面应用程序提供的类似电子表格的可用性相比,“点击次数太多”。
与更传统的桌面应用程序相比,由于将工作分解为(例如)数据库、DAL、BLL、WS、UI 和报告层,您可能会发现内部工作有所增加。 另一个问题可能是由网络、浏览器和/或将计算集中到服务器引起的性能问题。 您可能还需要担心浏览器兼容性。
真正了解的唯一方法可能是实际尝试与团队一起在您感兴趣的框架中进行一些重要的开发,实现具有同等价值和行为的软件。
It probably depends on many factors like how familiar the team is to the web framework and web technology in general, complexity of the application, and how much it fits the web model -- Some application fit well into web model, while others don't. For example, I have attempted to convert an internal desktop utility with several grids into ASP.NET when ASP.NET just came out. All the features were ported, but I could not get the user acceptance because there were "too much clicking" compared to spreadsheet-like usability the original desktop app provided.
You may see increase in internal work due to splitting up work into (for instance) database, DAL, BLL, WS, UI, and reporting layer compared to more traditional desktop application. Another concern may be performance issues caused by network, browser, and/or centralizing computation to the server. You also might have to worry about browser compatibility.
Likely the only way to really know is to actually try doing some significant development in the framework you are interested with the team, implementing software of equal value and behavior.