引子

“靓崽,看你的骨骼精奇,是万中无一的武学奇才,维护世界和平就靠你了,我这有本秘籍-如来神掌,见与你有缘,就十块卖给你了!”呜呜,我不想一年经验用十年啊,我想快快成长,有什么秘籍没有?当然有,下面送上画马秘籍一本,学会后你就是画马专家啦。


正文


001827787.png

近期网上流行一种说法叫努力说,似乎只要努力就能变得更加优秀。“只要经过1万小时的锤炼,任何人都能从平凡变成超凡。”“以多数人努力的程度之低,根本轮不到拼天赋。”“最可怕的是比你牛的人比你还努力!”。另外一种流行的说法是8小时之外说,你有多优秀取决于你8小时之外的努力。这两种说法似乎相互补充印证。然而对这两种说法,我却都不敢苟同。如果努力就能变得优秀的话,还要智慧来干嘛?纯粹靠努力成功的人我没见过,靠努力猝死的人我到听说不少,年纪轻轻就染上各种病的人更多。

据我观察,IT人之所以面临成长的烦恼,之所以一年经验用十年,不是不够努力,也不是没利用好8小时之外的时间,而是没有学会如何在工作中学习。这也是我写《大卫谈学习》系列的缘由之一。努力是必要的,但有没有不用花那么多时间,相对轻松的学习方法呢?


成长的烦恼——其实我们不懂学习

成长,让人烦恼死循环。“请问你觉得自己哪些方面的能力比较强?”“我的学习能力比较强。”“请问你为什么从上一个公司离职呢?”“主要是因为没有挑战,学不到东西。”“那你为啥应聘我们公司呢?”“我希望能够学到更多东西。”“你的哪些方面让你觉得你能胜任我们公司的工作?”“业务和上一个公司比较类似,我觉得我的经验能用上。”从这一段面试对话中,各位能够看出些什么?希望学习成长,学不到东西,于是换个地方学,同时还想利用前面的经验,这种情况是不是看起来非常眼熟?有没有继续换的,你现在换到几次啦?

招聘,只恨人员成长慢。“这位同学工作好几年了,连自己做过的项目都说不清楚,拒。”“这位同学工作这么久,技术还不如刚毕业半年的,框架都停留在使用阶段,拒。”“这位同学工作十年了,还来应聘高级工程师,拒。”哎呀,最后那位躺枪,作为IT界老龄人,强烈抗议年龄歧视。

培养,人才培养老大难。“我们的目标是培养出公司的产品经理/架构师等等,我们已经给他们建立了能力模型。”“根据能力模型我们组织了很多培训,提供了实战机会,给公司输送了很多人才。”“角色岗位性的初级技能培养效果是最好的,中级技能其次。具备综合技能、能够独当一面的复合型人才几乎无法直接培养,强制培养或强行提拔带来的副作用不断。”公司内、公司外培训机构如此多,然而培训只能培训出基础岗位的合格人员,结合实战能够让技能进一步提升,但真正独当一面的人才却不是培养出来的。

为何个人会有成长的烦恼?为何组织无法培养出所需的人才?为何会一年经验用十年?其实是我们不懂学习,尤其是工作中的学习。不懂不可怕,可怕的是我们以为自己懂,更可怕的是我们沿着自己定下的死路撞了南墙也不回头。说到学习,每个人都能讲个头头是道,原因理由一大堆,主要是因为公司没提供培训,主要是因为工作没有挑战,主要是因为没有时间,主要是因为xxxx。都是客观问题,都是别人的问题,和自己的学习方式相关的一个没有,能够开展行动的一点也没有,继续这么下去,没有成长的烦恼才怪。


学习的秘密——专家与普通人的不同

很多人付出了时间,到最后却所得甚少。而花费同样多、甚至更少的时间,有些人却成了专家。专家与我们这些普通人有什么不同呢?于是我开始观察专家和普通人在工作中学习成长的方式,发现了很多不同。

普通人做事追求快而多,而专家则追求少而精。快而多是普通人的特点,他们认为同一件工作做的越快越好,这样的话他们就有更多时间去做更多的事,从而能工作的更好。然而,专家不这样,他们做的少而精。同一件事,他们不一定做得更快,甚至会花费更长时间。不过与普通人不同的是,专家其实没有一直重复,他们在做事的时候专家变换着各种花样,而不像普通人一样很快就厌烦了。

