它的实际运作过程大致如下,以一个月迭代为例
项目管理用Excel也是能实现的,只是无法在线编辑而已。
个人对敏捷的定义
基于实际产品而不是纯理论对敏捷定义,它是如下的管理动作
它最终的作用
个人在真实项目中更喜欢使用PERT的编排方法,曾经对关键复杂项目进行了高达半年的规划排期。
敏捷无论如何吹爆,最终也要有工具作为承载。而ToB工具的特点是自上而下的压力传递,无论你是敏捷教练,还是软件销售,你的用户只是有决策权的人,而不是Scrum Master等小组长。
与工厂中推行JIT精细化管理类似,管理改进的举措都是自上而下的强制推行,而组员等搬砖用户没有选择的权利的,他们的反馈更像是“场景细节”,而这些结果是可以统计操纵的。
虽然上述有些政治不正确,但是toB业务的核心是以管理为中心,提高生产率,但是如果你抓不到核心用户的“管理”价值点,而反复耗费在细节的话,项目注定没有sponsor而失败,所谓的敏捷也是无法推行的。
大公司敏捷真的可以提速吗?
当然不能证明,“高频操作”并不能证明提高了速度,原因如下
事实上,根据我个人经验,就算H司是海归遍地的员工,能同时达到如下标准的Master已经少之又少
很多工作多年的Leader,带领的项目仍然陷入在债务的泥潭中无法脱身,导致组员提桶跑路。
很多开发比较抗拒估算时间这个工作 ,认为项目总是领导拍脑袋,反正从来没有算准过,所以估计工时是没用的。这种认知需要纠正,因为估算工时类似于分支预测中的cache,就算估算工时有偏向(命中失败),也会作为缓存为下次估算提供对比借鉴。通过后期改进总结就可以发现与理想估算间的GAP,进而持续改进。
此外,估算时间还可以协助发现任务不明确的问题,如果任务定义比较模糊,缺少验收标准,那么就会导致时间估算更加无从谈起,因此估算时间相当于提高了实施任务分解的管理者的要求。
最后,通过将所有工作进行估算,可以生成依赖有向图,就可以一定程度上解决"不可控"的紧张,也能每天对比计划反省是否达成目标。不要陷入非黑即白,只要看ROI录入耗时不赔本,就可以搞。
在电影中,有经验的狙击手会开两枪来校正风力,项目中估算时间也如此。
我推荐的流程如下
这里是纯搬砖的结构化知识工作,我个人一般将具体的Task分解到1~2Day,避免估算出现较大偏差。
比如,任务描述必须写"登录模块的前端菜单录入与对UI界面的实现",并指定某个前端开发人员;而不是"前端登陆模块"这种模糊的不可度量的任务。如果某个人长期都做不好分解,而且培训也没用的话,那么说明这个人脑子全是浆糊,建议赶紧换。
具体的时间估算,比如静态网页这类指标,可以考虑用过去积累的EMA指标来预测,这可能是后续AI的热点。
虽然这种搞法本质与工厂中的“规划部”没有太大的区别,即使被复杂系统领域的专家批评,但是本处重点在于控制质量,做出来就行了。
每月人力是固定的沉没成本,出现部分空转是可以接受的。
(此章节不属于敏捷的贡献)
How to program if you cannot?
我们以经典的“学游泳”为例,假如现在领导要求你“下周我们要进行游泳比赛,你评估下组员学游泳的时间”,你自己也不会游泳,那么应该如何解决呢?
这时那些画燃尽纸片的敏捷专家就没法教你了,因为他们只会照搬僵化的管理框架。这里本质上是形而上学 + 复杂系统 的问题,你无法精确估算未知内容的时间,但事实上,你拥有的解决方法是可以枚举的
我们要基于上述背景拍脑袋估算时间,拍脑袋也是有管理指标意义的,它可以帮你BinPacking排序时调整人员与任务的Mapping,人毕竟还是畏惧不确定性的。后续无论是否做出来,Burn down也对项目整体进展有决策作用。
至于如何三选一,假如你是为了创业而提高速度,选型上优先找外援,千万不要陷入到细节里面了,重点时间应该投入在设计用户的场景匹配程度与验收标准,因为需要反复试错才能找到真正方向。
其实再深入演绎的话,如果想投入更少的时间,做更多的事情,你将会进入“不确定与反脆弱”的领域,比如买股票。
很多需求与方案可能在排期阶段都不清晰,然后拍脑袋估工时,最终可能导致估算与事实不一致。
经过多次失败尝试,我发现了一个二八定律:
读者看到这里可能会问,为啥招聘时不能提高员工的素质?客观大环境如此。针对员工熟练度较弱的情况,此刻就不得不花费你的管理时间了,你需要每天早上开会过进展,做起包工头监工的工作,才能降低风险,等到新的惯性形成后,再降低开会次数。
关于如何开会,我以前已经写过,不要围一圈依次说,而是让你作为主持人去按照KPT原则提问
在敏捷开发中,讲究的是"特种部队”式,“外科手术”式的全能开发团队,然而在现实,很多企业事实上并不重视自己IT团队的开发,比如波音请外包做飞行软件,日本创业/IT请外包做,某五百强请精英OD干实际的活。这类如果要达到“真敏捷”的水平,需要根据员工的“熟练度”进行管理
这样做下来后,软件开发犹如快餐一样,你作为维护需求与实现的桥梁将非常累,可能写代码都没时间了
由于你将自己的工作分给了他人,对方不一定了解你想要什么,这是质量可能就有问题。你的价值是收集与处理信息,要明确度量标准,降低反馈延迟。
总而言之,这些工具可以自动化或者量化团队的项目进展,但是不能代替核心管理能力与节奏能力。
stand-up meeting是手段,不是目的,ROI后期很低
在大型组织中,敏捷master就是大头兵,带着一群螺丝钉搬砖,坐在办公室,拿着比富士康里工厂领班高的工资,工作难度不一定高。
在创业组织中,敏捷master又啥都干,我认为更加接近经理人的角色
在POC阶段(比如验证项目可行性),由于高不确定性,还没有迭代的概念,因此作用不大。比如我在POC场景下,内部细节是不会采用敏捷工具链的,管理中只记录一个stub作为deadline/demo day,内部细节的整理是耗时的,暂时不会在工时维度上整理。
敏捷只能做确定性强的高周转任务,不确定性的任务需要一个hero来完成
敏捷是一种快餐式的经验框架,经验意味着重复且体力的劳动,它能够帮助team形成惯性。
然而,无论多么强大高效的管理手段,都需要基于本身能力就很强的基础。本文只能帮助存在效率瓶颈的技术团队引入敏捷进行改进,如果项目已经空心化,债务多,一将无能累死三军,那么敏捷也救不了。
总架构师,开发者和Master的边界分别是什么?
敏捷管理如何处理task间的依赖关系?
功能点到底是按照功能拆解、还是按照前后端代码拆解?
Backlog由于人员与需求变动必然会膨胀,最后是否会变成一个垃圾堆?