what you do already know about the 3rd party component
how long it takes you to create usable/helpful spikes for unknown areas
1. Get better at estimating those two things.
So, it's all about experience. No matter what methodology you use, they will help you to use your experience better, not replace it.
2. Try not to get lose track when working on those spikes.
They should be short, time boxed sessions. They are not about playing around with all the possible features listed on the marketing slides. Give them focus, two or three options to explore. Expect them to deliver one concrete result.
Update(Gishu): To summarize
Spikes need to be explicit tasks defined in the iteration planning step.
If spikes exceed the timebox period, stop working on it. Shelve the associated task. Complete the other tasks in the current iteration bucket. Return to the shelved task or add a more elaborate/broken down spike to the next iteration along with the associated task. Tag a more conservative estimate to the generation 1 spike the next time.
If you run out of time in your timeboxed spike, you should still stop and complete your other committed work. You should then add another spike to your next iteration to complete the necessary work you need to complete in order to accurately estimate the task resulting from the spike.
If there is a concern over spiking things for too long and this becoming a problem - this is one reason I like 1 week iterations. :-)
I agree with pointernil. The only issue is that your estimates are incorrect. Which is no big drama, unless you've just blown out a 3 million dollar project of course :-)
If it happens once, its a learning experience. If it happens again and the result is better, then you've got another learning experience under your belt. If you are constantly underestimating and your percentages are getting worse, you need to wisen up a bit. No methodology will get you out of this.
Spikes just need to be given the time that they need. The one thing I've seen happen repeatedly in my experience is that people expect to be able to nail a technology within a couple of hours, or a day. That just doesn't happen in real life. The simplest issue, even a bug caused by a typo, can have a developer pulling their hair our for huge chunks of time. Be honest about how competent yourself or your staff really are, and put it in the budget.
@pointernil.. It's more of no estimation coupled with a Indy-Jones Head-First approach to tackling a story. I estimate stories by their content.. currently I don't take into account the time required to find the right incantation for the control library to play nice. That sometimes takes more time than my application logic.. So to rephrase the Original question, should spikes be separate tasks in the iteration plan, added on a JIT basis before you start working on a particular story?
My Spikes are extremely focussed.. I just can't wait to get back to the "real" problems. e.g. 'How do I show a context menu from this control?' I may be guilty of not reading the entire 150+ page manual or code samples.. but then time is scarce. The first solution that solves the problem gets the nod and I move on. But when you're unable to find that elusive event or NIH pattern of notification used by the component, spikes can be time-consuming. How do I timebox something that is unknown? e.g. My timebox has elapsed and I still have no clue for plugging-in my custom context menu. How do I proceed? Keep hacking away?
Maybe this comes in the "Buffering Uncertainity" scheme of things.. I'll look if I find something useful in Mike Cohn's book.
发布评论
评论(4)
我猜您经常低估
1。 更好地估计这两件事。
因此,这一切都与经验有关。 无论您使用什么方法,它们都会帮助您更好地利用您的体验,而不是取代它。
2. 在处理这些峰值时,尽量不要迷失方向。
它们应该是简短的、有时间限制的会话。 它们并不是要尝试营销幻灯片上列出的所有可能的功能。
给他们重点,让他们探索两个或三个选项。 期待他们拿出一项具体成果。
更新(Gishu):总结
I guess you are constantly underestimating
1. Get better at estimating those two things.
So, it's all about experience. No matter what methodology you use, they will help you to use your experience better, not replace it.
2. Try not to get lose track when working on those spikes.
They should be short, time boxed sessions. They are not about playing around with all the possible features listed on the marketing slides.
Give them focus, two or three options to explore. Expect them to deliver one concrete result.
Update(Gishu): To summarize
如果您在时间限制内的时间用完了,您仍然应该停下来完成其他承诺的工作。 然后,您应该在下一次迭代中添加另一个峰值,以完成您需要完成的必要工作,以便准确估计由峰值产生的任务。
如果担心尖峰时间过长而成为问题——这就是我喜欢 1 周迭代的原因之一。 :-)
If you run out of time in your timeboxed spike, you should still stop and complete your other committed work. You should then add another spike to your next iteration to complete the necessary work you need to complete in order to accurately estimate the task resulting from the spike.
If there is a concern over spiking things for too long and this becoming a problem - this is one reason I like 1 week iterations. :-)
我同意指针。 唯一的问题是您的估计不正确。 这没什么大不了的,当然,除非你刚刚完成了一个 300 万美元的项目:-)
如果它发生一次,那就是一次学习经历。 如果这种情况再次发生并且结果更好,那么您就获得了另一次学习经历。 如果你总是低估自己,并且你的百分比越来越差,那么你需要明智一点。 没有任何方法可以让你摆脱这个困境。
只需要给尖峰他们需要的时间即可。 在我的经验中,我看到反复发生的一件事是,人们希望能够在几个小时或一天内掌握一项技术。 这在现实生活中不会发生。 最简单的问题,即使是由拼写错误引起的错误,也可能让开发人员花费大量时间。 诚实地了解您自己或您的员工的真正能力,并将其纳入预算。
I agree with pointernil. The only issue is that your estimates are incorrect. Which is no big drama, unless you've just blown out a 3 million dollar project of course :-)
If it happens once, its a learning experience. If it happens again and the result is better, then you've got another learning experience under your belt. If you are constantly underestimating and your percentages are getting worse, you need to wisen up a bit. No methodology will get you out of this.
Spikes just need to be given the time that they need. The one thing I've seen happen repeatedly in my experience is that people expect to be able to nail a technology within a couple of hours, or a day. That just doesn't happen in real life. The simplest issue, even a bug caused by a typo, can have a developer pulling their hair our for huge chunks of time. Be honest about how competent yourself or your staff really are, and put it in the budget.
@pointernil..
它更像是没有估计,再加上印地琼斯的“先入为主”的方法来处理故事。 我根据故事的内容来估计故事。目前,我没有考虑找到正确的咒语以使控制库发挥良好所需的时间。 有时这比我的应用程序逻辑需要更多的时间。因此,要重新表述原来的问题,峰值应该是迭代计划中的单独任务,在开始处理特定故事之前在 JIT 基础上添加吗?
尖峰非常专注。我迫不及待地想回到“真正的”问题上。 例如“如何显示此控件的上下文菜单?” 我可能会因为没有阅读整个 150 多页的手册或代码示例而感到内疚……但时间紧迫。 第一个解决问题的解决方案得到了认可,我就继续前进。 但是,当您无法找到组件使用的难以捉摸的事件或 NIH 通知模式时,峰值可能会非常耗时。 如何对未知的内容进行时间限制?例如,我的时间限制已过,但我仍然不知道如何插入自定义上下文菜单。 我该如何继续? 继续黑客攻击吗?
也许这属于“缓冲不确定性”计划。我会看看是否在迈克·科恩的书中找到了有用的东西。
@pointernil..
It's more of no estimation coupled with a Indy-Jones Head-First approach to tackling a story. I estimate stories by their content.. currently I don't take into account the time required to find the right incantation for the control library to play nice. That sometimes takes more time than my application logic.. So to rephrase the Original question, should spikes be separate tasks in the iteration plan, added on a JIT basis before you start working on a particular story?
My Spikes are extremely focussed.. I just can't wait to get back to the "real" problems. e.g. 'How do I show a context menu from this control?' I may be guilty of not reading the entire 150+ page manual or code samples.. but then time is scarce. The first solution that solves the problem gets the nod and I move on. But when you're unable to find that elusive event or NIH pattern of notification used by the component, spikes can be time-consuming. How do I timebox something that is unknown? e.g. My timebox has elapsed and I still have no clue for plugging-in my custom context menu. How do I proceed? Keep hacking away?
Maybe this comes in the "Buffering Uncertainity" scheme of things.. I'll look if I find something useful in Mike Cohn's book.