不为有趣之事,何遣有涯之生
不失其所者久,死而不亡者寿

临江仙De认知迭代 警惕愿望清单

前言

最近发现愿望清单是一个很有意思的词,结合自己的一些过往经验得到一点点启发。我发现在众多领域都有东西想伪装成它。比如一些企业的企业战略,比如客户提出的一些软件需求,比如一些系统的架构设计指标,比如一些家长给孩子制订的学习目标......

愿望清单之企业战略

我们先看一个真实的产品战略:某纸制品制造公司,制订了如下的战略:

产品战略有两个维度,一个维度是搞价格竞争还是品质竞争,另一个维度是面向广泛市场还是专注于细分市场。虽然公司各种类型的纸制品都能生产,但降低成本比较困难,所以选择在广泛市场上搞品质竞争。

运营策略一般有持续改进和创新、扩大产能、提高供应链效率、外包、以及及时推出新产品。公司对生产环节没有什么控制力,所以主要采用改进设计作为运营策略。
最后要达成的战略目标是产生9%的资产回报率,每年至少10%的销售增长。

请问上述公司战略有什么问题?

如果你不是一个战略专家,你可能很难发现问题。如果你是一个战略专家,你可能根本不把上面的战略称之为战略,可能称之为愿望清单更为合适。

上面的企业战略犯了两个常见的战略错误。

第一个错误就是对照着一个现有的框架来选择战略,且不说框架的权威性与正确性。做战略不是在现有选项里选择一个最好的,而是根据自身实际情况创造出来的。很多框架只是别人的经验,只能作为启发,不能作为选项。

第二个错误就是毫无实现途径的目标。每年销售额增长10%并不是路线图,怎么实现销售额增长才是战略的一部分。到底是争取更多的客户,还是提升现有客户的购买力,还是双管齐下呢?

所以做战略不能生搬硬套,不能先定一个目标,然后从一本攻略大全里做选择。这样得到的只能是愿望清单。

战略必须是从自身出发,找到关键难点,搞清楚主要矛盾,再结合自身的特点,利用优势杠杆,创造出一个解法。

愿望清单之客户需求

在软件开发中,我经常会在一些项目中看到伪装成用户需求的愿望清单,先欣赏下下面的场景:

酒店人员:系统需要新增一个酒店平面图的功能
需求人员:好的,请把纸质的酒店平面图给我参考下
-----------------转交研发-------------------
需求人员:这是酒店的平面图,需要在系统里增加这个功能,客户急着这周就要
研发人员:一周时间有点紧啊,那只能做个用HTML元素搭建的示意图了
-------------------转交客户------------------
酒店人员:这是什么图?又不支持放大、缩小、平移。字还那么小,怎么看呢?
-----------------转交研发--------------------
需求人员:用户要求地图可以放大、缩小、平移,还有字体要放大
研发人员:好的(加上两个按钮放大、缩小,修改对应样式就可以了)
-------------------转交客户------------------
酒店前台:.......(什么也没说直接打电话给领导了) 领导,你看他们新上线的功能,那个平面图做成啥样子了!他们就是这么应付我们的吗?
客户领导:什么!我马上打电话给他们领导
.....未完待续.......

以上场景就是典型的把用户的愿望清单当做了真实需求进行系统研发的故事,需求人员到最后也没弄清楚用户的实际需求到底是什么(故事的后续有专业人员介入后才弄清楚平面图功能只是用户为了解决某问题而提出的解决方案,其实要解决用户问题,有更好的解决方案)。

真实项目中有多少项目组基于寥寥几页的用户需求描述来进行项目估算并着手软件开发的?据我多年的观察可以说很多公司和项目都存在该现象。

这种所谓的用户需求其本质就是用户的愿望清单,既然这些内容并不是用户的真实需求,那么随着时间更迭会不可避免的发生改变。所以不要怪用户的需求多变,其实用户需求一直没变,变得是愿望清单。

如果真想弄清楚用户的真实需求,你必须要学会一些需求分析的技能,掌握一些需求分析的模型,从而还原出用户的真实需求,并进一步的进行补充。否则你将会在用户的愿望清单上越走越远。

愿望清单之架构设计指标

在软件工程中,在开发一个系统的时候,需要做的一件事情就是架构设计,架构在行业内还未有一个明确的定义,通俗的讲架构就是代码的组织形式。它的分类也有很多种,可以按实现层次、技术风格、软工阶段、关注方向等划分。

这里关注的重点不是如何做架构,而是谈谈在很多所谓的架构设计指标中也充斥着愿望清单的味道,根据愿望清单设计出来的架构,往往也很难符合实际要求。

一般对于系统架构方面的需求会描述在非功能性需求中,架构师会根据这些需求进行合理的架构设计,但是实际情况是很多非功能性需求也是愿望清单。

来举个例子,你或许可以在很多的PRD(产品需求规格说明书)文档的非功能性章节中看到类似的内容:

1.系统要保证高性能
2.系统要留有充分的扩展空间,以适应未来发展的需要
3.系统的并发量不少于1000
4.页面查询时间不少于1秒,接口调用时间不得少于1秒
.......

以上内容都摘录自真实的项目需求文档,前两点的描述非常主观。什么是高性能?每个人都有自己的看法,什么叫充分的扩展空间?多少充分算充分?适应未来多久的发展?1年还是5年还是10年?可谓是典型的愿望清单。

