三、如何让复杂的项目变得简单

菜多多不是一个简单的商城,它由一个复杂的供应链系统组成,涉及人、货、场,是一个复杂的系统问题,那么我们如何解决这个问题呢?

可以把问题分为三个:基于系统的复杂问题,需要重新构建的复杂问题,以及基于过程的复杂问题。

(一)基于系统

菜多多的系统也是相当复杂的,这里马丁提供了两种办法可以供我们选择:

(1)​ 解耦:解耦就是需要断开系统的各个部分,以简化系统并减少相互之间有关联的变量的数量。比如菜多多的菜谱和商品详情就是进行了解耦设置的,商品详情页的变化并不会影响菜谱功能的应用,我们能很方便地更改菜品的价格,折扣和详情说明。

(2)​ 模拟:可能有类似但不相关的情景可用于模拟某一系统的各个组件。比如买菜的场景其实和一般电子商城的购物流程相似,可以用之前我们做电子商城的一些用户使用轨迹信息来了解菜多多用户的购买习惯。

(二)重新构建

如果将来菜多多需要重构。这里也有两种办法:

(1)​ 多样性。需要从不同的角度看待复杂的系统。这可能包括与项目团队进行头脑风暴,以开启看待系统的不同方式。它还可以包括使用像德尔菲法类似的过程,即从发散思维转变为收敛思维。我们在梳理菜多多的待办事项时,用的就是头脑风暴法,用此方法发散地找到用户场景的痛点是非常管用的方法。如图2-5所示。

图2-5 头脑风暴法

(2)​ 平衡。平衡使用的数据类型,可提供更广阔的视角,而不仅仅使用预测数据或过去报告的数据或滞后指标。这可以包括使用其不同点可能抵消彼此潜在负面影响的要素。

(三)基于过程

我们之所以使用新的过程方法来做这个项目,就是想缩短从项目启动到交付到用户的时间,这样用户能尽早看到成品,有利于降低不确定性,这里也提供了三种方法供我们选择:

(1)​ 迭代:迭代就是一次增加一个特性。每个迭代后,确定哪些特性有效、哪些特性无效、客户反应及项目团队学到了什么。比如我们菜多多两周一个迭代,每两周我们就会有多个特性被完成,团队也能体验到新特性,便于及时调整,降低复杂性。

(2)​ 争取用户参与:这个方法这可以减少我们提前作出很多没必要的假设,并将学习和参与融入过程。比如菜多多在1.0版本发布之后,会邀请用户参与并体验我们的 App,在App上进行下单操作,这样的用户参与便于我们更好地了解用户是如何使用App的,以用户反馈来改善产品,从而降低复杂性。

(3)​ 故障保护(或叫作服务降级)。对系统中的关键要素,要增加冗余,或者增加在关键组件出现故障时能提供功能正常降级的要素。比如我们计划在菜多多通过服务降低的方式让服务器在访问请求过多时,对视频服务的访问中断以满足对于商品图文详情的需要。这样做的好处是,用户访问量如果突然增加,服务器访问很卡,我们将关掉视频功能,用户看不到商品的视频展示,但他仍然可以查看商品详情并下单。