简单才好
今天吃午饭的时候,闲聊说起SNMP协议的设计过于简单(简陋?),但就是这样简陋的东西,基本上成了网管协议的事实标准。记得在大学通信课上了解的几种主要的组网方式,现在,除了公认效率很低的以太网遍地开花,有几个人见过token ring,apple talk网?为什么呀,简单呗。
我记得开始做软件的时候,有几年时间,看了些软件工程、软件开发思想方面的书,半瓶子醋的很厉害,写东西的时候,脑袋里充斥了两个字:抽象。拿到需求,先自己对需求进行放大,然后把相关需求拿到一起找共性,然后开始设计通用机制,或者抽取公用API,然后使得一系列需求能够通过“灵活的配置”在一套代码上实现。实际上,基本上没有用户会使用这种配置,因为用户也是喜欢简单的人,最终只能是我们的实施人员或者开发人员来完成配置工作,但,实施人员与开发人员,永远不能在设计的“精巧”性上达成共识。
后来,当我和几个团队成员意识到这种“无原则抽象”的问题之后,开始有意识的控制这种思路,对于有些需求,就事论事解决就好。
之后,我又进入另外一个误区,那就是对代码质量的过度关注。源于对优雅代码的渴求,让我像患上精神洁癖一样,不停的向别人灌输这种理念,总希望所有人的代码都站在同一个水平线上。基于同样的原理,写出高质量的代码并不是一件简单的事情,所以,并非所有人都能达到所谓的“要求”,而当他们达到要求的时候,又有一个而很重要的成本问题摆在眼前。
微博比博客火,网页游戏比大型网游火,而偷菜又比网页游戏火,简单最好,简单的东西,才能够被更多的人接受。
实际上,真正成功的简单,多数是来自于复杂的思考,或者说经历过复杂的阶段再变的简单,就好像有了淘宝这样无所不能得购物网站,人们发现购物过程变的越来越复杂,就出现了像groupon和美团这样的一天只卖一种商品的购物网站,从简入繁,再从繁化简,都需要功力啊。
当我觉得越来越多的东西并不像当初想象的那么重要时,真不知道是一种进步还是一种退化。