后两点伪装的比较好,但也属于愿望清单型的架构指标。这两点虽然给了具体的指标,其实也存在很大问题:一个系统有很多的功能,有用户不太经常使用的功能和有用户经常使用的核心功能,明显二类服务要求的并发量应该是不一样的,对于前者并发量绰绰有余,而对于后者又明显不够。

退一步来说,假设列出的数值都能满足的话,那也是属于过度设计,其中浪费的成本由甲方出好还是乙方出好?第四点存在的问题和上面的一样,就不再赘述了。这里可以给一个关于系统响应时间上恰当的描述示例:

系统在95%的情况下,一般时段响应时间不超过1.5秒,高峰时段不超过4秒。定位系统从点击到第一个界面显示出来所需要的时间不得超过300毫秒。
在网络畅通时,拨号连接GPRS网络所需时间不得超过5秒。在网络畅通时,电子地图刷新时间不超过10秒。
在推荐配置环境下:登录响应时间在2秒内,刷新栏目响应时间在2秒内,刷新条目分页列表响应时间2秒内,打开信息条目响应时间1秒内,刷新部门、人员列表响应时间2秒内。
在非高峰时间根据编号和名称特定条件进行搜索,可以在3秒内得到搜索结果。

有经验的架构师都知道一个项目中各种资源是有限的,每一次架构的选择都是对于实际业务场景下各方面综合考虑后权衡的结果,是对具体场景的妥协。只有经验不足的架构师才会觉得可以做到既要又要还要的面面俱到型架构。

不同的行业,系统架构往往不太一样。即使是相同的行业,只要其业务模型流程不一样,其架构也肯定是不一样的。

做架构要理解和顺应硬件天性,别让硬盘抗性能,别让内存存太久,别强求网络一直稳定。

做架构要顺应客观事物发展的天性:损有余而补不足。需要节省存储空间时,可以采用数据压缩,用算力换IO和空间;想提升复杂计算后的数据获取速度时,可以采用对计算结果进行缓存的机制,用空间和IO换算力。

希望你下一次在非功能性需求中看到愿望清单时能够清楚的识别出来。

愿望清单之学习目标

人人都羡慕领居家的孩子,德智体美劳全面发展。这不老李也是,老李家孩子成绩不好,老李也很是着急啊。眼看着孩子还有一年就中考了,不做点什么是不行了。

于是老李制订了两个措施。第一,给孩子买了一大堆学霸攻略,有书有视频教程,主要是让他孩子看看那些学霸们是如何学习的,然后去模仿他们;第二,给孩子定下目标,在本学期内进入年级前100名,以及把英语这个短板补上。

请问如果你有孩子,也面临着老李一样的困境,你认为老李给孩子定的学习目标怎么样?如果你是老李的孩子,面对父亲制订的学习目标,你是怎么想的呢?

我觉得和老李一样操心的父母亲可能不在少数,但是很抱歉,你列的不是给孩子的学习目标,而是写给你们自己的愿望清单。而孩子们也会和老李的孩子一样,面对这样的愿望清单无所适从。

影响一个孩子学习成绩的因素有太多了,只是模仿别人的学习方法,对孩子自身可能未必有效。本学期进入前100名,怎么进入?现在的差距是多少?每门功课分别需要提升多少分?每门功课的薄弱点在哪?短板科目问题在哪?可提升的空间有多少?需要做哪些准备?采用哪些方式手段?

作为父母如果不弄清楚以上这些问题,而只是给孩子定个达成目标,然后买一堆书报几门课,那孩子面对你制订的愿望清单,必然会无所适从。

愿望清单的本质

我们回到历史中看看,在共产党建立之初,毛主席还没有全面掌权。当时指挥中国共产党的是一些共产国际干部,特别是苏联老大哥那边派遣过来的。当时那些人指导中国革命也是凭着一份愿望清单:你看,苏联革命的经验有这些条,其中最适合我们当前局面的应该是第几条,根据苏联革命的速度来看,我们现在应该尽快夺取几个大城市......

我们现在都知道上面提及的革命方针都是错误的,脱离实际没有从中国国情出发,也没有找到当时主要矛盾点。

再从之前几个示例中,我们可以发现愿望清单的一些共同特点,警惕这些特点有助于我们识别出伪装成愿望清单的企业战略、客户需求、架构设计指标、学习目标......

特点1:只给目标不给实现路径/原因,像上面例子中的学习目标、企业战略就是只给出目标,没有给实现路径。而客户需求属于只给了目标而没有给原因,从而错把客户提出的伪需求当成了真实需求。

特点2:一边抄作业一边定目标,像上面的企业战略、架构设计指标往往都是抄作业的结果,没有考虑到自身的实际情况,看到别的战略或系统是怎么设计的,自己抄一个过来,也不管是不是适合。

要知道不管是企业战略还是架构设计都是相当复杂的事情,需要相当专业的人员通过对实际情况的充分调研与分析,然后一步步才能制订出来,绝对不是拿出一本所谓的战略指南或架构指南,然后开始抄作业。

回顾我们现代社会中企业战略制定、客户需求挖掘、软件系统设计都充满着愿望清单的味道。不由的要发出感叹:东施效颦的故事已经过去很久,但是在现代社会中却仍然每天都在上演。

未经允许不得转载:菡萏如佳人 » 临江仙De认知迭代

欢迎加入极客江湖

进入江湖关于作者