复杂系统问题设计中有两类现象需要引起关注:设计不足和过度设计,通常第一种比较常见,第二种则也是一种灾难。当然我认为他们都可以被优化,如果用正确的流程引导,在框架模板的限定下放飞,就像教养孩子有个观念叫温柔而有边界的爱,设计也需要赋能而有规范的指引,不只是一个设计文档怎么结构,还有设计流程倡导、设计思想渗透、不同级别设计区别对待。
1 设计不足
设计不足的问题,这个很好理解,对于需求没有充分消化,只是完成了明面上的功能,但是没有考虑必要性、特殊性、异常场景、安全场景、部署运维角度。通常实现功能是一方面,我们站在更高的维度,多角度思考才能考虑更多。当然这里也有一些需要明确的说明:
- 流程和框架引导不是适用于所有设计,我们这里特指的复杂的需求,业务牵扯很广的特性。如果所有的设计都用同一套流程和框架指导,必然会带来小材大用的问题,当然我们更多的会在这一些大材小用中慢慢耗光对于这些模板和流程的耐心。因此因地制宜很关键,小设计用简化流程,大设计特殊设计,被特殊对待。
- 无论任何大小设计,我们至少有两种思维,不一定要流程固化,但是要从认知维度考虑。首先是多维度思考意识,功能实现是实现维度考虑的问题,但是更多时候,我们还要从业务深度理解需求目的和最终是什么诉求,其次业务广度想一想,是不能业务涉及的服务数量、业务影响范围是否足够可控,是否除了功能实现,我们还要留出更多时间用于异常场景设计、安全性考虑。
实现功能是基础,考虑清楚异常、安全、可扩展性问题、可测试性、可裁剪性才是差异。
2 过度设计
关于过度设计的问题,在平时设计中并不常见,但是过度设计的坏处却是同样具有威力的。
首先是时间的消耗,我们都说设计讨论需要收一收,但是这个收的尺度其实很难把握。我们有时候参加一些头脑风暴不自觉地就发散 了,就来到了新的领域,结果准备的话题没有聊清楚,又带了许多新的问题。因此设计探讨、头脑风暴的流程是需要被刻意规划的设计,有张有驰,明确重点,允许差异新思想,但是更注重的记录问题、把控进度,然后再到会发发起新的流程,解决新问题新观点,或许这边是设计探讨环节的一种流程规范和引导。
其次过度设计的问题是一开始想多了,结果到了未来发现做也多了。
这类问题在我个人前期的一些自动化测试系统中较为常见,因为这类开发最大的特点就是需求的不确定性较高,关心功能提出需求的人往往不是第一用户,第一用户又没有时间提出真实诉求,因为他们太忙。
这个特点其实大大提高了前期需求摸底的重要性,因为我们软件系统设计人员不是第一用户和产品,所以更应该在前期花更多时间了解使用人群,其实这类项目设计,工作量更多的应该放在前期场景分析,先梳理清楚真实需求,哪怕提前一个季度用小兵力摸底需求,为想发声但是没有时间精力发声的人,探究他们真正的需求,或许才能更早发现问题。
同时这类项目最大的问题,也在于这个落地执行的耦合度,需求规划期、项目设计期、实施期、测试因为没有公有云明确,因此这几个阶段通常被耦合在一起,甚至互相掣肘。最后的影响就是研发赶进度,而忽视规划和摸底需求,做出冗余设计或者没有明确重点的功能。
总而言之,相较于其他传统项目和feature,这类问题更应该被提前规划,否则就会做出错误的功能,我们需要花更多的时间,让设计解放出来,去盘点场景和需求,去除冗余模块和功能,而这种提前规划是需要被更早倡导的。当然除此之外便是精益开发,最小迭代。如果一件事他很明确,他是做的问题。如果一件事我们明知道很重要但是不明确,那么更应该重视他,小规模投入,摸底真实用户需求、提前做原型,然后在持续迭代和演进中让他生存下去。一开始期望高,投入高,设计高,但是没有让他在落地中去运转去自我迭代,这些在我看来都是过多设计。提高战略的重视度,制定长时间持续的计划,然后给出一个小目标,去迅速落地,把重心放在迭代,或许才是对过度设计的根治。
3 精益设计
这是又一次谈到精益,但是在经过半年迭代后,我对他的理解也发生稍许变化,之前我的关注的点在“快速开发”,如今变为朝着正确方向“持续迭代”。
精益创业这本身可能更多的站在公司的角度、站在互联网产品的角度,谈如何“最小可用品”、“客户反馈”、“快速迭代”,但是落地到研发设计阶段,他也有了新的变化。大方向没有问题,这个可以是原则,但是落地阶段,实际上变成了对于设计每个环节的贯彻,比如如何取舍需求、如何规划项目、如何设计流程和系统、研发如何定义模型、项目如何落地、测试如何展开、产品如何交付。
最小可用强调一个快,但是需要有人看到全局,找到痛点,走到前头,这里的难点却不是“快”,而是如何在一堆繁复需求中,看到什么才是最重要的,这需要了解全局,更需要做出取舍的格局。
客户反馈和快速迭代,才是我们最容易忽视的流程,如何建立快速反馈通道,如何保证快速迭代,这里是需要从机制和框架的流程去反思的,他不是一句话说我们要建立就够了,而是落地到实处,建立一个机制,引导一个风格,落地一个项目。
当然有时候改变整个系统很难,因为我们已经有了沉没陈本,有很多尾大不掉的包袱,可能无法全面展开,也要站到一个实验田,让他迅速完成自我迭代。就像1979一位伟人在中国南海画了一个“圈”,那以后四十年中国巨变,而变化最大、迭代持续、引领风尚的可能就是这个“圈”。