08-项目中不可控的任务如何安排和验收

项目中有时会有一些任务的时间是不可控的,不可控的原因在于该工作完全受制于他人。意思就是如果其他人没有做好,比如前后端同步开发,前端通常可能会快一些,然后要等后端提供接口,这个时候联调工作是没办法开展的,也不知道什么时候可以,自己就会很被动,走走停停,既浪费时间精力,也容易没有任何产出。这种通常是其他人还没做好的情况,最怕的是那一种,比如设备那边说已经很OK了,现在可以开发了,然后去试用了,发现还是不行,然后一下子不知道该干嘛了,也不知道什么时候可以改好,等的话可能要很久,就浪费时间了,不等的话可能一下子就修复好可用了,自己完全处于左右为难的状态。 之前有APP项目就是这样的情况,本来APP功能已经开发好了,然后测试阶段,设备经常出现问题,可以用但是又不稳定,经常测到一半就测不下去了,然后反馈给到设备那边,改了好几次,觉得可以了,又继续测试了,后来还是不行。反复多次我才醒悟苗头不对,不能再这样下去了,立马中止项目测试,和设备那边沟通,设备需要确保完全没有问题,再继续这个项目的工作,可以说是血的教训。 这个问题之所以会造成那么大的影响,是因为我们在和他人协作的时候,没有和对方明确一个具体的时间节点,而是很含糊地回答道:“等某某完成了我才可以对接”,然后再问一句:“那他什么时候可以做完呢?过几天吧”,到底是几天?哪一天的?不知道呢。这样是有隐患的,因为这些模糊的信息,负责对接的开发同事完全就是看天吃饭了,任何结果完全是随机的。过几天,可能是一天,也可能是两天,甚至是一周或者更多,再者,项目负责人调整项目任务的时间也会变得很困难。 我们需要和对方明确一个具体的时间节点,比如前端同事需要问下后端的同事,接口是哪一天可以提供使用,而这个使用的意思,基本上是自测过的,不说一个Bug都没有,至少是相对稳定的。我们知道这个具体的时间节点之后,就可以先安排其他事情了,项目开发工作的开展就会很清晰,而不是完全混乱的。

2025-03-25 · 1 分钟 · 4 字

07-项目中应提前准备下一阶段计划

在项目当前版本的功能开发任务都完成之后,人就空出来了,通常这个时候,项目负责人还有很多繁琐的工作要做,比如项目内部验收、提交测试申请和版本发布等等。为了给项目成员找事情做,就匆匆忙忙安排下个版本的任务,然后项目成员只是简单了解下需求,就开始敲代码了。前期的需求分析、方案设计、开发计划,项目负责人是没有时间系统地去梳理的,这就容易造成项目成员在新功能开发过程中,需求理解有偏差,加上当前版本发布时间节点不明确,目标感也不强。 项目负责人的开发任务应比项目成员提前3天左右时间结束,这个时候项目的其他功能还在继续开发,项目负责人可以借机着手准备下个阶段的任务(之所以是下个阶段,而不是下个版本,是因为有可能不是迭代这个项目了),将需求进行梳理分析,编写方案设计和制定开发计划,等到其他项目成员开发任务完成之后,就接着下个阶段的任务进行,项目负责人这时再回到当前项目,去做内部验收和提交测试申请,整个衔接是很清晰顺畅,不至于那么被动,捉襟见肘。

2025-03-24 · 1 分钟 · 2 字

06-项目计划如何制定

