小明毕业以后从事程序员的工作,他很努力。每天下班以后还抱着各种计算机书籍:程序设计语言,算法分析与设计,操作系统与网络,啃到半夜。小明相信机会只垂青有准备的头脑,为未来准备了很多知识。小明心想,要是有个大牛列个必学必会清单,学会了这些,以后就啥也不怕,顺风顺水了。
但不知不觉的几年过去了,小明的工作依然没有起色,因为他发现自己偷偷学的东西在工作中根本用不上。还不如下班后玩玩游戏泡泡妞来得实在。眼看着离做成功项目,赚大钱,迎娶白富美,走上人生巅峰的目标越来越远。小明很着急,问题出在哪里?为什么越努力离牛逼专家的路越远了?
1 新手与专家的区别
小明所在的工程领域,强调实践,也就是,linux操作系统的创造者linus所说的:“show me the code”。
而实践的最大特点是:没法用文字准确表达,无法被完全客观化或者正规化,因为实践必须在特定的关系和特定的时间中完成。
小明想在编程技能方面成为专家,专家与新手的不同在于:专家总是知道具体问题具体分析,而新手总是按规则办事。德雷福斯模型(Deryfus)谈论从新手到专家必须经历的五个阶段:新手,高级新手,胜任者,精通者,专家。在这个变化过程中,人不只是知道更多或者获得了技术,而是在如何认识世界,如何解决问题以及如何形成使用的思维模型等方面体会到根本的区别。新手掌握情境无关的规则,专家掌握依赖情境的直觉,专家的优势是在情景之中依靠直觉快速的识别模式。
为什么新手到专家之间以此作为区分呢? 从问题自身和问题的解决者两个角度来看。
2 问题的特点
软件创建出来是为了解决现实生活中的问题,而这些问题本身是在情境之中的。问题领域的概念之间互相联系,而模式潜藏其间,不可能按照一个书本上的知识点照搬就能应对。实践活动或者说工程构建是没有办法严格按照清单来的,因为你要构建的作品与世界广泛联系,所以很多问题必须在这种联系之中来解决。
Andy Hunt在《Pragmatic Thinking and Learning》中用了树这样一个隐喻:“你可能把一棵树看做一个单独、离散的对象,立在地面。但事实上,一棵树至少是两个主要系统的连接点:树叶和空气的处理循环与根和泥土的处理循环。树不是静止的,也不是孤立的。”
另外;问题所在的设计空间也是组合爆炸的,专家必须依赖自己的品味或直觉(右脑无法直接掌控的异步模式识别)来给出答案。
3 问题解决者的成长方式
作为解决问题的人,作品的创造者,在提升自己技能的时候,首先需要面对学习方式的转变。《程序员思维修炼》中作者提到这种转变的背景:“我们似乎有一种文化倾向,那就是本末倒置:首先努力获取信息,然后希望以后再用到它。这是大多数正规教育和公司培训的基础。但是现实世界不是这样运转的。”
那现实世界到底是怎么样运转的?
简单的说是需求驱动的:你需要实现什么的样的价值,就通过构建来实现它。实践活动是通过构建综合来完成作品,而不是仅仅分析。知识是因使用而学会的,也就是说,通过构造,多做来学习。这是一个翻转的过程,就像教会别人是最好的学习,写作和阅读相辅相成一样。
你的资源和时间是宝贵的,必须按价值的重要性来分配,才能玩得转,既解决了问题,也满足了自己的个体需求。
4
完成学习方式的翻转以后,小明对自己这个思维的载体产生了浓厚的兴趣,开始在神经学和行为理论等认知科学展开研究,收获颇丰:
4.1 大脑的隐喻
- 大脑:双CPU单总线的设计,L(Line,逻辑和语言处理)和R(Rich,DSP,大脑中的google,负责异步处理搜索和模式匹配),不同于杏仁核的情绪中心,而是类似意识和潜意识的管理中心。
- L是分析型学习,而R是综合型学习,强调你是否通过构建输出了作品(软件或者书等)。
- L是看树木,R是看森林,通过R发现整体的模式
4.2 行为能力
你作为一个有自主行为的个体,如何摆脱认知局限,管理干扰,利用好生态系统中的反馈循环。
4.3 沟通能力
没有人能憋大招成才,需要在你所在的生态系统中吸取反馈,利用反馈不断的改进自己的构建作品。
- 团队内部和团队之间的交流
- 敏捷方法,强调最终客户和开发团队之间的反馈
5
小明终于革新自我,成为了python专家,被白富美扑倒,走上人生巅峰了。故事有了一个完美的结局.
后来呢? 没高兴几天,小明明白了,物质生活的美好仅仅是基础需求,其实自己的重要问题是:
认识你自己,认识当前时刻,认识你所处的情境。去观察,更好的看清这个世界,看清自己。
“真正的发现之旅不在于追求新大陆,而在于拥有新的视野”,小明很喜欢马塞尔.普鲁斯特这句话。
爱智求真路漫漫......
——《程序员思维修炼》书评