学习的逻辑: 知识经济学

万物有始皆有终. 我们的逻辑链条起源于为什么要持续学习, 然后是学习什么, 怎么证明学到了, 最后是为什么只学一门不够

为什么要持续学习 -- 知识通胀时代来临

大家大部分都是在职的, 平时应该会存钱. 存钱最害怕什么? 对, 通货膨胀. 一旦央行开动印钞机, 并大量放贷制造流动性, 我们辛苦多年的积蓄就会被迅速稀释甚至蒸发. 然而现在有一样东西, 正以前所未有的速度被制造出来, 这就是知识. 并且其流动性在互联网的推动下简直泛滥成灾. 换句话讲, 知识正在通货膨胀. 过去各行各业积攒的各种知识, 各种独门秘笈, 都大白于天下. 过去少数人才能接受大学教育, 现在哈佛,斯坦福的公开课唾手可得. 前几天微博上刚流传一哥们一年时间自学33们麻省理工课程. 在这种情况下, 我们现在的知识积累, 知识储备, 会被迅速稀释, 我们的身价也会迅速贬职. 那怎么办? 拿存钱来说, 一方面我们要投资保值或增值, 一方面也要不断赚钱. 放到知识上是一样的. 我们要不断学习, 而我们可以投资的, 只有我们的时间. 那么问题来了, 就像要考虑是投资股票, 黄金, 还是房地产一样, 我们的时间应该投资在哪些知识上?

学习什么 -- 知识漏斗

回答这个问题, 牵扯到一个理论, 叫知识漏斗. 我们可以将知识分为三个层次,代表了我们处理知识的三个阶段:mystery, heuristic和algorithm。以下斜体内容摘自徐昊博客:

"mystery的知识属于未知领域,我们甚至无法了解这个问题本身是什么问题。典型的问题比如“如何成得到最好的设计”,“怎么获得美满的婚姻”,甚至一些看上去不那么难回答的问题实际上也属于这类问题,比如“下一个客户从哪来”,“如何让业务增长十倍”。这类问题中的每个问题都是独特的问题,就好像并不是所有企业都能做大十倍,而且做大过程中的方式也不一定相同。再比如对于某个项目有效的手法,对别的项目不一定适用,都是一个道理,有时候又被称作艺术。

algorithm的知识属于完全已知领域,在这个领域没有复杂问题,所有的复杂性都被解决掉了。无论在何种环境下,按照algorithm来作,总能得到相同或者是可预期的结果。这类知识往往是像“如何列出磁盘目录”,“房贷手续是怎样的”,“在东直门哪里能买到钱包”之类的问题。对于这类知识,你知道就是知道,不知道就是不知道。较容易通过训练获得,其终极形式就是写成程序,完全不用人来作。

从mystery转向algorithm就需要heuristic,我如何把一个未知的问题转化为已知的algorithm,或者我是能够去除掉mystery中的复杂性用简单的algorithm来解决它。或是说,你能否把艺术工程化或者流程化,去掉其中的文艺范。推理,发散,类比等等的都是这个阶段需要的技能。大凡革命性的飞跃,都源自把mystery变成algorithm"

而这三种知识的学习方式和价值也是不一样的. Algorithm最容易学习, 也最廉价, 因为其最容易传播和复制. 而最有价值的, 是为某个mystery寻找的heuristic方法. 一个例子是Martin Fowler的重构. 在此之前, 如何改善既有代码的设计, 并没有什么众所周知的方法. 而Martin找到了一种启发式的方法, 就是寻找坏味道, 然后应用一系列对应的重构手法. 这些重构手法甚至将另外一个mystery "如何安全的修改代码" 给算法化了. Martin是我们学习的榜样.

根据精益理论, 用问题来拉动, 会避免无意的浪费. 卡尔波普尔也说, 科学研究应该从问题而不是从资料开始. 我的同事米高陈也说停止学习, 开始创造. 所有这些都一个意思: 你应该找到一个自己感兴趣的问题, 然后解决它, 在解决的过程中学习.

好, 我们知道了该学什么, 那么第三个问题随之而来, 我们如何知道我们学会了?

怎么证明学会了 -- Validated Learning, 知行合一