我们在制定项目计划的时候,如果只是把功能开发部分列出来,如下图所示: 可能会造成项目延期,在上一篇文章《05-项目为什么总是延期》中已经分析过了,这里就不再赘述了,我们现在要探讨的是,如何制定一个项目计划呢? 在开始项目计划制定之前,可以先了解一下开发模式的相关知识,这部分主要是《【清华大学】项目管理的逻辑(全6讲)》里面的内容,有兴趣的可以去看一下,还是很不错的。 1. 瀑布式开发 预测型开发,在还没有开始着手编写代码前,就可以提前预知结果如何,之所以叫瀑布式,是因为整个开发流程都是有序的,就像水从上往下流,每一步做很到位就到下一阶段。 2. 迭代式开发 迭代式开发,顾名思义,就是一个版本接着一个版本进行迭代,先将项目整体框架搭建好,然后基础布局全部铺开,就好像画人物肖像一样,先勾勒草图,画出人物整体轮廓,然后才依次画出脑袋、眉毛、眼睛、鼻子、嘴巴等等,全部画出来之后,才是着色。 3. 增量式开发 增量式开发,咋听之下,与迭代式开发的意思一样,实际上是不一样的,增量式开发的意思是,每次只构建一点,每个阶段就交付一部分,然后组合在一起,还是用画人物肖像来举例子,一开始先画头发,画完之后上色,然后接着是眉毛,画好之后着色,以此类推,全部画好一个地方再接着画另一个地方,如下图所示: 4. 敏捷式开发 适应型开发,灵活性很高,需求可以随时提,然后放到需求池里,可能两周一个周期发一个版本。因为能干的活儿很有限,就像坐地铁一样,人很多,挤不上去那就下一趟,所以敏捷开发的思路就是,未必做得到,所以下个版本实现需求,可以有节奏地持续开发。 以上就是常用的开发模式,但是我们在实际应用中,应该怎么选择哪一种开发模式呢?为此有一个STACEY矩阵图可以作一些参考,如下所示: 从上图中可以知道,选择哪种开发模式,是基于需求和技术两个维度去评估的,所以项目负责人在编写项目需求与方案文档的时候,可能就可以做出判断了。说回我们自身,开发模式毕竟只是项目管理中的一种技巧,要深刻认识到它并不是万能的,如果掉入盲目迷信权威的陷阱,那么就太死板了,真正应用的时候,还是要考虑实际情况,在遵循基本原则的基础上,要明白事物变化的重要性,在变化的世界里使用不变的方法是不现实的,没有任何一种开发模式能够适用全部的项目。 现在部门按照项目来管理,每个人都比较清楚自己要做的事情,也没有那么多交叉的任务,所以变更理应很少才对,在制定项目计划的时候,我们可以把项目开发的周期全部列出,虽然项目计划通常都会有变更,但项目计划最好能够做到有始有终,把全部任务时间明确一下,然后项目交付时间基本就确定了,其中的任意环节有变更,很有可能是不会影响到项目交付时间的。我们可以把项目计划分为11个环节,如下所示: 需求分析 原型设计 方案设计 开发计划 开发阶段 下版计划(下一阶段任务计划) 内部验收 产品验收 测试阶段 模拟升级 正式发布 复盘会议 如下图所示,就是根据这11个环节制定的项目开发计划,虽然实际情况会有所出入,但是可以知道这个项目12月底基本上就可以交付了,有这样很清晰的时间节点,对于接下来的开发工作,会更有目标和方向感,其中经常出现任务变更,大多是在开发阶段,但是并不代表做好这个环节就没事了,接下来的环节如果遇到问题,也是会影响到项目交付的,所以怎么能管理好一个项目,是需要多方面去思考和解决问题的,并不是只做好开发任务环节就行了。

2025-03-23 · 1 分钟 · 31 字

05-项目为什么总是延期

