怎样正确评估一个项目的开发周期

如何正确评估一个项目的开发周期?
这个问题下面大多数回答都是从产品的角度来回答怎么评估项目的开发周期,那么我站在开发的角度再来分析是怎么评估一个项目的开发周期。
前言正确评估一个项目的开发周期往往关系到公司的一些重要决策走向,可以说是非常关键。但是要正确评估一个项目的开发周期往往又是比较困难的,要求开发者具备丰富的项目经验才能正确评估出合理的开发周期,而初出茅庐的程序员往往不能合理地评估出一个项目的周期,特别是容易拍拍脑袋就随便给出一个时间,很可能会出现下面这种情况:
怎样正确评估一个项目的开发周期
【怎样正确评估一个项目的开发周期】
(图片来源于网络,侵删)
言归正传,如何正确地评估一个项目的开发周期呢?
首先要评估一个项目的开发周期,有几点诀窍要掌握,比如:
1.先知悉开发这个项目的外部依赖有哪些,需要哪些资源,需要跟哪些部门团队合作。
2.评定优先级
下面从一个项目开发阶段的几个过程详细聊聊需要做的事情:
step1.理解需求理解需求这个阶段非常关键,如果需求理解错了,后续的所有努力可能都是在做无用功。因此这一阶段评估的时候还是要预留足够的时间的。在理解需求这个阶段需要程序员反复和产品经理沟通确认需求点,确保双方的理解是一致的才好继续进行下一个阶段。一般产品经理要把需求文档罗列好,以storey的方式跟开发讲清楚。
step2.制定实现方案在开始任何一个重要项目之前,你都应该有一份技术计划或者设计文档。这个文档的目的在于让别人知道你在做的事情,并能获得反馈。当你注意到其中的技术细节时,你就会更清晰知道具体所耗费的时间,比如把某个库更新到新版本,可能会多花一天的时间。你甚至还得自己写一个库。
颗粒度在这里是很重要的。如果有哪一部分让人觉得不清楚,要么是你应该了解更多相关知识,要么得把它分解为更细致的步骤。与此同时,如果一个步骤太细的话,又可能会太脆弱导致整个计划无效,所以要把握好这个度。想要知道你的文档里应该考虑哪些东西,可以看看AliciaChen 的 这篇文章。关键在于跟 PM 沟通清楚,消除有歧义的地方,这样才不会导致最后要推翻重来。
step3.coding如果前面两个阶段都落实到位了,并且把实现思路都想好了,那么coding几乎可以说就是纯体力活了。其实我个人感觉就是有思路,然后完全投入码代码的状态中,进入大家说的进入“心流”的状态是最爽的。但是现实是当你撸代码撸得正起兴的时候总会被乱起八糟的事情打断的。
step4.测试测试包括开发时自己写的单元测试,另外说一点就是最好单元测试放到coding这个环节进行,尽量写一个方法就测试通过后在继续写,考虑到实际情况,这个还是很难做到的。一般公司会有专业的测试人员对开发好的功能进行整体的回归测试,接下来就是测试人员提BUG-\u0026gt;开发解决BUG的一个过程。
step5.上线一般上线的时间就是我们评估一个项目的deadline了。
总结总而言之一切在于沟通。提前沟通、经常沟通,了解彼此的日程和需求变更。
跟 PM 等相关参与者的沟通也能让对方提供可能会影响你估算的重要信息。一位设计师可能会说这个动画需要一周工期,干脆砍掉不要了。另一位 PM 也可能补充说这个原型只是对用户进行研究的而已,这次迭代不用处理太多 bug。
对于工程师来说,不要做不切实际的更短工期的妥协,开诚布公更显专业。对于 PM 和其他人来说,尊重这一估算可能需要一个过程,但要知道光靠唠叨是不可能缩短工期的。
项目时间估算不容易,唯有善于沟通、有同理心以及确定功能优先级才可以

参考资料:
https://segmentfault.com/a/1190000016544541


推荐阅读