Kelly Johnson提出了KISS原则。他是一个飞机工程师以及航空发明家,同时也是一个管理天才,他一生中主要设计了40多架飞机,获得的荣誉相当之多,总之,很牛。

这个原则是对Johnson带领的设计工程师团队最好的例证,他们在设计飞机时,必须考虑

到假如飞机在交战情况下出了故障,如何让普通的机械师修理飞机?

这就是这个原则产生的历史背景。

因此,stupid不是愚蠢的意思,而是指普通。

讲一个小故事:日本最大的化妆品公司收到客户抱怨买来的肥皂盒里面是空的,于是他们为了预防生产线再次发生这样的事情,工程师便很"努力辛苦"的发明了一台X-光监视器去透视每一台出货的肥皂盒。

而同样的问题发生在另一家小公司,他们的解决方法是买一台强力工业用电扇去吹每个肥皂盒,被吹走的便是没放肥皂的空盒。

做为IT行业,在平时遇到类似的事件会更多,如架构师做架构时,是以Stupid为原则?还是以需要180的智商才能理解为原则?开发同事写代码时,以其他开发同事很容易理解为原则?还是以程序可以运行就行,除了自己谁都别想看明白为底线?

几乎所有人都明白这个简单的道理,说出来没有人不懂,我们都知道KISS的好处,但为什么我们会做一些不KISS的设计?做一个不KISS的程序呢?

你想因为你的设计没有被很好的理解而半夜被人电话吗?你想因为你写的程序别人无法修改而被周末强制加班吗?当然不想,但为什么我们都这样做了呢?

因为我们没有真正了解我们的需求是什么,目标是什么。

为什么工程师会“努力辛苦”去发明一台X-光监视器,而不考虑使用电扇呢?可能被委派去发明监视器的工程师根本不知道自己发明的监视器是为了透视一个没有肥皂的肥皂盒。

另外一个原因是社会压力大、节骤快,导致时间碎片化,让我们更加需要KISS。想一下,你上次看微博是几小时甚至几分钟之前?而你上一次去看博客是几天甚至几周以前?

微博的到成功是因为运气好,是因为我们没有很长的时间去阅读一篇1000字的文章,大多数情况下我们也没有时间去阅读一个需要1小时才能理解的设计文档或类程序,而如果你这样做了,你的恶梦就开始了,或者已经开始了。

不要让人烦,不要让大家做功课。别指望他们愿意额外花些功夫去折腾你的东西。什么都不要指望,提供一个有用的东西就够了:把你的主要想法用一种方便理解、易于切入的形式呈现出来。如果你的想法很简单,但是描述却弄得十分繁琐、令人失望就不好了。挫折感是吞噬好想法的恶魔。

简单很好,但简单并不是少,比如写代码,3行代码能实现的逻辑如果用10行写肯定不好,不够简单,但如果写成了1行,同样会不够简单。因为这行代码包含了太多的内容,因为几个月以后你自己再看,都有想哭的感觉。这是什么意思!这是另外一种复杂,隐藏的复杂,比直观的复杂更害人。

我理解的KISS就是简单,不需要解释的简单,普通的简单。

SO,让我们开始KISS。

Keep It Simple Stupid!

Keep It Simple Stupid!的更多相关文章

  1. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  2. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  3. WATERHAMMER: A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION

    开启阅读模式 WATERHAMMER A COMPLEX PHENOMENON WITH A SIMPLE SOLUTION Waterhammer is an impact load that is ...

  4. BZOJ 3489: A simple rmq problem

    3489: A simple rmq problem Time Limit: 40 Sec  Memory Limit: 600 MBSubmit: 1594  Solved: 520[Submit] ...

  5. Le lié à la légèreté semblait être et donc plus simple

    Il est toutefois vraiment à partir www.runmasterfr.com/free-40-flyknit-2015-hommes-c-1_58_59.html de ...

  6. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  7. 设计模式之简单工厂模式Simple Factory(四创建型)

    工厂模式简介. 工厂模式专门负责将大量有共同接口的类实例化 工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类. 工厂模式有三种形态: 1.简单工厂模式Simple Factory ...

  8. HDU 5795 A Simple Nim 打表求SG函数的规律

    A Simple Nim Problem Description   Two players take turns picking candies from n heaps,the player wh ...

  9. 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...

    在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...

  10. A Simple OpenGL Shader Example II

    A Simple OpenGL Shader Example II eryar@163.com Abstract. The OpenGL Shading Language syntax comes f ...

随机推荐

  1. LR常用函数以及调用自定义函数

    2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...

  2. @MappedSuperclass注解的使用说明

    转载自:http://blog.sina.com.cn/s/blog_7085382f0100uk4p.html 基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclas ...

  3. 转载:NetBeans中如何运行GUI

    这篇入门教程将教会您怎样创建一个简单的人机交互界面以及向其中添加简单 的后台功能. 特别地,我们将向您展示如何按 Swing 规范编写控制按钮和域代 码. 我们将会使用到布局管理.设计简单 GUI 界 ...

  4. ReaderWriterLock的UpgradeToWriterLock方法的一种使用场景

    ReaderWriterLock对比互斥锁(lock)的优势是,读锁和写锁的分离,读锁之间互不排斥. 当然,本文重点不是讲ReaderWriterLock本身,而是讲它的UpgradeToWriter ...

  5. EBS 消息总线

    http://www.ibm.com/developerworks/cn/webservices/ws-whyesb/ 开发人员为何需要企业服务总线? 本文不仅仅是为架构师准备的:使用企业服务总线 ( ...

  6. 在gitlab上setup CI

    安装gitlab runner docker pull gitlab/gitlab-runner 启动gitlab runner docker run -d --name gitlab-runner ...

  7. spring mvc 第一天【注解实现springmvc的基本配置】

    创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr") 该类中的方法(Handl ...

  8. 介绍开源的.net通信框架NetworkComms框架之三 传递List

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地 ...

  9. Android Studio使用百度地图示例BaiduMapsApiASDemo

    Android Studio使用百度地图示例BaiduMapsApiASDemo 用自己AVD下的debug.keystore替换掉项目中的debug.keystore 生成自己的签名 同样的方法生成 ...

  10. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->关于spring framework中的beans

    Spring framework中的beans 1.概述 bean其实就是各个类实例化后的对象,即objects spring framework的IOC容器所管理的基本单元就是bean spring ...