程序员「开发者成长」1x程序员五年总结出的经验法则( 五 )


作为在努力交付产品的开发人员和产品经理 , 我参加过很多估算会议 。
大家会说估算是为了规划 , 它们的目的是算出某项工作需要多长时间 , 使每个人都可以按此做计划 。
在我五年的工作经历中 , 只记得有一个项目是这样运作的 。 那是一个非常简单的安卓应用程序 , 没有外部依赖 , 没有什么技术复杂度 , 只有一个本地 mySQL 数据库和一些视图 。
在这个特别的案例中 , 因为几乎没有未知的东西 , 所以我们可以做出非常准确的估算 。 我们可以准确地预测什么事情在什么时候会准备就绪 , 误差控制在一两天之内 , 这对我们有很大的帮助 , 因为硬性期限定得非常紧张 。
在我参与过的项目中 , 这是唯一一个我们可以精确地量化我们的开发速度 , 并将其向着里程碑推进的项目 。
在所有其他项目中 , 估算的主要目的是施加压力 , 逼着大家去聊“但你说过只需要 5 天” , 这反过来又迫使大家更快、更努力 , 或者加更长时间的班 , 以便在未来不去聊这样的话题 。
我本身并不反对压力 。 但我认为重点是要认识到 , 这是做估算的主要目的 。
规则 19:明确区分硬性期限、软性期限、内部期限和预计完成日期
硬性期限:如果不能在这个期限前完成 , 就会对业务造成严重的影响 。
软性期限:如果没有在这个期限前完成 , 有些人可能会有麻烦 。
内部期限:这是一个团队内部目标 , 不会影响团队之外的任何人 。
预计完成日期:这是团队对工作将在什么时间完成的当前预测 。
我见过很多人因为把这些东西搞混而痛苦不堪 。 无论什么时候你收到一个期限 , 都得先问问这是哪一个 。 当然 , 通常情况下 , 内部期限必须保持在正轨上 , 才能达成硬性期限 。 但我想告诉大家的是 , 如果把内部期限当成硬性期限公布出来 , 是为了迫使大家多加加班 。
另一个需要牢记的是:经常会发生一种情况 , 当一个工程师给出一个预计完成日期时 , 其他人却把它设定成了硬性期限 。 千万不要这样做 。
规则 20:当有人提敏捷时 , 推行看板 , 而不是 Scrum
当有人说“我们做敏捷”时 , 对我来说 , 这是指每两周开一次团队会议 。 这就是敏捷对于我的全部意义 。
有些人可能会弄不清 Scrum 和看板这两种敏捷“风格”的区别 。 在我看来 , Scrum 意味着“你必须在这两周内完成某些事情” 。 看板则意味着“在两周内做你能做的事情” 。 如果你不清楚团队遵循的是 Scrum 还是看板 , 你要明确表达 , 应该推行看板 。
【程序员「开发者成长」1x程序员五年总结出的经验法则】考虑到估算的难度(参见规则 18) , Scrum 很容易就变成 , 你不得不加班去完成那两周内安排的事情 。