编程感悟

写简单的代码而不追求性能

很多能力都重要,近两年我认为,比较重要的能力是抓住问题的本质。就是可以用足够简单的方法去解决根源问题,抛开中间的一些枝节干扰。

为什么我会强调用简单的方法?Keep it Simple and Stupid,即KISS原则。在20年前,我不完全理解这个道理,比如,我在大学期间以及刚毕业的时候,比较喜欢做程序的优化,让自己写的代码比别人写的代码跑得快。很多年轻程序员和我一样,都喜欢炫技。但我现在看来,这些事不是解决问题的本质。这与把事情做简单有什么关系?以前我认为写出复杂的程序并且不出错是一种出色的能力,可随着时间的推移,我的代码需要被别人维护,可能还要和其他人合作,这时我们需要在这群人之间找到一个共同的基点,让代码更容易理解。所以我们需要让代码足够简单,让别人一看就明白。什么样的代码是好代码?并不是看上去好像没有问题的代码,而是看上去所有东西都清清楚楚,断定它肯定不会出问题的代码。

最近几年,我写程序很少炫技。炫技在短时间内看,是用一个很巧妙的方法把问题解决掉了,但经不起时间的检验。把复杂的问题简单化,对程序员而言是一项非常重要的能力。
—–云风

改变都是渐进的,从趋势上来看,我越来越趋向于写更简单的程序,而不追求性能更好。但我想说,把程序写简单,不论是空间性能还是时间性能都更容易变好。性能是一种自然而然的结果,不必刻意追求。
—–云风

专注的做事你会获得回报,但是要反思

第一,做事情要专注。想好一件事情就去做,只要花的时间和精力足够多,不三心二意,这件事终究会给你回报。每个人的生命都几乎一样长,你不可能比别人多出很多时间和精力,你也不会比别人差在哪或好多少,那么,一件事情做得好不好,就看你投入的时间多不多。但过程中是有方法的,不能蛮干,时常回顾自己怎么才能把这件事学好、做好,发现错误或更好的方向,及时修正。
—-云风

做事要有规律,三思而后行

现在做事情也更有规律。二十几岁时,我经常通宵写代码,一旦进入状态能写到第二天早上七、八点,还不觉得累,觉得一天能做很多事,非常有满足感。而现在,我会在每天早上或头天晚上临睡前想好接下来要做什么事、几个小时完成、大概怎么做,以及在每天下午四、五点钟思考下一步的计划。即使这个时间段我有很好的工作状态,也会去想下一步该怎么做、应该在哪里停下来。在下班之前,我会把工作告一段落,并想好第二天怎么接着启动更好。如果是周五,就告一个大的段落,如果这件事比较重要,我在周末两天也会思考,但不会动手做。把事情分阶段完成,讲究节奏,不倾向于突击,是我在做事方面比较大的改变,三思而后行。
—–云风

另一项重要能力是评估事物的能力,知道一件事情大概是怎么回事,需要多长时间完成,需要什么条件完成,这是靠经验堆出来的。也要对自身有清晰的认知,这样你才能规划好你做整件事情的流程和时间,减少返工。通常一件事谁都能做,比如,同样是2000行代码,有人只需要两天,有人却需要两周、两月,为什么?当一个程序员经验不足时,他评估一件事可以用两天搞定,但他可能又花费两周甚至两月来解决他做事过程中发现的问题,改错、返工,导致和预期完成时间出入很大。这就是能力的差异,否则程序员的能力差异体现在哪里?别人会的东西,你学习后也能掌握,所以真正在做事时,能力的差异就在于一个人的评估能力。
—-云风