如果把你放到一个人迹罕至的地方,你能生存多久?
生活中大家可能不会真正面对这样的野外生存挑战。不过近些年持续保持热度的“荒野求生”类节目,让大家有机会近距离观察到:在野外生存会遇到什么样的困难,以及野外生存经验丰富的人是如何应对挑战并生存下来的。
在荒无人烟的野外,没有带任何工具的你面对的是一个充满未知、瞬息万变的环境,其中的生存资源有限并充满了危险。要想很好的生存下来,求生者需要尽快获得必须的几项生存资源:水、食物、火、住所。在未知环境中,求生者必须不断的探索、尝试并根据情况随机应变。
有趣的是如果和互联网行业比较,在荒野中生存和在互联网行业生存,两者有非常类似之处。
在经过了大爆发期的互联网行业,容易摘的果子都被摘掉了,留下的则是更多需要努力探索的未知领域。互联网行业的各个领域竞争都十分激烈,情况瞬息万变,机会稍纵即逝。
在这种具有高度不确定性的环境中,如何不断地抓住新的机会更好的生存下来,是每个企业面临的难题。
产品该往哪个方向走?怎么尽早知道是否走对了?这两个问题必须不断得到回答。和荒野中的求生者类似,在寻求答案的过程中,很难制定出只要照着做就能够实现目标的一个完美计划。
我们需要计划,但是无法完全依赖计划。企业同样需要通过不断的探索和尝试,快速试错,来筛选出对的路。
然而,试错是有代价的,企业还需要想尽办法降低试错成本,努力以最小成本、快速试错的方式发现并抓住机会生存下来。
在这样高度不确定的环境下,互联网企业中的项目管理面临着巨大的挑战:
· 计划经常需要调整
· 需求变更太多,造成了大量浪费
· 项目产出很难真正带来价值
· 交付周期不断被压缩,团队疲于奔命,但成效不彰
为了让项目管理活动更好地适应这一环境,支撑企业更好地生存,就必须打破确定性思维。
确定性思维忽视了变化带来的挑战,把成功寄希望于在一开始什么都想对,什么都做对。然而在高度不确定的环境下这几乎是不可能的。所以要努力实现下面的一些转变(->):
· 不愿轻易尝试、极力避免失败 -> 以最小成本快速试错
在确定性思维下,一件事没做成功是件让人感觉丢脸的事,一定是因为某些地方没做好才会失败,所以为了避免失败需要充分准备,只有在确保万无一失才开始动手。
然而在高度不确定的环境下,这成了我们迈向死亡的推动力。你能够想象在荒野中的求生者,一定要通过严密分析和论证确信自己能找到水源,才肯翻过一座小山吗?那样你有大概率会渴死在原地。
· 追求大而详尽的计划 -> 迭代式小规模计划+长期路线图
大而详尽的计划面临的问题是难以应对变化,一旦变化来了计划就要做很多调整,原来花的大量时间就被浪费了。迭代式小规模计划方式可以降低变化带来的冲击,同时通过结合长期路线图也不会失去对长期远景的规划。
· 追求完整、详细的需求文档 -> 需求渐进明细并切分到小粒度
完整详细的需求文档面临的问题同样是难以应对变化,解决方式是通过渐进明细的方式逐步细化需求,马上要做的需求可以把细节分析清楚,远一点的就可以稍微粗略一点。另外还需要切分成小的粒度以更好地应对需求变化。
· 对范围、时间、质量毫无差别的坚守 -> 坚守范围、时间、质量可协商
对于项目来说,如果范围、时间、质量都无妥协余地,一旦有意外,项目团队就会面临巨大的压力。为了还能够达到目标,团队会被迫在不可见的地方做取舍。时间和范围都是明确可见的,代码质量就不得不成为被舍弃的对象。
即使一时满足了需要,如果代码里充斥者各种临时的、凑合的设计,对产品的未来也是后患无穷的。实际上,在这三个维度中范围是比较有妥协余地的,如果我们深入进去看,会发现除了必要的功能,实际上还有很多相对次要的部分,其实是可以做一些取舍的。
· 精确的进度把控,对任何偏离的追究 -> 接受意外变化并以最小的代价快速响应
传统的项目管理中任何对计划的偏离都被视作是问题,并被归咎于某些方面没做到位,而在高度不确定的环境下,计划是很难预测清楚未来的变化的,所以偏离计划是常态,更好的应对方式是心平气和地接受变化并随之迅速调整。
· 基于繁琐流程和检查机制的管理-> 依靠团队基于简单规则自我管理
另外,研发管理活动也要更好地支持快速试错这一过程。产品团队有了新想法后,经过和研发团队合作将新功能实现并上线,然后,通过分析用户对产品使用产生的反馈数据,产品团队可以对新功能有进一步的认识并再次产生新想法,从而又开始新一轮的循环。这是一个基本的试错过程,如下图所示:
要想让这一模式有效工作,整个循环过程需要快速高效的进行。可以看出,这里包含了大量需要多方紧密协作的复杂活动过程。想让它快速流转,就需要从各个方面努力协同。
在真正的荒野中,如果求生者在不断的探索和尝试中想要生存下来,还需要掌握一定的野外生存知识和技巧,比如:哪里可以找到淡水,什么样的植物可以吃,什么样的材料可以用来搭建住所等等。
同样,在互联网这片“荒野”中,要想通过低成本快速试错的方式来不断发现和拓展新机会,也需要掌握在高度不确定环境下的研发管理技能。这些技能就像润滑油一样,让研发的齿轮能够快速转动。
将这些技能做一定归纳,就形成了高度不确定环境下的研发管理技能框架。
限于篇幅,本文选取重要技能实践作进一步介绍。
技能实践一:快速需求探索和规划
需求探索和规划过程通常并不容易。一个人的想法终究有限,但是如果集体讨论,却很难高效地产出让人满意的结果。我们在团队尝试了一种结构化的群体讨论方式,取得了不错的效果。这种方式的特点是:
· 采用结构化的群体讨论和决策方式,群策群力、头脑风暴,能够充分发挥群体智慧
一个人的思路往往有限,如果能够充分发挥团队的智慧,能大大拓展产品探索的深度和广度。但是要想实现高效的群体讨论和决策并不容易,我们根据不断的摸索并借鉴业界好的实践形成了一套结构化的群体讨论方法,再采用专业的方式引导整个过程,就能产生很好的效果。
· 全程采用可视化的讨论方式,沟通高效
利用可视化手段,讨论不再空对空,整个讨论的过程和结果都会展示在讨论墙上,一目了然,大大提升沟通效率。
· 采用各种有效的分析技术,大大提升探索的深度和广度
通过借鉴很多业界行之有效的需求探索和分析方法,从而大大提升团队对于需求讨论分析的效率,有效提升产出效果。
· 增加团队参与感和拥有感
讨论过程是基于影响地图的思路,通常会先理清愿景和目标,并分析出用户。接着大家一起头脑风暴相关场景以及相应的问题和机会,然后进入需求分析和梳理阶段。通过对业务流程和场景建模,来细化需求形成用户故事图谱,最后估算并形成计划。大概过程如下图所示:
技能实践二:需求小批量快速流动
从需求提出到实现并最终上线,其实是一个价值实现的过程。在这一过程中,要想很好的应对不确定性,就需要尽可能实现需求的快速流动,让需求从价值实现过程的一端流动到另一端的时间尽可能短。
另外还要实现小计划、短迭代、小批量、小粒度需求。只有这样才能够快速反馈、提升流动效率并减少浪费。
技能实践三:高效团队组织和活动
组织结构设计的目标是减少不必要的沟通协作成本,增加信息流动,促进协作。那么改善沟通协作通常有以下一些方向:
· 基于价值流组织团队
所谓价值流就是用户价值实现的过程。对于电商来说,从用户浏览-下单-货物送到用户手中,这个过程就是电商的业务价值流,是企业生存的命脉。
为了让业务价值流顺畅流动,需要由不同领域划分的业务系统来支撑。而研发团队的任务就是确保这些系统的正常运作并持续不断地完善。
整个研发过程就是研发的价值流,所有相关职能的人员都应该根据研发价值流的划分来组织跨职能团队。围绕价值流组织团队可以让团队对价值流动过程提供有效的支撑。
另外,根据“康威定律”可知,团队边界和系统(业务领域)边界重合时沟通成本最小。所以我们在团队划分时需要尽可能确保这一点,即如下图所示:
同时,系统还需要打破巨石架构,形成高度内聚、职责单一、经过合理领域划分的微服务群。
· 统一节奏
如果团队能够统一研发活动的时间,就可以减少团队同步的成本。比如统一的迭代时间、计划、演示、回顾、需求梳理活动时间等等。
· 同步
为了确保团队成员间的信息同步,需要设计各种同步机制。如下图所示:
技能实践四:团队自我管理
常见的项目管理风格有两种,一种是强管控方式,另一种是采用团队自我管理的方式。
在高度不确定的环境中,往往第二种更容易生存下来。原因是强管控方式要想稳定运作,不但需要精心设计的流程、文档和检查机制,还需要管理层在细节管理上巨大的精力投入。
但问题是,强管控方式并没有为变化做好准备,如果团队不能发挥团队的主观能动性,在不确定的环境下很难做好。
所以,我们的策略是让团队基于简单规则自己决定该如何工作。管理层制定目标和管理红线,在此基础上由团队决定应该以什么规则来沟通协作。
事实证明,我们在很多团队做了这样的尝试之后,的确取得了不错的效果。
团队在这个过程中的感受:
· 别人在意我说的话
· 我可以参与做决定
· 共同的目标和价值认同
从而让团队的参与感和归属感大大增强,主动性大大提升。
另外,我们也通过看板等可视化的方法增加了团队的透明度,促进了信息共享和协作,同时也增强了团队成员间的相互信任。
技能实践五:持续交付
持续交付流水线是帮助团队在不确定环境下生存的重要基础设施,目的是为软件的发布创建一个可重复、高效可靠的过程。它意味着:
· 将几乎所有事情自动化
· 把所有的东西都纳入版本控制
· 提前并频繁地做让你感到痛苦的事情
· DONE”意味着“已发布”
· 交付过程是每个成员的责任
技能实践六:持续集成
· 小的改动,逐步构建
· 至少每天提交代码
· 构建失败立即修复
· 在主干上集成
· 每天集成
· 自动化的构建和测试
· 分级测试并快速反馈
技能实践七:持续部署
· 各环境使用相同部署方式和部署脚本
· 部署包全部来自制品仓库
· 运维人员参与部署过程创建
· 只有流水线才可变更生产环境
· 采用灰度发布来降低风险
结语
在荒野求生节目中,到最后会有直升机来把主人公接走,结果皆大欢喜。但是,在互联网“荒野”中,求生的“游戏”却是没有尽头的。
我们不但要生存,还要比竞争对手生存的更好。这就需要我们不断地改进,让团队在不确定环境下的研发管理技能得到持续提升,这才是我们在互联网“荒野”中生存的根本之道
李国柱,京东商城前台产品研发部敏捷教练、培训师,Scrum联盟认证CSP、CAL,SPC,KMP。具有十多年软件开发、项目管理、团队管理、过程改进和敏捷教练经验,擅长敏捷和精益软件开发管理方面的推广和实施。
本文由公众号@京东项目管理新视界 (ID:jdPMnewhorizon)原创授权发布于管理圈,未经许可禁止转载!