写点什么

程序员为什么要持续学习(升级版)

  • 2020-05-29
  • 本文字数:5295 字

    阅读完需:约 17 分钟

程序员为什么要持续学习(升级版)

为什么要终身学习,持续学习?

为什么要终身学习,持续学习?中国人有一句老话叫,活到老,学到老。大概是说总有新的知识产生,需要持续学习。回到大龄程序员焦虑这个话题,学习仍然是破解的不二法门。


我们来看对于程序员要求的一些变化。在小公司的时候,可能一个人就把页面、java 和数据库都干了,100 人的公司都未必有 dba,运维的活也将就能干。随着业务规模的发展,问题域的复杂度几何级数增长,分工呈现精细化方向。干活一个前端、一个后端、一个测试,可能还有交互,不然开不了工。精细化分工的副作用开始显现了,分工鸿沟阻碍了效能。于是我们搞了全栈—基础前端工作,研发同学可以学习、质量保障是研发自己的事情。作为 2 年前的研发工程师和现在的,需要学习的内容广度不同了。随着业务数据化、数据业务化的发展,搞开发不掌握一点大数据甚至 AI 的基础,也很难适应时代的需要。综上述,学习是一种能力,知识是可迁移的。


再聊一点 big 的视角。这 2 年流行一个词,叫 VUCA。大概是宝洁公司(Procter & Gamble)首席运营官罗伯特·麦克唐纳(Robert McDonald)借用一个军事术语来描述这一新的商业世界格局:“这是一个 VUCA 的世界。”VUCA 指的是不稳定(volatile)、不确定(uncertain)、复杂(complex)、模糊(ambiguous)。


VUCA 的状态是这个世界组成的常态。比如美军比较 easy 的干掉了萨达姆政权,结果美军在后面缺吃尽了苦头,美国的军队伤亡每天都在增加,恐怖分子,游击部队隐藏在街头巷尾,随时可以发起进攻。在这种情况下美军部队指挥官不得不重新反思和调整他们的指挥系统。美军的指挥官把他们的反思和“学习”总结到《赋能》这本书中,其中“有改进结构,打造灵活强大的团队”,突破深井信息共享等方法。打造灵活强大的团队就体现了小前台和大中台的思想。


舒适区与小步子原则

我们习惯在舒适区是自然的,有励志书籍就讲了,要跳出舒适区,挑战自我。舒服不好么?知乎有不少讨论,其中一个回答比较中肯。


我们为什么想跳出舒服圈?因为我们想成长,成长的动机来源于自己的追求和社会的期待]。例如,我想跳出总是宅在家里的舒服圈是因为我想增强自己适应社会的能力(自己的追求),或者也可能是你的爸爸妈妈希望你能提高交际能力(社会期待)。


我着重聊一下学习和跳出为什么是困难的,一是动力是否是自己;二是担心失败的焦虑,负面反馈。比如有人在朋友圈发减肥健身的照片,就可能有人在调侃 A8 腰不是这么减的!因此要做调整,应该小频度的尝试,快速反馈,通过 stepbystep 拿到正面的反馈,逐步消除潜在的对挫折的畏惧。现在几乎所有的程序语言为啥一开头来一个[Hello World],就不无这样的考虑。


总结一下,我对新领域学习或者走出舒适区的观点就是小步跑原则和即时反馈原则。查了一下资料,原来行为主义心理学家 F·斯金纳通过动物实验建立了操作行为主义的学习理论,并据此提出了程序教学论及其教学模式。其程序教学原则就包含积极反应原则、小步子原则、即时反馈原则等。

[—]型人才咋破

近年,关于人才模型提出了 T 型人才的说法。比如来自豆瓣的一篇文章这样说,“I”型人才是指在自己的专业领域有很深的专业水平,但是对于其他领域一无所知,这种知识结构在未来很容易被淘汰,因为外界的变化太快了,你现在的专业优势很可能成为你未来发展的包袱。


“T”型人才的知识结构才能适应现在多变的环境。首先,你有深度的专业领域背景,同时你也有很多横向跨领域的知识储备,这样不但让你有专业优势,更让你有跨界优势,当外界变化时,你可以进行知识迁移,顺应外界的变化。所以,我们需要成为“T”型人才。


link:https://www.douban.com/note/472969437/


讲得挺好,我也很认同,但最大的问题是[—]型人才,不是[I], 无特别精深的专长领域,凡事略懂一点。这个问题我大概也没有能给个好答案,尝试找到那个[I]是非常必要的,有适合面试评价"比较综合"可能是一个负向词汇。

