程序员思维
“你的成功可以复制吗?” ,在很久之前我的上级问过这样一个问题。
我认为这样的问题很虚,工作完成就行了,不需要那么多道理。然而随着时间的推移,我发现这的确是一个好问题。因为它可以区分出你是碰巧把事情做对了,还是你具备了一直做对事情的能力,二者是有本质区别的。碰巧做对,说明你的能力可能还不足,换一种情景,你就不一定能应付。因此,好的晋升制度不仅要考查成绩,更重要的是考查能力。对从事脑力劳动的技术人员来说,“能力”主要指的是“思维能力”。
思维能力是比解决具体问题更重要的能力。问题也许各有不同,但思维方式可以复制和迁移。我们一旦掌握了正确的思维方式,便可以举一反三、触类旁通。
维特根斯坦在《逻辑哲学论》中说,思维本身就能解决问题,我们所要做的,就是观察它是如何做到的。
认知水平有4个层次,从低到高依次是“不知道自己不知道、知道自己不知道、知道自己知道、不知道自己知道”。“不知道”并不糟糕,最糟糕的是“不知道自己不知道”,而因为缺少对自身思维的观察和培养,所以很多人对思维的认知尚处于“不知道自己不知道”的层次。
这种无意识会导致我们很多时候盲目地做事。虽然 “996”工作很辛苦,但也许大部分工作内容是无意义的重复,在工作过程中,思维能力并没有得到锻炼和提高。这样的人即使侥幸晋升成功,他的能力水平仍然停留在低层次。
就像混沌大学创始人李善友教授说的,没有好的思维模型,再多的知识积累也是低水平的重复。成人学习的目的不是获取更多的信息 量,而是学习更好的思维模型。
那么思维模型由哪些部分组成?
大概可以从三大类区分,分别是基础思维能力,专业思维能力,思维能力的综合运用
其中基础思维大概可以分为:抽象思维,逻辑思维,结构化思维,批判性思维,维度思维,分类思维,分治思维,简单思维,成长性思维。
专业思维分为:解耦思维,契约思维,模型思维,工具化思维,量化思维,数据思维,产品思维。
思维能力的综合运用当然也是对这些思维能力。
平时可以对生活中所见所听到的进行联想,训练思维,举个例子,比如花,牛,都是属于抽象的概念,它们并没有被具象化,花分为很多种,牡丹花,栀子花,红玫瑰花等等,牛也分为很多种,黄牛,牦牛等。
针对这些对象,我们可以对问题域进行分析、归 纳、综合、判断、推理,然后抽象出各种概念,挖掘概念和概念之间 的关系,再对问题域进行建模,最后通过编程语言实现业务功能。
在实践中,对于基于抽象复用的平台建设,有以下几条建议。
(1)对于明显具备共性的模块,尽早抽象。 在B端产品的体系化设计中,很多形态的产品是具备明显共性 的,我们可以尽早地进行抽象设计,这样在系统架构建设的早期就能 做出正确的设计方案,而且并不会过多地增加研发工作量,相反会让 未来的系统扩展更加轻松。 例如,业务系统中的统一权限管理系统、单点登录系统、组织架构系统、公告系统、短信系统等,都应该尽早完成抽象建设。
(2)对于共性不确定的模块,事后抽象。 对于统一客户视图、订单中心、商品系统等软件模块,很难判断 在多业务线场景下是否能够完全复用。如果对于是否进行抽象拿不准 主意,那么完全可以先不做,等业务渐渐明确后,有足够的信息做出 充分的分析和判断时,再决定是否合并抽象设计。
学海无涯、何时是岸