设计心得——平衡之道

一、平衡

在前面的“平衡和冗余”中,对平衡进行了整体的分析。今天将对如何平衡具体的需求进行说明分析。大家一定要明白的是,平衡不是简单的撒胡椒面,也是不想当然的大家平分资源。平衡是一种艺术,是一种动态的选择的结果。这种平衡不但体现在每个不同的设计中,也体现在开发中。
正如中医中的君臣相佐之道,看上去容易,其实却特别的复杂和艰难。似乎这也是优秀的中医很少能见到的原因。同样,一个优秀的架构师也是相当难以寻觅的。除了技术本身外,更让程序员转到架构师特别是成为一个优秀的架构师的艰难之处在于,思想理论的提升。而恰恰是这种思想理论的抽象性,让众多的开发者以为它的虚无无用性。或者换句话说,抽象性的层次的理解的高低,就是进除优秀架构师的思想阶梯。
而现实中,这种进步的阶梯是从实践中一步步形成的,但是很多优秀的程序员在这个过程中不断的迷失了方向,或者转向管理,或者固步自封,亦或者开始走向了纯粹的别人思想的布道者。根本无法形成自己的思想和理论体系,只会跟在别人的屁股后面,人云亦云。
最典型的就是人们饱为诟病的所谓“PPT架构师”。

二、平衡需要处理的具体方面

一般来说,在目前的设计过程中,需要平衡的主要方面有:

  1. 效率
    对于大多数的应用来说,解决问题要的就是要有足够的效率,说句大白话就是,干活就得麻利。效率侧重指的投入产出比。
  2. 性能
    性能不光是应用的重要目的也是一切任务的最终结果的目的。性能其实就是程序解决处理问题的能力。性能侧重指的是程序功能实现的能力。
  3. 代码复杂度
    代码复杂度其实在早期是不受重视的,甚至更难更复杂的代码反而是一种长处。不过随着软件工程的逐渐发展以及软件规模的越来越大,代码的复杂度成了一种非常重要的指标。
  4. 代码的可维护性
    代码的可维护性和代码的复杂度一样,都是软件工程发展的结果。毕竟现代的软件开发已经不是一个“英雄”能包打天下的时代了。如果只是一个短小的程序话,这个意义都不大。
  5. 代码的可扩展性
    同样,代码的可扩展性更是如此。对于越发复杂和抽象的现代软件工程来说,不可能因为一两个小的功能对代码进行从头到脚的重写。即使对一个模块重写也可能是一个巨大的投入。
  6. 成本
    当上面的各种从技术和设计的角度来看平衡所需要的相关方面时,大家千万不要忘记,人是活在社会中的,不是游戏之中,更不是虚拟世界。平衡不但要对技术负责,更要对“老板”的钱袋子负责。所以,往往很多技术上的设计最终为成本平衡下来。
    举一个例子大家就明白了,想买一辆车。媳妇想要颜色好看的;内饰漂亮的。孩子想要高大帅气、动力十足的;自己想要操作顺畅、省油跑得快的,如此等等。可真正到买的时候会发现,漂亮的可能动力不足,动力足的可能不省油,省油的可能跑不快。都能满足的,可能钱太多了,而自己手头只有十万块,这才是重点。
    有人可能说,家里是富二代,有矿。那就是另外一回事了,当然那是更高一层的平衡罢了。

三、设计者角度的平衡

如何准确的把握平衡的度呢?就要从根本入手,即成本。毕竟大家看,包括发达的资本主义国家,很多非常优秀的项目,也因为成本的问题,主动或被动的下马了。当然,这种成本不是简单的金钱。可能包括时间、物资和人力(大家有兴趣可以看看“人月神话”)等等。
就像我们一直反对的那样,任何的教条主义、本本主义和经验主义都是僵化的运用所学的知识。也就是说,无论是课本、资料还是经验甚至是思想等等,都只是开发者可以借鉴的参照而不生搬硬抄的例子。所以从设计得角度如何平衡就清晰的明了了。
那么有没有一些指导的原则呢?还是有的:

  1. 以达到最终的结果为目的来平衡所有的可能方面,即达到目的是最终的平衡设计
  2. 从来不单纯的为某种实现而打破平衡,除非有特别的原因,比如关系到团队的生死的问题
  3. 平衡特殊情况下的取舍,比如简单的一锤子买卖的项目,就不要过多考虑技术上的问题
  4. 在平衡选项相差不大的情况下,倾向于简单实现的选择
  5. 不断动态的选择平衡点直到项目的设计完成,而不是僵化的一锤定音
  6. 成本为王,技术为核心

设计者要不断在实践中完善自己的理念并升华为思想,这样就可以在设计过程中展现灵活多样的平衡手段和方法,从而让整个设计变得更趋近于优秀。

四、平衡之道

平衡之道,在于解决问题,在于无限趋近于完美的解决问题,在于不断的根据实际情况的取舍。正所谓兵书上的“兵无常势,水无常形”。普通人服用砒霜,可能会难受甚至死亡;但在中医里,如果肚子里有虫子的,吃砒霜却可以治病。但吃一点砒霜制不好病,吃多了同样可能导致死亡。所以吃多少,要看得了寄生虫病人的具体情况。这也是兵家的“兵行险招”。
这就是一种平衡,平衡之美就在于此。大多数的工作特别是软件设计不可能都是在“钢丝上跳舞”,但只要设计者怀着这种敬畏的心理却进行设计,那么设计的结果一定是趋向于优秀的结果的。

五、总结

俗话说得好“此一时,彼一时”,它的意思其实就是与时俱进。大千世界,各有不同,同样的经验不可能完全复制,甚至可能上一次的成功的经验是导致下一次失败的原因。人们都明白刻舟求剑的意思,但在实际的工作中,往往跳不出当前的局面,陷入了刻舟求剑的同样的境地。平衡也是如此,千万不能僵化的把上一次平衡的成功设计代入到不同场景,而应该是在不断的发展变化中得到一个趋向于最优结果的平衡设计。中庸之道,不是平庸之道,更不是平均之道,而是平衡之道。中庸之道没有标准,同样平衡之道也没有标准,一切以实际情况为准。
但实际上,最重要的往往是:技术是人掌握的,而人是有自己的想法的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值