To be continued
大地春如海,男儿国是家。龙灯花鼓夜,长剑走天涯

星期四, 十二月 04, 2008

KISS, 能不能简单点,你这个蠢货

解释一下KISS,英文是Keep it simple, stupid! 是一句骂人的话,同时也被认为是Unix编程的原则。这句话被我奉为是写程序的圣经。我不是指UI界面的Simple,而是指软件设计(or 软件定义?),代码结构,和实现方式的Simple。

这两天想帮BlogPress加上Flickr的支持,研究了一下Flickr的接口API,其他都还好,唯有用户认证那一块怎么看怎么别扭。同样的功能接口为什么Google Picasa就能做得那么简洁,清晰,容易使用。如果不是Google做到了,我还会以为世界本来就是应该那么复杂的。

要把程序搞复杂,有几个借口,最常用的是:

1. 结构化,你的程序是不是面对对象的,用什么模式,如何适应未来的变化;

2. 安全性,黑客能不能破解进来;

3. 负载,能不能通过强大的压力测试。

都是很专业的话题,说出来就能吓倒不少人,坦白说,这些话题,我也不是很懂,以前如果有人拿这个忽悠我,我会很容易相信。问题是现在Google做到了,同样是简洁,优雅,自然,难道Google的结构化,安全性,负载都有问题?

写程序的人很容易陷入这样误区,读了几本书就开始高估自己的智商,貌似我们只要考虑到了结构化,安全性,负载,我们写的程序就会自动在这三个方面做得很好了。我要说这是不对的,这3个方面都是需要很多经验,要交很多学费的,都是在历练中变得趋近完美的。

我再来批评一下Java社区,可以说Java是最爱标榜自己“结构化,安全性,负载”的,J2EE,EJB,XXX很多概念因为这些借口应运而生,更好笑的是自己搞了一堆“重量级”的概念出来以后,现在开始鼓吹“轻量级”框架……好端端的一个编程语言折腾成这样了。

Java社区一度很多程序员很鄙视PHP的Discuz, 要做一个论坛出来和Discuz抗衡,要在“结构化,安全性,负载”上面都超过Discuz。抱歉,我真的不觉得他们能做出来。反观Discuz,先说结构化,模板引擎,插件机制都说明Discuz很结构化。而且结构化得恰到好处,插件不能无所不能的控制整个系统, 但满足日常应用绰绰有余;安全性,那么多黑客一天到晚盯着,发展那么久,不安全能有那么多人用?负载,Discuz的缓存机制也很简单,并且效果很好,像weiphone这样的每天几百万点击级别的都没出什么大问题。

我发现同样的事情也发生在其他所有的领域,我们的企业,我们政府,有多少是简单问题复杂化的?我们的创业者整天在想模式,轻公司,重公司,因为媒体上一篇不是很负责任的文章就头脑发热,以为一下子找到了改变世界的办法,忘记市场经济的商业社会最简单最基本的信条。

So, keep it simple, stupid! 这句话不是在说世界上的东西都是很简单,很容易的,相反,正是因为难,因为纷繁复杂,才需要Keep it simple,这样,你才能发现什么是最重要,把最重要的做好才有出路。

7 条评论:

  • KISS的UNIX结果没有被广大普通用户接受
    不KISS的Windows却很流行,这说明什么?

    作者 Anonymous ShiningRay, 时间 3:38 下午  

  • @ShiningRay

    那是你不了解UNIX的生命力,UNIX没有倒掉。他依然很好很强大。Windows打败的的X,UNIX下的图形界面,我不得不说Windows比X更KISS, X用C/S架构,为了满足当时瘦客户机,胖服务器的需求,貌似很先进,但满足不了实际的需求,跟不上形势,现在同样基于UNIX的Mac OS X已经不用这种结构了。

    作者 Blogger 华君, 时间 3:47 下午  

  • 完全直接就能操作屏幕的,X还要进行进程间的通讯。图形界面的UNIX正在以Mac OS X的形式重生。

    作者 Blogger 华君, 时间 3:57 下午  

  • 说的很好,我个人也一直在追求着自己所理解的 Simple ...并不是很容易...

    作者 Anonymous iColor, 时间 10:49 上午  

  • 有一点我很同意,就是这个世界上确实没有什么简单的东西

    所谓的KISS,只不过是让自己多花点代价(如时间),给目标用户一些简单的操作,而目的是让这些目标用户多付点钱,对不对。我们开发者的时间换他们客户的金钱。

    UNIX没有花大力气和金钱在图形界面上,所以没有能超过Windows,微软可是交了很多学费的

    同样Apple对于Mac OS X,也是有相当大的投入。

    系统、软件最终达到的KISS,也许是交了很多学费才得到的结果——你想想人这种神奇的生命的产生,可是宇宙XX亿万年的演变的结果啊。

    而你能达到代码很KISS、设计很KISS,也是你学习编程XX年的结果。

    Java社区的事情不要去管他,他们有他们的客户,他们有他们要帮客户解决的事情——就好比Unix和Windows的初衷其实不同。

    另外,其实用户用起来爽,有时候不是因为这些东西设计的好,不过是他们想用而已——如果用某个东西能赚钱,他们肯定都会努力学习。如果他们认为某个东西没价值甚至有害,就算像开关一样简单,他们也不会去按一下。

    我的意思就是,这句所谓的KISS,其实是很模糊的标准,是非常主观的一种东西,这要根据不同人的目的等一些因素来考量。另外,就是“平衡”,要么是你多花时间来让用户简单,用户多出钱,要么就是用户少出点钱,你少花点时间,但用户麻烦一点。

    随便说说,主要是KISS这个东西以前和人争论过。

    作者 Anonymous ShiningRay, 时间 3:32 下午  

  • 从你的博客总能悟到一点东西,谢谢
    想起了一句话
    “事物根本就不像看上去那么复杂,是我们的傲慢自大促使我们对一些简单的问题找到了一些不必要的复杂答案。”
    无论对coding还是design,Simple都应该是我们追求的

    作者 Anonymous 匿名, 时间 12:05 下午  

  • "我再来批评一下Java社区,可以说Java是最爱标榜自己“结构化,安全性,负载”的,J2EE,EJB,XXX很多概念因为这些借口应运而生,更好笑的是自己搞了一堆“重量级”的概念出来以后,现在开始鼓吹“轻量级”框架……好端端的一个编程语言折腾成这样了"

    终于~有人说出了我的心声

    作者 Blogger V.Shydor, 时间 11:37 下午  

发表评论



<< 主页