从传统文化看学习

学习是一件有意思的事情。孔夫子说学而时习之,不亦乐乎!大意是说学到的东西有机会付诸于实践,这难道不是一件值得高兴的事情吗?这里面就蕴含了读书和实践的一个关系。


大卫张有一系列关于学习的论述,参见http://www.ituring.com.cn/article/28775。比如前 3 年效应、 德雷福斯模型模型、 刻意锻炼 Deliberate practice、 ADKAR 模型等。我如果不去他的 blog 看看,我不可能记得全这些模型的样子,也不知道什么时候会应用到(我就在考虑一个问题,能不能通过中国传统文化的经验来谈学习,本次就是一次探索求证之旅)。先看看大卫引用模型中的其在 2 个模型。

德雷福斯模型

德雷福斯模型是一种衡量人们工作方法和能力,反省并提高专业技能的层级模型。


它把新手到专家的技能阶段分成五个层级:


新手:新手需要指令清单。新手在该技能领域经验很少或者根本没有经验。这里提到的经验,指的是通过实施这项技术促进了思维的改变。

高级新手:高级新手不想要全局思维。一旦经过新手的历练,人们开始以高级新手的角度看待问题。高级新手能够开始多多少少地摆脱固定的规则。他们可以独自尝试任务,但仍难以解决问题。

胜任者:胜任者能够解决问题。你可能会看到,处于这一水平的人通常被认为“有主动性”和“足智多谋”。他们往往在团队中发挥领导作用(无论是否有正式的头衔) 。他们是团队里的好人,既可以指导新手,也不会经常骚扰专家。

精通者:精通者能够自我纠正。精通水平的从业者需要全局思维。他们将围绕这个技术,寻找并想了解更大的概念框架。对于过于简单化的信息,他们会非常沮丧。

专家:专家凭直觉工作。专家是各个领域知识和信息的主要来源。他们总是不断地寻找更好的方法和方式去做事。他们有丰富的经验,可以在恰当的情境中选取和应用这些经验。他们著书、写文章、做巡回演讲。


德雷福斯模型在《程序员的思维修炼》一书中有描述,作者也列出了一些诀窍。


  • 新手使用规则,专家使用直觉

  • 新手通过模仿和观察来学习

  • 专家要保持实践来维持专家水平


特别要注意的是不要在"高级新手"这个阶段停留太久或者止步不前,如图烧菜,好些人都会烧,或者按图索骥,也能总结经验,但数十年也仅为不得不烧的一种状态。


刻意锻炼 Deliberate practice

首次提出“刻意练习”这个概念的是佛罗里达州立大学(Florida State University)心理学家 K. Anders Ericsson。这套练习方法的核心假设是,专家级水平是逐渐地练出来的,而有效进步的关键在于找到一系列的小任务让受训者按顺序完成。这些小任务必须是受训者正好不会做,但是又正好可以学习掌握的。完成这种练习要求受训者思想高度集中,这就与那些例行公事或者带娱乐色彩的练习完全不同。“刻意练习”的理论目前已经被广泛接受。



当谈到学习的时候,我脑袋里浮现了很多场景。


1、某个工程师用了 2 天时间,最后是因为一个配置的问题(此处会心一笑的人大有人在)–我跟这位同学说,你总结一下,他回答总结不了,因为这个问题最后是中间件团队去改的。----有时候学习机会就这样浪费了。


2、第 2 个故事,关于罚款的故事。开会迟到咋办,罚款!不按时交周报咋办,罚款!简单粗暴!–我们都是成年人,不能有更优雅的方式麽?管理学大师大卫张虽然不是罚款制度的公开倡导者,但是他也默默的支持了这一制度,因为它有效。这里面讲了一个非常朴素的道理,人类不期望被约束,同时自律是非常难的一个事情。为了维持罚款制度,我每周要观察大家发送周报的时间,我累不,非常累!—这里面有一个问题,为啥要去监督?


3、关于周报的故事,为什么要写周报先不展开了。反正以前一直要写。某一天我们说不写了,肯定就没人写;我们说可以写也可以不写,基本也没有人写。因为写成了一种负担,甚至是为主管写,那么不写也罢。我曾说过,与其记流水账,不如不写。提倡写写思考,比如本周处理了一个线上问题,难道没有任何想法,深度缺陷分析?


