规则三:三次简化方案

规则三:三次简化方案

砍掉很多无关紧要的东西,留下精华,奉行极简主义

内容:在设计复杂系统时,从项目的范围设计实施角度简化方案。

场景:当设计复杂系统或产品时,面临着技术和计算资源的限制。

用法

  • 采用帕累托( Pareto)原则简化范围
  • 考虑成本优化和可扩展性来简化设计
  • 依靠其他人的经验来简化部署

原因:只聚焦“不过度复杂”,并不能解决需求或历史发展与沿革中的各种问题

要点:在产品研发的各个阶段都需要做好简化

鉴于规则1,主要是关于避免超过“有用的”(实际的)需求和降低复杂度,本规则聚焦简化包括从感知需求到实际设计和实施在内的一切。规则1是关于抑制某些事情过于复杂的冲动,而规则3则是关于试图采用本文所述的方法来进一步简化方案。

有时候我们告诉客户把这条规则想成“问三个如何”:

如何简化方案范围?

如何简化方案设计?

如何简化方案实施?

其实,这个就是,在开始或者是在设计结束的回馈阶段,进行砍枝叶!

如何简化方案范围

对这个简化问题的答案是不断地应用帕累托原则(也叫80-20原则)收益的80%来自于20%的工作?对此,直接的问题是,“你收入的80%是由哪些20%的功能实现的?做得很少(工作的20%)的工作,然后取得很高的效益!

直接剔除产品里的不必要功能,就可以做5倍的工作,而且,可以用这些资源,去做更有用的事!

微信的功能,能留下客户的并不是它的那些钱包里的多得数不清的功能!网页!这些东西,就是属于一个扩展!!

如果删除产品中不必要的功能,那么可以做五倍的工作,而且产品并没有那么复杂!减少五分之四的功能,毫无疑问,系统将会加容

减少功能之间的依赖关系,因而可以更高效率和更高本益比地进行

释放出的80%的时间可用于推出新产品,以及投资于思考未来产品可扩展性的需求

保持大多数好处的前提下,思考如何减少不必要的功能《You can always do less》,其实,这个就是,精英主义,不需要那些含金量或者说,含能少的设计!它是对资源的一种极大的浪费!

最小多的努力获得经过验证的最大化客户感知数量

这种聚焦这“敏捷”的方法允许我们快速发布简单和容易扩展的产品

如何简化方案设计

简化后缩窄了的项目范围,可以使后续的设计和实施工作更加容易

简化设计与过度设计的复杂性密切相关。消除复杂性相将会当于在工作中忽略无关紧要的活动,简化就是寻找一条捷径

规则1中的例子说明了在数据库中只查询需要的数据,

select(*) from schema_name.table_name

应该为:

select ( column ) from schema _name.table_name

简化设计的方法表明,值先要看在本地,像内存这样的信息共享资源中是否已经有了数据请求

消除复杂性涉及能现在上经做更少的工作,而简化设计涉及更快和更容易地完成工传

简化方案实施

最后,我们来讨论一下实施的问题。与规则2的DID扩展过程保持一致,我们把实施定义为解决方案的代码实现。这里我们遇到了一些问题,诸如使用递归或迭代是否更有意义。我们是否应该定义一个特定大小的数组,或者准备好在需要时动态地分配内存?

对于解决方案,需要自己研发还是利用开源项目?或者从市场上采购?所有这些问题的答案都指向一个共同的主题:“如何利用其他经验和已经存在的解决方案来简化方案实施?”

  • 因为不可能在每件事上都做到最好,所以我们应该首先寻找间被广泛采用的开源或第三方解决方案来满足需求
  • 如果那些都不存骤在,那么我们应该看看在组织内部是否有人已经准备了可扩展的解决方案来解决问题
  • 在没有专有解决方案的情况下,我们应该再从外部看看是否有人已经描述了一种可以合法复制或模仿的可扩展方案

只有无法在这三项中找到合适的选择情况下,我们才会开始尝试自己创建解决方案。最简单的实施几乎总是那些有过实施经历并通过实践证明了的可扩展方案

时间: 2024-10-02 00:45:50

规则三:三次简化方案的相关文章

CDN 边缘微信h5斗牛开发规则,三秒部署、支持定制、即时生效,多种规则覆盖常用业务场景

CDN 边缘规则,三秒部署.支持定制.微信h5斗牛开发h5.super-mans.comQ:2012035031即时生效,多种规则覆盖常用业务场景 2017年的最后一周,又拍云进行了一次重要升级,将自定义 Rewrite 升级为"边缘规则".互联网应用场景的日益多样化,简单.方便.快速的根据不同应用场景实现不同的功能变得越来越重要.边缘规则,将更加贴合客户在垂直领域的需求,为终端用户带来更好的访问体验. 什么是边缘规则(EdgeRules)又拍云 CDN 边缘网络中的智能可扩展应用程序

