财神爱欢乐——十全九美

  很喜欢这个词,嗯,十全九美!我可不觉得十全十美有多好,如果真的实现了,只能说明设定的目标太低或者要求太简单。相对的,十全九美就很好,对生活还有一些不满足,和一些还要继续奋斗的理由,带着这些希望的力量,一路上都不会觉得懒散和孤单!今天和大家说说十全九美的故事。 

  平静的海面无法航行!最近在看The Walking Dead,有一个镜头的壁画上写着这句话(原文是英文),我把它摘下来写在这里和大家分享。想想还真有道理,在帆船时代,如果海面风平浪静,那么船是没办获得足够的动力而继续前行的,而如果风来了,随之一起来的就是浪,就是潜在的风险!嗯,这么平静的一句话,隐藏的是一个巨大的矛盾,不是么? 

  矛盾无处不在,留给我们的唯一选择是“权衡”!这尤其重要,然而千里之行始于足下,作为程序开发者,首先要去做的,就是培养自己的权衡思维!因为有了思路的指导才能行动的更果断,就像权衡的思路要求我们不能什么事情都追求十全十美,要在合理的范围内寻求平衡、理智和性价比!这点看起来是那么的自然,但是实际情况却远不是这样的! 

  看看吧!是个新技术就要学习,就要用!是个设计就要把它折腾的没人看得懂,你看的懂么?看得懂我就再改改!等等等等。这很常见!不是么? 

  当然了,这里面涉及很复杂的心态,这里就不展开说了!从理性的角度,应该在很多事情上找平衡,而不是任由它们发展成难以控制的地步。比如复杂的设计和快速开发之间的矛盾,有时一个软件永远也不可能复用,就是用完就扔、一次性的那种,为它设计无数的接口,预留多数据库支持等等的,就是没能权衡好两者之间的关系了吧! 

  比如算法的复杂性和性能之间的矛盾,有时一个集合最多不会超过100个元素,非要给他实现一个牛X的排序算法。然而有时对性能真的有一些要求,比如需要一个平衡树之类的容器,那么实现一个容易理解的2-3-4树就比搞一个红黑树要实惠的多,说实话我实现过一次红黑树,是对着教材一步步的做出来的,那些这个旋转,那个调整,根本没心思去理解。相对的,2-3-4数就好理解的多,而且它们有很强的对应性,大多数情况下两者都能满足需要! 

  这样的例子还有很多,就像网络上有人炫富一样,程序员有时就喜欢炫技能,“空口白牙”写出个quick sort甚至是红黑树仿佛就是极有面子的,这种做法和想法无益于任何问题的解决,而且是极度有害的! 

  一个激进却又容易接受的观点是:“我们要做的不是amazing而是just not bad”!还拿排序的例子来说,可以先实现一个插入排序,如果用着还行,那么就先不要管这块儿了,还有更重要的活儿等着你去挑战,以后这个排序触发的很频繁,已经成为了系统的某个瓶颈的时候,再回来优化为logN的算法也不迟。再比如,一个设计可以先keep simple,照顾到团队的每个成员的理解能力,让他们从平白直抒的语义中顺利上手,待以后对这一切熟悉了,而且简单直白的设计真的无法满足要求时,再把它优化为更高级,同时也是更复杂的新设计! 

  接受“十全九美”不是无能,而是一种智慧!它要求我们把有限的精力和资源,用到更需要的地方上去!还有一门专门的学问来研究这个,它叫做“经济学”,也许程序员的权衡思路得到普及和认可之后,会有人意识到程序开发是需要一些思维指导的,会有一门学问叫做:“软件开发经济学”! 

  来吧,十全九美,这么有意思的话题就要告一段落了么?

你可能感兴趣的:(爱)