4、人家说处处留心皆学问,可我们往往却视而不见。曾经把我们团队的一些线上故障和洛一他们合作张贴出来,期望走过路过的兄弟们能在某日回首之际能看看,可惜半年过去了,找一研发同学问之,你知道 xx 组遇到了某个故障问题吗?-不知道;某某同学的周报不是提了这个事情吗?–看了,没注意;那么知道走廊上汇总了我们半年的所有线上故障吗?-不知道,没看。这里面就有一个问题,从哪里学习,风景到处都是,却缺乏技术的敏锐度和观察力!–“慢慢走,欣赏啊!” 这是朱光潜先生从美学角度的一个看法,异曲同工!

传统学习观

我们先看看古代人是如何谈论学习的,或者可以窥见学习的原则、方法和路径。


满招损,谦受益。(《大禹谟》)


知之为知之,不知为不知,是知也。《论语·为政》


什么意思呢?


这 2 则是说谦虚的,虚怀若谷。知道就知道,一旦被捧为专家、大牛能不能说自己[unknow],是衡量能否走得更远的一把尺子。


敏而好学,不耻下问。《论语·公冶长》


知而好学,然后能才。 ——荀子


这 2 则在说好学、好问的问题。问问题不丢人,关键在于如何问。


反模式 1:你对时局有何看法?


反模式 2:因为编程语言争得面红耳赤!恨不能杀人!最近有国外新闻说代码规范涉及到杀人事件,不可不慎。


反模式 3:你们家缓存用的什么,用啥机房好,凡是能度娘的都在问。


徐昊说提个好问题,给个好答案。


我喜欢的提问模式是:对于 xxx 场景,我采用 xxx 方案,但是有 xxx 问题,我尝试 xxx 解决之,结果 xxx;我考虑 xxx,不知道其他人有何看法或者解法? —一句话能把背景说清楚,结果直接问题 xxx 问题,有何解法,为了挖掘背景用了 20 分钟。和时间咋能做朋友呢?


人类习惯按自己的经验提供答案,而提问者的场景和自己可能不一样,甚至差别很大。在提供答案的时候不宜过于武断,所谓拿着一把锤子就看到处都是钉子!


循序而渐进,熟读而精思。《程氏家塾读书分年日程·朱子读书法》


读书有三到,谓心到,眼到,口到。三到之中,心到最急,心既到矣,眼口岂不到乎?朱熹《训学斋规》


口而诵,心而惟,朝于斯,夕于斯。《三字经》


学而不思则罔、思而不学则殆 《论语·为政》


这几则说的是学思结合,并要循序渐进,无终南捷径。从何处学?现在的网络媒体、自媒体、群、浩瀚书海、无数技术大会、公司内网…躺在哪里的叫信息( information),只有内化为自己的才是知识(knowledge)。涓涓细流,饮多少全凭心意。


我个人看周报的习惯是没有干货的略过,然后把这些信息和我们的规划、计划的关系在脑子里过一遍,或者在本子上画一画。


看周报的痛苦是某周是显微镜的细胞级问题,某周是放大镜级的问题,上周的问题无法从下周来提炼。当然我们推崇少些事务性周报,多做思考。一线 TL 要扎到现场,更少依赖事务性内容的汇报。


我特别留意兄弟团队犯了什么错,因为这个是千金难买的知识。还曾组织过对应的学习,也曾去代码版本管理软件比较前后 2 个版本的代码,最后发现是缺陷分析报告没有写到点子上,最致命的问题不是报告中那个。


这里特别多谈一句深度缺陷分析报告,太多的报告为了交差,检查问题的思路应调整为下一次这样的问题我们能不能一定规避。太多的报告的 action 是加强代码 review。


12-13 年从转账业务线到核心平台,老板跟我讲他们要向兄弟团队学习,敬畏资金。听多了也略烦:)但是我往心里去了,我在想新团队的生命线就是资金安全和稳定性。对于这部分知识我自己首先要进行掌握,我通过公司内部的 2 个分享平台,搜索关键字,读了几十份故障分析报告(现在基于安全性的要求,已经不能了解其他团队的了),并对其中好些分析进行解剖比如时序图,包括上面说的代码考古,后来我在团队做了关于并发设计的分享、资损防护的分享。


TL 们和架构师也是用对应的敬畏之心做事,每一行代码做 code review 坚持下来不容易,因为他们本身有大量的业务需求讨论,出具架构方案方面的工作。


