那么我的问题是:如果我没有任何经验,也没有其他开发者在身边,该怎么做才能提供一个可靠的估计?我已经阅读了 Joel Spolsky 在 Evidence Based Scheduling 中的文章,但是如果我没有任何证据,那么如何应用它呢?
非常感谢您对这个问题的任何建议。
你没有提供一个确切的估计。你尽可能给出一个好的答案,并解释它只是一个非常粗略的估计,以及为什么它这么粗略。
如果你清楚地表明:
我认为你应该没问题。不过,你需要在书面上非常清楚地阐明这些事情,以便以后不要被粗略的估计束缚。
你可以说:“我不知道,我没有足够的证据。”
然后进行一些原型制作,以获取一些证据。
然后回答这个问题。
因此,您实际上可能能够估计何时能够给出估计。
就个人而言,我将估计看作统计分布,并尝试通过它来传达标准差的概念:
10意味着“有50%的可能性在8和12之间”
对于整体项目估计来说,很难比这更精确了。当然可以变得更加精确(将其拆分为独立的单个用户故事、集体估算每个故事以及其他敏捷实践),但这是有成本的。
(此外,估算不应该成为可交付成果的承诺,否则它会被无限增加而变得毫无用处)
提供一个粗略的估计,并且要非常清晰。
确定解决项目的策略。特别是要确定您可以交付作为工作中间版本的系统部件。请特别注意最接近完全功能性发布的中间版本,如果可能的话,将其余的内容排除在外(保留这些和任何出现的列表,计划作为后续项目)。
使用短迭代周期。考虑/分析中间版本如何适合2-6周的迭代周期。考虑到这给你带来的学习,并调整整体估计。
进行第一次迭代,并应用您对假设的了解。早期迭代中的偏差通常指估计存在问题。抵制考虑估计偏差是初始开销的诱惑,因为这可能会延迟您认识到估计存在偏差的时间点。请注意,我确实理解并同意项目速度随时间增加,但考虑这一点往往会隐藏/延迟问题。
我经常这样做。我做的几乎所有事情都是第一次。我如何估计?我猜测!然后我再猜测。每当进度表重新制定时,我会在每个时间间隔内继续这样做,因为项目计划是迭代的,只有在实际操作中才能知道。我的猜测相当准确,因为经过多年的实践,我已经弄清楚了什么看起来容易,什么看起来困难。