本文由Yurii原创,转载请注明来源: Life Sailor

本文链接 没有比较,难有收获


读大学的时候去考了托福,成绩很是出乎我的意料,作文竟然有5.5分。当时托福作文的满分是6分,5.5分的Rank似乎是95%,也就是说在所有考生中排名前5%。这完全超出我的想象,因为之前没有上过新东方,也没有参加过任何培训班,如果说做了什么复习,似乎就是与同学结对写作、互相修改,练习了大概20篇作文。这个办法是很多考生都在用的,却只有我拿到了5.5的分数,朋友们也觉得很惊讶,问我有什么诀窍。我仔细想想,如果真的有什么要诀,那就是复习时在网上看过俞敏洪的演讲。

演讲的全文我已经不记得了,只记得其中的一个问答。有人问他:在没有老师指导的情况下如何练习作文?俞敏洪的回答是:如果自己练习,那么拿到题目先不要看范文,想想自己要怎么写,写出来,再对比范文,看看人家为什么写得好,有哪些地方可以学习。

恰好,我就是在没有老师指导的情况下练习作文的,而且手上确实有30篇范文做参考。所以对于每一篇范文,我都是先看题目,仔细想想要如何动笔,再写出来,然后再看范文,认真揣摩差异。这样看了十来篇作文,感觉明白了托福作文的写法,30篇作文看完,已经颇有些把握了。再看论坛上一些朋友写的作文,总觉得不得法,虽然大家都看了范文。同学修改作文时给的反馈是:“你的作文风格和其他人似乎完全不一样,但好像是对路的”。从最终的考试结果来看,确实还算对路。

这次托福考试的成绩虽然最终没用上,却没有浪费,因为在复习过程中,我明白了比较对于学习(尤其是自学)的重要性。自学的时候,问题的答案往往是一开始就摆在那里的,于是学习就变成了“熟练掌握某种技能”的过程,但真正要弄掌握这些知识,或许应该认真想想:如果自己不知道答案,会怎么解决这个问题。动过脑筋之后,再和现成答案对比,看看究竟有哪些需要学习和改进的地方。

顺着这种思路,很多东西在我看来就不是“现成”的,解决问题时也不能“想当然”:以前很多网站都没有验证码,后来大家都采用了验证码。在使用验证码的时候,还应该想想,为什么会出现验证码,它要解决什么问题,是如何实现的,验证码有哪些缺点,解决这个问题,我还能想出什么其它的办法?再比如短网址服务,是随着微博类应用出现的,为什么有这样的需求,它是如何实现,是如何起作用的?(明白了这个道理,就会想到,在纸版书里用短网址标明引用文献的URL要方便很多,可惜很多作者、编辑并没有这样的意识)关于这类问题,酷壳上有篇文章《挑战无所不在》说得更到位。

我必须承认,在现成的答案面前,再花时间设想解法确实有点“耽误功夫”,而且自己的解法往往不能跟现成答案对比,有时候甚至差很多。这当然让人难为情,但是持续的比较、思考所带来的收获,远比“拿现成的来用”的收获要大。我印象深刻的例子是,前几年我们曾经基于Lucene开发了一套实时的全文索引系统,不久Twitter也公布了自己的实时索引方案,竟然和我们的方案基本相同。如果之前没有持续的比较和思考,我们大概只能等网络上有人公布了方案,或者提供了现成的类库,才可以提供实时索引的服务。不但动作上要慢一拍,更主要的是,如果第一拍没有打响,我这一拍永远也不会打响。

前几天我问刚开始工作的小伙子,为什么计算机里通常用的小数叫“浮点数”?却没有人能答上来。我不由得想起了自己的经历。在了解到浮点数既能表示整数部分又能表示小数部分时,我觉得非常好奇,怎样的数据结构能既保持整数的精度,又保持小数的精度,而且两者的比例竟然不需要事先设定的?顺着这个问题下去,我才真正了解了浮点数的存储,也理解了“浮点”的意思,由此也明白了若干关于“柔性设计”的讲究。这些收获,应该不是仅仅知道“要用浮点数表示小数”就能取得的。

以前,有则寓言我印象很深。一个人问智者:“怎样才能获得幸福?” 智者答:“做正确的事情。” 那个人接着问:“怎样才能做正确的事情呢?”,智者答:“通过做错误的事情。” 如今,互联网的发展似乎让我们不费吹灰之力就能“做正确的事情”,所以很多人不屑于“做错误的事情”,在有现成答案时这样确实很快,没有现成答案就无能为力了。然而很多时候,解决新鲜问题的本领,恰恰来自对“正确的事情”和“错误的事情”的比较和思考。