Readventurer

重新出发去冒险, 在郎飞结与地壳的起伏山峰

飞翔的鸟插图。

猜测与智商


前言

前段时间一直配置mac,又是那种半焦虑式地沉浸,对软件的试用算是工具癖,其实是一种病,有句话说得好,一流的程序员炫耀他们的代码,二流的程序员炫耀他们的工具。所以才会有那么多关于那种语言最优秀的争论充斥着各种编程论坛。

昨天的工作继续无甚可说,这实际是一种可怕的现象,意味着自己无法从杂乱的工作中抽象出一种统一的学习框架出来,意味着工作中学习的东西都是破碎的,离散而分裂的。

工作了小半年,零碎学习到东西不少。然而最的收获的,却是见解。 关于猜测。

两种猜测的风格

  • 基于猜测本身的猜测

刚一开始我自己自己的做事方法是,自己经常要去证实猜测本身,如果我猜测某个变量是这么个用法,我很可能会下个断点或者print一下,然后证实自己的猜测并获得更确切的肯定。

这样猜测的好处在于我可以对每一句代码,每一个函数都做到心中有数,都足够清晰,但是事实上,基于猜测本身的猜测,将很多的时间浪费在把握比较大的句子上,比如我看到了一个函数,名称叫做-user_num_stat-,但是如果其中的代码我并不懂,虽然我比较肯定这个函数是在做用户数统计,我也仍然有可以在repl中运行一下,确证这个函数做的确实是用户数统计。

换句话,基于猜测本身的猜测方法,务必要求对每一次猜测的正确率都是100%,然后才去做下一件事情。 这无疑导致了巨大的浪费,为了追求从90%的把握到100%的把握,我将相当在部分时间都用在已知的事物上,知识的边际效应递减,我的收获也并末达到预期的效果。 这种追求100%的心态,一直存在,而且像一种病,导致低效,导致拖延,导致很多无谓的时间耗费。

  • 基于目的的猜测

其实我们的猜测,应该是基于目的的猜测风格,所谓基于目的的猜测,有两个含义,一是说我们的猜测的粒度应该更大,不能是对于某个变量,某个表达式,某个语句的猜测,而应该是对某个函数,某个代码块,某个文件的猜测,这样的才能够更好地直到猜测所应该有的意义,这样一来,对于我们已经有90%确定的知识,基于更大粒度的猜测可以直接无视地跃过,这种跃过无形之中就确认了我们的猜测,使得我们不必在其上再耗费时间。

另外一个含义,则是说做出了猜测之后,我们的任务,不是去确认猜测本身而是基于猜测本身去进行下一项任务,你准备开发什么功能,你打算增加什么模块,直接面向你的目的去行动,而不是将事情分隔成理解,思考,执行这么分离的几个状态,而是将理解,思考,执行融合成一整块,然后遇到问题,发现结果不如我们的猜测,再次进行返工与重构。这样才能够比较快速地实现目的,并不断地取得进步。

什么是好的粒度

什么才是猜测时的一个好的粒度呢?想了一想,我以为好的粒度是因人不同的,也因任务不同,对一门技艺的掌握程序无疑极大程序地影响你的猜测粒度,对于站在一站学科的专家来说,他的猜测粒度可能是基于项目的,无论你做了什么,他看了两眼就明白,你基本是怎么做的,为什么这么做,思路是什么,有什么创新,这也就是心理学中所谓的专家的概念框架,而对于一门学科的入门人员来说,猜测的粒度可能是基于单词,基于术语,任何一个术语都需要想,这可能是什么意思。当我们的猜测粒度越来越大,也就意味着我们在这个粒度上,已经有足够的能力来应对所有的变化了。

从这个意义来讲,除了完美主义幼稚病,文艺复兴僭越症之外,也许我的问题,只是在于对知识的掌握太差了。

 

—————————本文使用ipython notebook写作。