Xiao Peng

My personal blog moves to xiaopeng.me , blogs about design patterns will be synced to here.
肖鹏,ThoughtWorks资深咨询师,目前关注于架构模式、敏捷软件开发等领域,并致力于软件开发最佳实践的推广和应用。
多次为国内大型企业敏捷组织转型提供咨询和培训服务,在大型团队持续集成方面具有丰富的经验。
  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理

公告

把能力转化为知识

Posted on 2011-10-23 10:59 勇敢的鸵鸟 阅读(...) 评论(...) 编辑 收藏

是的,把能力转化为知识。

我们受到的教育通常是把知识转化为能力。但是优秀与卓越之间差的不是能力,而是知识。

一个例子

10月21日,EDG团队举行CodeJam活动,在骏骏讲完待重构的代码之后大概只剩下1个小时的时间了。没有人有信心在一个小时的时间里把那份代码重构到一个相对满意的状态。这时候8x出场了。他是所有人中对这份代码的上下文了解最少的一个,因为其他人都至少在这份代码上工作了几个月了,有些甚至工作了一两年了。

最终,经过一个多小时的重构,代码达到了一个相对良好的结构。你会说徐昊的能力强,但是我要说他只是知识熟练。他用的重构无非就是Inline Method,Move Method,Extract Method等非常常见的几种。如果给我们足够的时间,团队中的很多人都可以达到差不多的重构结果。但是对于其他人来说,还不够“熟”。

徐昊在重构的过程中跑测试的次数明显比我少的多,我几乎增减参数都得跑一次测试心里面才有底。他不需要,这就节省了不少时间。这说明他对于这样的重构的影响范围是确定的,而我是不确定的,所以我需要一次外在的反馈(测试)来告诉我。

知识的优势

知识和能力相比优势在于,首先知识是个捷径,速度快。比如,一个直角三角形,两个直角边分别是3和4,斜边的长度是多少呢?有能力没知识的人会去按照勾股定理去算,而有知识的人会直接告诉你是5。其次,因为知识占用大脑时间少,所以大脑可以在不需要上下文切换的情况下继续思考更重要的事情。

勾股定理也可以说是一种知识,对应的能力是三角形角边关系公式,它只是在直角条件下的一种特殊情况。可以想象如果遇到计算斜边长度的时候只能求助于三角形角边关系公式,我们速度和效率将是一种什么状况。

如何将能力转换为知识呢?

——刻意练习。

理解

大部分人,包括大部分TWer对于重构、设计模式都是一知半解。工作中也是不求甚解,似是而非,大原则说得头头是道,写代码照样惨不忍睹,5P(SRP/OCP/LSP/ISP/DIP)轻舞飞扬,Smell漫山遍野。所以,练习之前得先理解要做的事情。

分解

心理学研究表明,人脑对大块知识的记忆不如对经过合理分解的知识的记忆更高效。这里(http://www.supermemo.com/articles/20rules.htm)有一篇文章讲这个事情。

重复

重复是“聪明人”最不愿意干的事情,在重复中保持思考是更加残酷的折磨。

结论

无他,唯手熟尔。

有人可能看出来了,这些思想来自于《哪来的天才》。我推荐所有人,至少所有的TWer都要读一读这本书。大概只要四五个小时,但是它会带给你很多思考。