当蚂蚁遇见大象

  我很想在这个新开的Blog中马上开始写一些Code相关的文章。但是当我和一些朋友交流之后,发现在一些我已经觉得很基础的方法论没有被听众接受的前提之下,来讨论Code相关的内容是一件很难被理解的事情。于是我只好耐下性子,希望花一段时间,用3到4篇的论述来传递一些基础的方法论,这些方法论会在之后讲Code的时候被大量的用到。

  第一个话题,是我很慎重挑选出的一个话题,先说明下,我之所以第一个说,是因为这是我认为人类智慧价值体现最重要的部分之一。

 

  当蚂蚁遇到大象,小与大的相遇,然后一个问题被我抛了出来:一只蚂蚁如何搬动一只大象?绝大部分人觉得这是一个笑话,就如同问:如何把一只大象放进冰箱一样。但现实中的很多时候,你总会遇到如此的问题,你是那只蚂蚁,而面对的问题却如同大象。这时候怎么办?如果一定要达成目标,有什么办法吗?

  我想说,方法是有的,而这才是人类智慧中最璀璨的亮点。是理想中化有穷为无穷的道路。

  好了,说了那么多虚的,那还是要落到实处,如何做到呢?大家会说:假设蚂蚁有很多就好办了,那也许我会在这里讲团队协作吧。但是,很遗憾,我并不打算在第一个话题中提到除了你以外的任何人,所以只有这一只蚂蚁,也就是你孤独的一个人来解决问题。然而一个蚂蚁的方法也很简单,就是大象分成若干块,每块都是蚂蚁能搬动的,然后搬过去。这点看起来很简单,但在现实中,人类往往会被一些错误的认知所影响。甚至还没有去想怎么解决问题的时候,就去回避问题本身。在我刚参加工作的时候,有位已经工作了10多年的老程序员告诉我:设计要留三分余力,若用上了十分的智慧,那维护就得花上十三分的力量,而一个人的智慧是有限的,所以最后只可能让你精疲力竭,然后搞砸。显然我对这句话的理解上出现了很大的偏差,导致在我很长的工作时间,始终遵循着我理解中的这位长辈的教导从事程序员的工作。但现实中,永远会遇到超出我能力十分,甚至上百分的问题。往往这时候,我会丢给需求的发起人一句:“这个功能实现不了”。于是我就如此巧妙的回避了问题本身。而当我在创业阶段的时候,发现有些问题是无法回避的,因为你只有解决了问题,你才能活下去,所以我在那个时候真正的开始思考。

  首先,你得了解你自己。要做到这点,不容易。你知道作为一只蚂蚁的你,能搬起多大重量的东西吗?那你又知道你在编写代码的时候,最多能把控多大规模的代码工程?甚至更细节到今天从身体到精神的状态对你编码工作的影响如何量化到最终的对代码的把控程度?这一切的一切,都是你对自己的了解,而这是一个起步。当你对自己足够了解了,自然能做出正确的选择,选择一个自己完全能解决的问题,并很好的解决它。

  其次,你得了解问题。我要在这里提一个概念:不要去害怕看起来很庞大的困难,至少你要先去深入的了解它。大部分问题,只是看起来庞大,但实际上并没有如此恐怖,而少数问题,确实庞大到超出想象。但是,这世上大部分事物,都不是不可分割的。是的,我提到了分割,庞大的问题,当你深入的了解之后,你会发现是由若干个问题组成的,若你能将一个问题分解成几个问题,那被分解出来的问题,绝对不再是之前那么庞大的。这里举个做菜的例子:烧一盘糖醋排骨,这是一道很精致的江南菜式,但一般,我们都会 1.洗好排骨并灼掉血水,2.调好面糊,3.把排骨裹上面糊,4.把裹好面糊的排骨放入油锅炸至黄色后取出,5.把凉过一会的炸好的排骨放入油锅炸第二次直至金黄色后取出,6.热锅后导入油转小火,7.放入冰糖化开,8.往锅里放入白醋和番茄酱,9.把炸好的排骨放入锅内翻炒后迅速出锅装盘。到此为止,听起来很复杂的糖醋排骨被分解成9步,每一步都很简单。但做到这些的前提是:你得了解问题本身。这里不妨你给自己这样提问:我做这件事,最终要什么要的效果。那达到这样的效果我又缺了什么,为了得到缺的东西,我又要去做什么。如此递归的问自己,那最后剩下的都是你能轻易做到的。

  最后,也是我一直认为最困难的部分:把所有的事情串起来。就如同做一个大项目一样,你要把每个子问题在你的时间表上变成可执行的计划,并在预期的时间内完成它。你必须了解前一件事和后一件事之间是通过什么传递的。当你完成了前一件事的时候,你就可以不必在关心它,只需要认真的做好后一件事情就可以了。所以如何把事情串起来,最关键的是流程的规划。程序员都知道编译器,我就不花费篇幅来细说编译过程的细节了,但有心人可以详细的了解下,编译器的每一个阶段都有明确的输入和输出,并且在编译的时间线上前后完美衔接,在实现一个编译器的时候,你完全没有必要直接奔着把代码变成可执行文件的目标而去,而是每一个阶段都是一个完整的目标。甚至当所有的事情都完成之后,中间的哪个阶段是你不满意的,你可以替换它。

 

  好了说了那么多,我觉得还是没有把我想要表达的东西说完,很多东西,需要自己切身体会一下才能有感觉,我比较推介程序员们用yacc和lex进行一些简单的语法和词法分析的小游戏。那这篇就到这里吧。

posted @ 2014-02-24 22:47  汪淘  阅读(248)  评论(0编辑  收藏  举报