三人行,必有我 师焉,择其善者而从之,其不善者而改之。《论语·述而》


弟子不必不如师,师不必贤于弟子,闻道有先后,术业有专攻,如是而已。《师说》


这部分说的是术业专攻,谦虚谨慎。文人相轻,也有技术同类相轻的。


有人讲如果我的老板换成谁 xx,我不服;


我只说一个道理,公司选择一个人做你的老板是肯定有考虑的,你有没有欣赏到呢?你是不是自己想的那么 NB 呢?如果是,怀才不遇!?–大卫张讲说,没有怀才不遇这件事!


从后端到前端、从 c++到 java、从应用系统到机器学习,从大数据到云计算,吾生有涯而知无涯,欣赏,开放、包容,很多地方都可以学!


学贵专,宁精勿杂,宁专勿多,不以泛滥为贤。


书富如入海,百货皆有。有之精力,不能兼收尽取,但得其所欲求者尔。故愿学者每次作一意求之。——苏轼


这里讲的突出专业,一专多能,肯定是学不完的。有一个叫牛新庄的专家专攻 db2 做到同时接多个银行的咨询,俨然是苏秦挂六国帅印,他的一个考量就是 oracle 已经这么多人了,我是不是搞点冷门呢!


对于应用系统研发知识要全面,也要有出众之处傍身。比如分析建模能力、高并发处理、数据库设计方面等等。始于平均,终于平淡,不可不慎!


总结一下,我的学习观:


一:胸怀宽广、谦虚向学


二:从信息的汪洋挑选知识


三:保持敏锐度,寻根究底、举一反三


四:学思结合、提炼归纳


五: 包容欣赏、术业专攻


六:一专多能、宁精勿杂


ps:在学习这件事情上,永远在路上,心怀敬畏,共勉!!!


2020-05-29 15:291167

评论

发布
暂无评论
发现更多内容

C/C++基础之sizeof使用

C语言与CPP编程

c c++ 编程 编程语言

STL总结与常见面试题

C语言与CPP编程

c c++ 编程 编程语言 stl

Spring 5 中文解析测试篇-WebTestClient

青年IT男

单元测试 Spring5

LeetCode题解:1. 两数之和,Map+队列+双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

你还在手撕微服务?快试试 go-zero 的微服务自动生成

万俊峰Kevin

微服务 microservice go-zero Go 语言

随想之乐观估计

云杉

解决分布式session问题

架构师修行之路

分布式 架构设计 session

Spring事务是如何应用到你的业务场景中的?

AI乔治

Java spring 架构 微服务 springboot

甲方日常 14

句子

Java 工作 随笔杂谈 日常

欧洲央行近期将决定是否建立官方数字货币

CECBC

数字货币 欧央行

RabbitMQ 重要概念介绍

hepingfly

Java RabbitMQ 消息队列 JMS

高并发系列——CAS操作及CPU底层操作解析

诸葛小猿

CAS AtomicInteger compareAndSwap cmpxchg lock

组合模式

纯纯

Http请求中如何保持状态?

架构师修行之路

Flink SQL CDC 上线!我们总结了 13 条生产实践经验

Apache Flink

flink

基于 Flink 的典型 ETL 场景实现方案

Apache Flink

flink

中国云计算的云栖“坐标”

脑极体

直播风口,是什么在支撑教育、电商、泛娱乐等场景?

腾讯云音视频

腾讯云 音视频 云直播 点播

测试

云龙

大作业

Geek_2e7dd7

区块链永续合约交易所搭建,永续合约系统开发

你需要开始做点什么,否则你会一直忙一直忙

老胡爱分享

学习 思维方式 行动派 随笔杂谈 拖延症

架构师课程大作业 知识图谱

杉松壁

测试

前端必会的七种排序算法

执鸢者

算法 大前端

为什么区块链能成为全球贸易的助推器

CECBC

区块链 金融 国际贸易

2020英特尔大师挑战赛携手华硕ROG激战成都

E科讯

SwiftGG 文档翻译笔记1-基础部分函数闭包

非科班进大厂必备算法

我是程序员小贱

面试 算法

SpringBoot RabbitMQ消息队列的重试、超时、延时、死信队列

Barry的异想世界

RabbitMQ springboot 消息队列 死信队列 延时队列

理财专题一

TCA

程序员为什么要持续学习(升级版)_文化 & 方法_技术琐话_InfoQ精选文章