过度设计
设计不足与设计过度
什么是设计不足?设计出来的系统复用性差,扩展性不强,不能灵活的应对变化,简言之,设计没到位。设计不足,多半是因为经验有限,设计能力有限。
什么是过度设计?设计出来的系统比恰到好处要复杂臃肿的多,简言之,客户需求是要一把杀鸡的刀,你给设计了一把牛刀(杀鸡用牛刀)。过度设计,多半是因为有设计的癖好,喜欢炫耀或玩弄无谓的技巧,或是喜欢把简单的问题搞复杂化。
客户只是告诉你他“需要一把杀鸡的刀”,至于将来有没有需求变化,有没有可能要这把刀能杀牛,客户也不知道。所以当然这个设计的度就很难把握了。
有人主张设计必须前瞻与用户需求,不能以需求为导向。因为客户从来不会告诉你他未来的需求,连他也不知道。
有人认为认为设计必须以需求为导向,软件以人为本,以用为本。
设计不足,意味着系统复用性扩展性和灵活性差,系统僵化,不能应对将来的需求变化,或者将来修改和维护的代价和成本会很高,这当然是设计错误;
过度设计,则意味着为了实现这个设计要付出的额外代价,例如成本上升,缺陷可能性加大,提升维护成本,甚至降低系统性能。而可维护性和系统的高性能都是系统的隐性需求,这些需求没实现好,当然也是设计错误。
最简单的才是最好的。大巧若拙,大道至简,有时候越简单的反而越难实现,而且越接近真理。
摩拜与ofo
ofo发布会上,ofo创始人兼CEO戴威褒扬自己的同时,不忘吐槽一下友商,他提到,“现在市面上很多友商的设计(尤其是指摩拜单车),在我看来有过度设计的地方,这样直接导致成本高,车身各方面比较重,用户的感受是很难骑。
需求中的过度设计
设计中的过度设计
开发中的过度设计
开发需要敏捷开发&TDD
什么才是问题的本质
在英国统治印度的时期,当时的印度 Delhi 地区毒蛇众多,英国政府为此非常担心,所以发布了悬赏,居民可以杀死毒蛇获得奖励。在开始的时候,这是一个很有效的策略。大量的毒蛇被居民猎杀。但随着时间的推移,很多人开始豢养毒蛇,杀死以换取奖励。当政府了解到这种情况时,猎杀毒蛇的奖赏被取消了。原来豢养的毒蛇被大量放生,当地毒蛇的数量比发布悬赏前反而更多了。
我们常看到一个直接的问题解决方法,却很难达到我们想要的结果。
我们的大脑往往倾向于建立简单的因果关系
美国社会关于「恐怖分子」的主流观念如下:
恐怖袭击→对美国人的威胁→军事反应的需要
而恐怖分子对自己的处境的看法大体如下:
美国的军事行动→感受美国的侵略性→招募更多恐怖分子
进行系统思考的关键,是学会思考「关系」,而非只是关注「人和事物」
现代物理学的一个重要观点是,部分的性质通常来说不是最重要的。最重要的是它们的组织,它们组合起来的模式和形式,也就是各个部分之间的关系。
就像是石墨与钻石,都是相同的碳元素构成,只是碳元素的组织方式不同,展现出来的性质就截然不同。
天猫也承担了中介的职能,但天猫的系统远比百度完善。这其中的关键就是:系统的反馈。
在百度的推荐系统中,用户对医院服务没有公开的评价体系。系统本身没有即时、有效的反馈和甄别虚假信息的能力。所以,KPI 设定必然朝着「更高成交量」–>「更高广告费」的循环不断加速。
最终,百度推荐系统的反馈是在「知乎」上完成的,但这时悲剧已经酿成。
而在天猫的系统中,用户评价起到了很好的反馈作用。
除了过往质量评价会影响用户购买信心,从而影响商家的成交量以外,用户的评分还是商家产品搜索排名的关键指标,形成不同的系统关系促使商家更好地服务用户。
美国美铝集团例子
美国美铝集团,曾经面临着成本上升、收入和利润严重下降等一系列问题。
如何改善美铝的经营局面?
股东和员工都期待着新CEO保罗·奥尼尔在产品竞争力、降低成本、开发新品等方面做出努力。
但保罗提出问题解决的突破口是:增加公司在安全生产上的投入。
在成本上升,利润下滑时,增加安全投入?很多人觉得难以理解。但结果是,保罗就职不到一年的时间,美铝就扭转了利润下滑的局面。
而创造「奇迹」的关键是保罗真正理解了美铝公司的运作系统。
什么原因导致项目上线延期?
项目上线延迟因果图
什么原因导致项目上线产生大量BUG?
项目上线BUG因果图
本质是为了解决问题为用户创造价值
电钻的功能是打洞
共享单车只是辆好骑的自行车
设计师不要为了炫酷的视觉效果而设计
开发不是为了面向对象而面向对象
真的是用户笨吗,我们真的需求提示用户怎么使用?