我们无论是投资股票, 黄金, 房地产还是其它什么, 我们总要知道是赚了还是赔了. 我们的时间投资于学习也一样. 我这两个小时花进去了, 我怎么知道我花的值不值呢? 我们可以把我们前面讲的TDD的思路用在这里. 就像用测试保证产品代码符合预期一样, 我们也需要一种方法来验证我们的投资是有效的, 这被称之为Validated Learning.

真正的Validated Learning包括拿你学到的知识真的去做事来验证. 我们先不走那么远, 就简单一点, 证明你学会了即可. 我们常用的有效的方法就是分享, 或者教给另外一个人. 你如果能把你所学到的清晰的讲述给你的同学, 或者写成博客, 或者做成培训教程, 就可以有效的检验你的掌握程度. 大家可以想想, 有多少次, 你向别人讲个东西, 别人一问深入了, 你就卡壳了?

所以你应该做作业, 并在课堂上分享. 即使老师不布置作业, 你也应该自己考一下自己. 大家都经历过无数的考试了, 我们可能觉得考试是痛苦的, 想逃避. 可是我们想象一种极端的情况, 如果从小学到高中, 我们一次试都不考, 只在高考时考一次, 你愿意吗? 这风险得多大啊? 所以考试是一种validated learning的机制, 是帮助我们的, 暴露我们知识缺陷的, 我们应该欢迎. 即使老师不考我们, 我们也应该想法自己考自己.

说到分享, 还有另外一个理由来证明你为什么应该分享. 大家都是知识工作者, 大家觉得自己的身价是由什么决定的? 有人说是由掌握的知识. 这句话只对了一半, 甚至不对. 你的身价是由你表现出来的知识决定的, 不是你掌握的知识决定的. 你的老板, 你的同事, 他们不可能知道你都看了啥想了啥学到了啥, 他们只能看到你说了啥做了啥. 我们讲面向对象, 我们只能通过public接口来访问一个对象. 我们就是个黑盒, 别人只能通过我们的行为来判断我们. 换句话讲, 如果你学了某些知识, 但行为没有任何变化, 那跟没学是一样的. 所谓知行合一. 在这一点上, Martin Fowler也是我们的榜样.

那我们学会了并分享了是否就可以高枕无忧了? 现在我们来证明你学一样还不够, 要学多样.

为何只学一门不够 -- 知识工作者的分工

之前课下有人问, 老师我是做测试的, 你们讲的编程的技巧, 我需要学习吗? 这是很好的问题, 它牵扯到知识工作者的分工. 我们在生活中, 随时都会享受到分工的好处, 比如不需要自己种地养牛,不需要自己搬砖建楼, 这一切都拜分工所赐. 分工是一种已经被证明行之有效的科学方法, 可以极大的提高效率. 但这一切都有个前提, 就是你可以直接应用别人的工作产物, 而不需要跟这个人交互, 也不需要关心产物是如何产生的. 比如你可以直接喝牛奶而不需要关心牛奶是如何制造的, 当然在兲朝你可能得关心一下. 但在软件开发中, 或者在一切知识工作中, 这个前提不复存在了.

有多少次, 你可以直接基于客户的标书工作, 而不需要跟客户交流? 有多少次, 你可以直接根据需求文档编码, 而不需要跟需求分析人员交流? 有多少次, 你可以直接根据架构师的设计编码, 而不需要跟架构师交流? 有多少次, 你可以直接根据需求去测试产品, 而不需要跟需求人员和开发人员交流? 没有. 如果我们据此来分工, 那么我们不得不通过其它的实践来加强沟通, 来弥补沟通中的信息损失. 而如果一个人从头到尾包办所有的事情, 分析设计编码测试, 则没有任何信息转移和丢失造成的效率损失.

换言之, 在传统行业中, 分工是一种优化, 不到万不得已, 你不需要自己去搞定所有的事情; 而在知识工作中, 分工是一种妥协, 除非你一个人搞不定了, 你才需要分工.

现在的企业都看重polyskill的人, 从这个角度, 虽然某个时刻你会focus在某个方面, 但我们应该学习软件开发中方方面面的知识. 不要局限在自己现在的角色里.

参考资料

以上是在北航一级实践课程上的说教, 大部分内容来自徐八叉不同时期的session, 其中隐含着一条逻辑主线, 在向学生说明为什么应该做作业时无意中发现的.

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值