普通人学得很快却少有实践,专家学的很慢却总有结果。普通人的学习很快,我知道了,我懂了,时髦名词时刻挂在嘴边,他们很快就头头是道的四处点评,谁做对了,谁做错了。到最后,他们什么都懂,但都是略懂;他们什么都知道,但就是做不到。与之相反的是,专家学一个东西挺慢的,他们一直都不太懂,一直试着寻求新的理解和答案。他们很少到处点评,只会默默把正在学习的东西用在工作中。在普通人四处寻觅却没有学到什么新东西的时候,他们又有了新的见解与认识,而且还产出了或成功或失败的案例。

普通人是用原来的自己去做新的事,而专家是用新的自己去做事。普通人总在到处寻找新机会,似乎只有新机会才能成长,但新机会却总没掉到他们头上,他们只能在原有的工作中日复一日的重复自己。专家却在原有的工作中不断改变自己,在普通人抱怨没有机会的时候,他们掌握了新的语言工具,总结出了新的认识方法,在现在的岗位上获得了成功,与此同时,新的机会也在向他们招手。

普通人不重视反馈调整,而专家却非常重视反馈调整。普通人做完一件事就完了,总想赶快进入下一件。而专家则是在一个充满反馈的环境中不断重复做一件事,并或被动或主动的不断调整,例如创业到公司发展的那几年。


像专家一样学习——多维正交学习法

要获得真正的、持续不断的成长,我们需要像专家一样学习。我们需要告别传统的学习方法,转而使用多维正交学习法。

传统学习方法是基于单一维度的,将多个维度进行建模(职能模型、岗位能力模型),然后对模型中的关键维度进行培训,从而让被培养者快速具备完成工作的能力。这种方式适合批量培养合格的普通人,要培养专家或者成为专家就需要改变学习方法。

专家采用的学习方法我称之为多维正交学习法。其做法很简单,做事的时候先把基础维度做好,做好后不停增加新的维度,然后根据结果的反馈进行调整,直到站在多个维度的正交点(综合性最佳答案)。专家在练习的过程中,会把很多维度训练成本能,从而在一次编码中实现尽可能多的维度。专家会不断改变工作方法,以便更有效率的实现多个维度,其工作方法和普通人的工作方法甚至截然不同。

IT圈最常见的编码为例,解释一下多维正交学习法。编码有几个基础维度,实现功能目标、符合代码规范、具备一定的可读性,大部分人的代码都能达到这个目标,当然,很多人的编码能力也一直停留在这个水平上。试着增加维度,加入鲁棒性,增加了异常考虑;加入可追溯性,需要规范代码提交说明;加入团队内交流,采取结对编程;加入业务领域、性能、可维护性、架构规划,增加设计模式、敏捷建模等等。试着增加更多更难的维度,在编码中融入业务理解过程,就是BDD;融入验收测试,就是ATDD;融入测试驱动与设计演进,就是TDD;融入团队交互与持续可运行软件,就是持续集成;融入发布,就是持续部署到持续发布;融入软件生命周期成本考虑,就是持续重构。你的编码在哪一层次?你融入了多少维度?结果让你满意吗?你的工作方法与其他人有无差异,差异在哪里?(从这里,也可以看出,传统的代码行生产率是多么可笑。)

很多时候,给你专家的方法你也用不了,甚至理解不了,因为专家的维度你可能不懂。例如当无法理解团队内交流必要性的时候,结对编程对你来说就毫无必要。这也给了我们另外一种学习专家的方式,当有一种方法你弄不懂,甚至觉得可笑的时候,一定是有些维度你还不了解。试着去发现并掌握这些维度,并将这些维度融入你的工作中。

突发奇想,虽然我们是软件研发人数大国,但在研发人员技术寿命和专家数量上却远远比不上别人。我们在人数上赢了,却在能力上输了。


后记

今天,你多维正交了吗?

希望本篇博客能够让你有所收获。请支持我参加2013年度IT博客大赛,投票地址:我的参赛页,以便能让更多人看到。


参考

1. “靓崽,看你的骨骼精奇,是万中无一的武学奇才,维护世界和平就靠你了,我这有本秘籍-如来神掌,见与你有缘,就十块卖给你了!”——来自周星驰电影《功夫》

2. 推荐一篇讲述一万小时定律和刻意练习的文章《怎样练习一万小时

3. 大卫谈学习系列的第一篇《大卫谈学习:重新认识学习

4. 大卫谈学习系列的第二篇《大卫谈学习2:习惯的力量

5. 大卫谈学习系列的第三篇《大卫谈学习3:方法还是问题,这是个问题

6. 大卫谈学习系列的第四篇《大卫谈学习4:为何你会一年经验用十年