正确修改MySQL最大连接数的三种好用方案

以下的文章主要介绍的是正确修改MySQL最大连接数的三种好用方案,我们大家都知道MySQL数据库在安装完之后,默认的MySQL数据库,其最大连接数为100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MySQL连接数的方法有两个.方法一:进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MySQL即可方法二:MySQL最大连接数默认是100客户端

Atitit cnchar simp best list  汉字简化方案 最简化汉字256个

Atitit cnchar simp best list  汉字简化方案 最简化汉字256个 1.1. 最简化发音1 1.2. 根据笔画密度,删除了密度高的字..1 1.3. 使用同发音的英文字母等代替部分汉字.1 1.4. Atitit 汉字 英文 阿拉伯文的简化规则1 1.5. Atitit 汉字处理与atian处理目录大纲2 1.1. 最简化发音 八怕扒马发大它拉卡哈卜泊末仏多托罗过扩火的了个可合匕皮米DT你力不仆木夫度土奴卢古苦户女吕白π买呆太乃来改开海北贝陪没飞得内泪给对归亏会包跑毛刀

Asp.Net MVC 插件化开发简化方案

Web 管理系统可以庞大到不可想像的地方,如果想就在一个 Asp.Net MVC 项目中完成开发,这个工程将会变得非常庞大,协作起来也会比较困难.为了解决这个问题,Asp.Net MVC 引入了 Areas 的概念,将模块划分到 Area 中去--然而 Area 仍然是主项目的一部分,多人协作的时候仍然很容易造成 .csproj 项目文件的冲突. 对于这类系统,比较好的解决办法是采用 SOA 的方式,把一个大的 Web 系统划分成若干微服务,通过一个含授权中心的 Web 集散框架组织起来.不过这

一分快三稳定回血技巧方案-我来教你怎么稳赢+【6370266】

说起我为什么会碰快三,那就要从3年前的一天开始说起了.实在是有苦有泪,但是庆幸总归是上岸了!那是3年前的一天,那时候我们4个人一起从农村出来,到达上海的时候已经是晚上9点多了,走在上海的街头看着那红红绿绿的高楼大厦,晃得我的眼睛生疼.第一次来到这样的大都市心里实在感慨万千,既有害怕马上逃离的冲动,又有想从此在此扎根的想法.不管那么多了,走,我请客,找个地方喝酒去,我说道.几个人也是没皮没脸的笑嘻嘻的答应. 我们找了一个看起来并不会太贵的排档简单的点了几个下酒菜,就这样坐着喝着酒,你一言我一语的聊

性能提升的14条规则(三)

规则3——添加Expires头在设计Web页面的时候,首次访问的响应时间并不是唯一需要考虑的.如果是这样的话,我们可以将规则1发挥到极致,并且不再页面上放置任何图片.脚本和样式表.然而,我们都知道,图片.脚本和样式表能够加强用户体验,尽管这意味着页面需要花更长的时间进行加载.这一章介绍的规则3展示了如何配置组件,使其能够最大化的利用浏览器的缓存能力来改善页面的性能.现在的Web页面都包含了大量组件,并且数量在不断增长.页面的初访者会进行很多HTTP请求,但通过使用一个长久的Expires头,使这

Maven学习小结(三 基本概念)

1.Maven POM POM(Project Object Model)项目对象模型,是用Maven来管理项目里的一个叫做pom.xml的文件.所有的项目配置信息都被定义在这个文件中, 通过这个文件Maven可以管理项目的整个生命周期,包括清除.编译,测试,报告.打包.部署等. 2.Maven Plugin Maven的每个具体任务都是由插件完成的.(see more https://maven.apache.org/plugins/index.html#) 3.Maven Coordinat

perl正则表达式第三周笔记

正则引擎的分类 正则引擎的分类 正则引擎的分类主要分两种: DFA:egrep.awk.lex.flex NFA:.NET.PHP.Perl.Ruby.Python.GNU Emacs.ed.sec.vi.grep等 NFA的历史比DFA久一点,但两种引擎都发展了20多年,产生了很多变体,POSIX的出现就是为了规范这种现象.POSIX不但规定了元字符的特性,而且规定了正则表达式应该用什么样的方式运作. DFA符合POSIX的标准,但NFA如果要符合POSIX标准,就要作出相应的修改 所以引擎可

Java深度历险(三) Maven初步学习

这几天接触这个词,很多遍了,只是浅显的体会到它在GXPT中的好处,功能之强大,又通过网络查询了资料进一步的认识学习了,和大家分享. Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 在gxpt中的体现 1. 父子关系 一个多模块项目通过一个父POM 引用一个或多个子模块来定义. a. 在父目录中分别创建子项目 b. 父项目,通过以下配置,将子项目关联: 如下: <span style="font-size:18px;"