在软件开发的项目里,延期好像成了常态。我跟很多同行聊,都会有这种情况。那项目为什么会这么容易延期?
因为软件不像房子这类实物,能通过特定的步骤达成。一个软件到底由多少代码写出来的,你在做之前是不知道的。而且代码多并不能代表做得就好。所以软件的复杂度更难评估。所以工程师在评估工作量时就不准确。尤其是那些他以前没有做过的功能。
那如果项目延期了,我们怎么办?
复盘 —— 找问题 —— 拆解问题 —— 制定解决方案 —— 迭代 —— 复盘
好像大部分事情都可以通过这种方式解决。
我们把问题按类型分为:可控和不可控。
可控的问题:1、资源分配不合理;2、没有及时同步信息;3、偏离计划后没有做好应对措施。
不可控的:1、需求变更(需求管理没做好);2、临时人员变动;3、线上出现bug或有临时紧急任务。
对于不可控的问题,我们能做的不多,只能尽量向上面争取资源,预留一部分时间来处理。比如对内上线时间与对外上线时间可以不一致。这种预留一般都不会很准,但需要。
而可控的问题,是需要我们在下一次项目中解决的。具体怎么做呢?
一、建立流程规范。通过线上项目管理工具(teambition、worktile、飞书之类的),把所有人的任务都进行线上管理。文档实时更新,对所有人公开透明。
二、明确每个任务的优先级。优先处理优先级高的任务。真遇到时间不够,对于优先级低的任务可以移到下一个版本里,节省项目时间,保证项目能按时上线。
三、通过每日站会,同步信息。每个人讲述昨天的项目进度、遇到的问题、以及需要的支持和今天的任务安排。会后,项目负责人要针对异常情况,第一时间找对应人讨论解决方案。能加班解决的,就加班解决。因为任务都是透明的,大家也就不会排斥加班了。
四、针对跨部门的项目协作,也要每天进行”对表“。也就是每天都要同步部门内任务进度给相关部门,保持项目衔接顺畅。
五、向上及时沟通。如果遇到的是团队内现有资源解决不了的问题,做好备选方案后告知上级,说明团队做出的努力以及需要什么帮助。
总结一下,通过建立过程规范、优先级管理、任务同步会议、及时处理异常。项目延期情况一定会得到改善。在经过项目的几轮迭代,团队会更有经验,越做越好。