当前一个项目在开发新需求的时候,我们制定的计划只是列出功能开发的部分,并不是整个项目全部的周期,这就造成项目从开始到能够正式上线,时间规划是不全面、不清晰的(只是代码编写部分有时间计划),项目负责人基本上只会关注功能开发的部分,至于内部验收、Bug修复、测试周期和版本发布时间等等环节,有点听天由命,完全是看前一个环节进展的情况而定——前一个环节进展顺利,那就到下一个环节,进展不顺利就变更下个环节的时间,反复几次,项目上线的时间一拖再拖,遥遥无期。 之所以会这样,是因为在项目推进过程中,我们聚焦的一直是解决项目当前遇到的难题,为了解决这个难题,不断地调整项目任务计划时间,明天后天下周下个月等等。也许我们可以转换一下思路:项目推进过程中,以终为始,以最终结果为导向,聚焦项目上线发布这个目标。为了达成这个目标,我们要采取不同的做事情方式,也就是多维度思考如何解决问题。 导致项目进度受阻的问题有大有小,如果是不可抗力的情况(比如有的项目需要用到设备,结果设备完全用不了),那当然没有办法,但这种情况相对来说还是比较少的。其他的那些问题就要想一下,是不是当下一定要解决,或者说一定要从技术层面解决才行呢?那当然不是,我们的需求只是解决问题,问题解决了就行,并不关心用了什么方式。就好像要从广州到北京,需求只是要去到北京,并不在乎你怎么过去,是要坐飞机、坐动车、自己开车或者打车什么都可以,只要能到北京就行。 在项目推进过程中,项目负责人遇到问题时,以前可能是这样思考的:“这个问题解决起来很困难,可能需要5天的时间,我要问一下,项目计划能不能变更,调整一下上线的时间?“现在的话,如果是以终为始,可能就需要这样思考了:“这个问题解决起来很困难,可能需要5天时间,这个版本计划11月15日上线,时间有点紧张——这个功能是不是必须的?一定是这个版本要加的么?能不能下个版本?为什么需要5天的时间,有没有其他更好的解决方案?5天的时间里,我是不是可以先做其他事情?测试阶段、发版阶段还有没有什么潜在的问题?第三方编译走通过了么?时间有点赶,问题有点多,可能要动员一下,让大家知道现在时间有点紧张,加加班才行了,宁愿赶在前面,也不要后面遇到问题了没时间解决。” 我们倾向于哪怕只是一点点可能性,也要挣扎一下,不要那么容易就缴械投降。还是要回到小平同志说的那句话:“不管黑猫白猫,能捉老鼠的就是好猫。”

2025-03-21 · 1 分钟 · 5 字

04-项目负责人对业务不熟悉

一直以来,项目管理中存在一个较为突出的问题:项目负责人在接到产品需求后,往往只是简单浏览一眼,便着手制定项目开发计划。计划制定完成后,负责人通常只深入研究自己负责开发的模块,而对其他模块则不再深入了解。对于由其他同事负责开发的功能模块,项目负责人通常连三个基本问题都无法准确回答:一是“是什么”,即这个功能具体是什么;二是“为什么”,即客户为什么需要这个功能,这个功能对客户有什么实际用途,是否可以不开发;三是“怎么做”,即这个功能在前端和后端分别是如何实现的。即便能回答到第三个问题,通常也仅能涉及前端或后端的部分内容。而实际情况往往更为糟糕,有时连第一个问题都无法准确回答。负责开发该功能模块的同事,可能也是在开发过程中逐步了解需求,其对需求的掌握程度,刚好足以完成功能开发即可。 这种状况容易导致项目管理出现诸多问题,表面上看似平静,实则处于一种失控状态,主要体现在以下几个方面: 任务时间评估不到位:项目负责人由于对整体功能和需求缺乏深入了解,导致在评估任务所需时间时不够准确,经常需要变更任务计划,影响项目进度的稳定性。 风险意识不足:由于对业务不够熟悉,项目负责人无法提前识别潜在的延期风险因素,也无法有效判断是否需要安排加班来应对可能出现的问题,从而增加了项目按时完成的不确定性。 任务验收困难:在验收功能时,由于项目负责人对业务和需求不够了解,只能依赖开发同事的回答来判断功能是否实现以及是否与需求一致。这种情况下,验收工作往往流于形式,难以深入和全面地评估功能质量,导致验收工作的积极性和效果都不理想。 为了解决这些问题,项目负责人需要自行梳理一份详细的项目需求与功能实现文档。比如下图所示的文档格式。在文档中,将每个功能按照“是什么”、“为什么”、“怎么做”这三个问题进行清晰的梳理和记录。在项目推进过程中,一旦出现需求变更,应及时更新文档,确保项目负责人对项目的整体情况有清晰的把握和了解。

2025-03-20 · 1 分钟 · 6 字