项目时间的预估关系到项目的成败。项目时间管理包括按时完成项目所需的过程。然而,在实际项目中,经常会出现项目延误和严重失准的情况。估计时间本身就很困难。每个程序员的估计会与实际需要的时间略有不同。估计时间短表示忽略了某些事情(编译、测试、提交代码)。超出估计时间表明任务太大而无法理解。对于初级程序员来说,这种估计错误令人困惑,他们常常低估了一些任务,同时高估了一些稍微困难的任务。我觉得对于一个有经验的程序员来说,一个任务的时间应该在半小时到24小时之间,超过24小时的任务就需要拆分了。程序员可能认为在头脑中思考需要60个小时,但实际上,即使是有经验的程序员也需要将任务划分为可控的模块,然后进行分析和决策。认识到编程经验并不等同于时间估算经验也很重要。从未做过持续时间估算的程序员不会擅长估算时间。如果不将实际需要的时间与估计时间进行比较,你就无法从其他反馈中获得正确估计时间的经验。每个程序员都使用评估技术。为了提高你的这项技能,你可以在你承担的每一项任务中练习它。在任务开始时估算开发时间,并将其与最终实际花费的时间进行比较。这样,您不仅可以提高对任务细节的理解,还可以提高您的时间估算技能。Hofstadter定律:它总是比预期花费更长的时间,即使您考虑了Hofstadter定律。经常有PM抱怨,为什么公司的开发总不能预估自己的项目时间?!然而,精明的程序员对此早已习以为常。我什至见过一个本应在2天内完成的项目最终花费了4个月的时间,这甚至被“加倍时间”的经验法则所夸大。在较高的层面上,问题在于——工程师和PM或其他任何人对时间估算有不同的方法和思维方式。如果一切按计划进行,大多数工程师的第一反应是编写原型所需的最短时间。PM或者其他下游人员想知道的是这个项目什么时候准备好,这个时间到发布的时间是多久?所以这是两个完全不同的故事。所以对于工程师来说,掌握时间预估是一项必备技能,这意味着你是一个专业、稳定、高效的开发者。为什么需要时间估算?外部依赖没有什么能有效工作是凭空发生的。项目通常具有外部依赖性,例如与职能团队(财务、公关、客户支持)的沟通和客户沟通。协调这些外部依赖项通常是PM或CEO的工作,这意味着最有资格进行时间估算的人(工程师)并不是最需要做这些事情的人。这种不对称造成了根本性的紧张。优先级时间测量对于确定优先级也很重要。成本效益是工程领域的一个重要指标。即使你正在做的功能是世界上最强大的,如果经过时间计算需要很长时间才能实现,那么这个功能的优先级也不会太高。假设您正在开展一个项目,该项目将使您的网站速度提高50%,但在相同的时间内您可以完成2个项目,每个项目都将使您的网站速度提高40%。如果您不花时间做一些初始测量,您永远不知道您可以制作一个更快的网站!初步的时间预估假设我们已经达成共识,时间预估非常重要,那么让我们继续看如何预估。通常,我们低估了所需的时间,因为我们认为“编写原型需要多长时间?”。然而,交付的往往比原型大得多,你还需要考虑测试、调试和优化所花费的时间。还有会议、面试、代码审查,甚至电子邮件都需要时间。低估所需时间的另一个原因是意想不到的问题,这些问题往往没有被完全考虑,例如IDE更新需要额外花费一天的时间来配置环境等。基于此,最好不要相信所谓的经验和直觉太多了。第1步:制定技术计划在开始任何重要项目之前,您应该有一份技术计划或设计文件。本文档的目的是让其他人知道您在做什么并获得反馈。当你关注技术细节时,你会对具体花费的时间有更清晰的认识。例如,将某个库更新到新版本可能需要额外的一天。您甚至必须自己编写一个库。粒度在这里很重要。如果任何部分感觉不清楚,您应该了解更多信息,或者将其分解为更细化的步骤。同时,如果一个步骤过于细化,可能会过于脆弱,导致整个计划无效,所以一定要把握好这个度。有关文档中应考虑的内容的想法,请查看AliciaChen撰写的这篇文章。关键是跟PM沟通清楚,消除歧义,才不会推翻重来。Step2:每一步加上时间,估计文档中每一步执行需要多少时间,这往往涉及到细节的研究(是否已经有这方面的库?)。因此,根据项目的性质,先做一个简单的原型可以帮助揭示许多潜在的痛点。第3步:添加容错时间现在您有了初步的时间估计,还有许多其他因素需要考虑。随时调试:Bug是不可避免的,这取决于开发人员对特定代码库的经验以及代码库的成熟度。开会、节假日:一般开会、节假日不敲代码,那么实际敲代码的时间是多少?所以在估算时间的时候要好好看看日历。最终测试:通常你应该在编码时进行测试,但许多团队还需要在发布前进行集成测试,因此在你的估算中留出时间。代码审查:您通常在此代码库中进行多少轮?每轮需要多少时间?你要经过多少审稿人?密切关注审阅者的日程安排,以确保代码审阅的时间。当您考虑交付时间开销时,您可以看到您的时间估计和项目的实际发布时间更加匹配。尽管实际上可能会更长,但您也可能迫于缩短截止日期的压力。但当人们了解你的估计更准确时,他们就会更信任你。第四步:发布之后,复习上一期的时间预估是一件很痛苦的事情,但是复习可以帮助你下次做得更好。每个实际时间与预期时间不符的项目发生了什么,找到原因并加以改进。总而言之,这是关于沟通的。尽早并经常沟通以了解彼此的日程安排和不断变化的需求。与PM等相关参与者的沟通也可以让他们提供可能影响您的估计的重要信息。一个设计师可能会说动画需要一周,所以就把它剪掉。另一个PM可能还会补充说这个原型只是为了用户研究,这个迭代不必处理太多的错误。对于工程师来说,开诚布公比不切实际地缩短工期妥协更专业。对于PM和其他人来说,尊重这个估计可能是一个过程,但要知道光靠唠叨不会缩短持续时间。项目时间估算并不容易,它需要良好的沟通、同理心和功能优先级。阅读更多去外企?为什么其他程序员教你制作滑动顶层视觉效果这么简单NDK项目实战-高仿360手机助手卸载监控(安卓)面试题级答案(精选版)相信自己,你可以的做不到就不要做Arrivaled,onlyunexpected
