以“人”为本,加速个人和团队的成长
1.成长的焦虑
物联网、AI、区块链、数字化转型……
在当前的这个时代,新技术、新工具、新语言层出不同,微信、微博、公开课、专栏等各种渠道的信息扑面而来;IT从业人员尤其是软件开发人员,面临着比以往所有时代更加丰富的资源;但是,这个群体中也弥漫着越来越严重的焦虑感,个人、团队和组织在思考如何才能在快速发展的背景中维持竞争力,如何在这个竞争日趋激烈的时代“幸存”下来。
几乎不约而同地,大家认为学习是活下去的唯一方式;“进化”、“赋能”等提法成为了各种大会的关键词,各种基于知识分享和变现的创新层出不穷。比如,罗胖就有效地贩卖了我们的“知识焦虑”,它提出了“一起建设一所终身大学”的口号。
关于“学习”和“成长”,这是一个很宏大、也很专业的话题。在本次分享中,我将从一个软件工程师和教练的角度,通过几个小的案例,来分享几点自己关于个人、团队和组织学习和成长的心得。
2.认识大脑,高效学习
不同人的学习效率差之甚远。有人能在很短的时间内完成学习任务,从而留出更多的时间去干更多的事情,这种能力体现为高效的学习力。在知识爆炸、信息传播高效的背景下,这种学习力将给个人的成长带来极大的分化。直接体现在有些人懂得多、学得快,而有些人花了很多时间和精力却收效甚微。
认知科学的知识,可以帮助我们认识大脑的学习规律,从而使得我们可以更好地设计自己的学习方法,提升学习效率。
从表层知识到深层知识,构建知识体系
大脑的思考过程学习的最终目的,是需要形成抽象知识。当我们面对一个复杂的问题时,经过层层分析,抽丝剥茧,去除掉其中不重要的细节,最终将问题映射到我们既有的抽象知识上,从而找到问题的解决方案。
这是一种能力,是需要经过不断练习、积累才能习得的能力,也是从新手迈向专家的必经阶段。学习的有效过程是,获取各种表层知识,经过消化、积累、抽象等阶段,形成自己大脑中的深层知识。经过抽象的知识,在大脑中占用的容量更小,从而为学习更多的东西腾出空间。
在《程序员思维修炼》这本书中,作者从认识人的大脑出发,讲述了如何认识大脑所固有的生物性缺陷,克服个人的认知偏见,积极学习,提高创造力和问题解决能力;并且提出了一系列实用的方法,帮助新手不断成长为专家。
几点个人心得
具体地,在过去几年中我个人采用了以下手段和方法,帮助自己更好地消化知识,构建自己的知识树:
-
有所为,有所不为
结合个人发展和组织需要,制定个人成长的计划,将有限的精力投入到关键的2-3个点上;构建个人在某几个领域内的竞争力,避免广撒网带来的低效。
每个月、季度、年度进行定期的回顾,检查目前前进的方向是否偏离了预定轨道。 -
勤于练习
一万小时定律已经广为人知,对于软件编程来说也不例外。
没有足够的练习,就无法积累足够的表层知识,也就无法转化为大脑中的深层知识,建立更高层次的抽象。 -
做笔记、写博客、做分享
在读书、学习的过程中,通过思维导图、涂鸦等各种方式对知识进行总结、提炼,方便自己回顾,建立知识点之间的连接。做笔记的过程就是重新对知识进行梳理和总结的过程,有效避免了书读完之后已经把前面的内容忘掉的问题。
“程序员思维修炼”笔记节选
此外,将自己的心得写成博客对外发布,争取各种机会进行分享,也是促进知识抽象、建立个人自信心和成就感的好方法。
过去的一两年,我平均每年在“简书”上输出10篇左右的总结文章,并积极争取TiD等各种外部交流学习的机会。 -
授人以渔(教练他人)
在过去的几年中,我有幸作为教练参与到团队的转型中,进行软件设计和基础能力提升相关的实践推广。比如,过去几年对于TDD、重构和抽象等实践的辅导,弄清楚了一些之前感觉已经懂了、但实际上并不理解的知识点。
同时,我还先后进行了超过300小时的专题培训和工作坊,有效提升了个人对技术的理解和公众表达的能力。
教练的过程是个人不断将知识内化,形成抽象知识的过程,也是这样一个过程:感觉自己懂了 -> 真的懂了 -> 还有更多东西不懂。
3.从做中学,一种更有效的学习方式
关于学习的两个案例
- 学习古典音乐
在得到的专栏《雪枫音乐会》中,雪枫老师曾经提到,在专栏开始的初期阶段,很多听众希望能先介绍一些管弦乐队的乐器;但是他认为,对于古典音乐的学习,应该坚持“先听后学,先爱后懂”。
- 学习攀岩
在学习攀岩的现场,教练走过来,确保所有人都系好了安全带。我们都全副武装地接受检查,检查完毕之后,他走到人群的前面,我们屏住呼吸,准备聆听教诲。
但是,根本没有什么教诲。他只是告诉我们现在开始攀岩,30分钟后我们再回来集合。教练扬长而去,去喝咖啡了。
我们胡乱地在岩石上爬了一会,事实上都不知道自己在干什么。半小时之后,教练出现了,开始讲课,告诉我们如何攀岩。现在因为我们有一些经验,所以他的讲解更加有意义。这比他一开始直接讲课要清楚的多。
首先我们经历了多感官、亲身实践的情景,帮助我们有了初步了解。然后,他再进行一次传统的、充满针对性的授课。
在正式的应用或动手实践之前,我们更倾向于先接受所谓的“基础”理论知识。例如,在英语的学习中,我们会接受系统的语法知识;在学习古典音乐时,我们期望首先弄明白管弦乐队中的各种乐器,了解诸如协奏、变奏等术语的涵义;在编程时,往往会优先学习这门语言的语法和各种特性。
我们往往希望前期学习的这些基本知识,能够以为后续的实践做好准备。
不幸的是,我们在真地尝试学习语言时,语法知识很可能已经忘记了;当我听到一首曲子的时候,之前学习的那些术语已经对不上号了;当我们在编程的时候,却发现还是有很多特性不会用,还得回头再翻开书本学习。
我们在前期所花掉的大段的学习时间,并没有发挥出应有的作用。
相反地,如果我们先了解一小部分知识,然后直接投入实践,完成一些简单的任务,让自己先“存活”下来;然后,以此为基础,再制定下一步的学习目标,进行更多的实践。按照这个模式不断迭代前进,学习效果会更好。
也就是在做中学,通过“做”为“学”提供更好的反馈。
一个软件设计工作坊的改进案例
基于同样的思路,在过去的几年中,我们不断摸索和改进内部的软件能力提升项目。
在传统的培训课程中,讲师和学员之间是单向的信息流动方式:讲师说,学员听。课程的效果往往很差,尤其是实践性很强的软件设计类课程。
针对这些问题,我们将软件设计类课程做成了开放式的workshop形式。我们将课程内容按照内在关系进行拆分,将拆分出来的内容做成一个个相对独立的模块。
在实施过程中,我们先针对每个模块抛出一个小问题,由学员在个人的开发环境中进行尝试,教练在这个过程中仅提供支持性的辅导作用。个人尝试环节结束后,学员们就个人完成的情况进行分享和交流;这个环节之后,教练再带领大家按照课程设计的方法继续进行实际操练,并根据前面环节中学员反馈的信息进行有的放矢。依此不断循环。
先尝试完成一个小目标,再投入学习,不断迭代完成大目标。通过这个方法,学员反馈的满意度大幅提升,学员和讲师之间的互动和信任得到了极大的改善。
4.影响与激励他人
承担管理或者教练角色的人,如果想在团队中推行某一件措施,往往并不容易。《影响力》这本书中提到了一些具体的策略,可以帮助我们更好地说服别人,提升个人做决策时的影响力。Linda Rising在TiD 2017上的培训课程《Influence Strategies for Practitioners》,也着重介绍了如何利用影响力的策略说服他人接受一件事情。
- Liking.
我们喜欢有吸引力的人,以及跟我们相近的人。- Reciprocity.
互惠,人往往会投之以桃,报之以李。- Social proof/Consensus.
我们会跟随类似的或者有地位的人,比如人们曾经对庆丰包子的追捧。- Commitment/Consistency.
人往往会努力做到兑现之前的承诺。哪怕这件事不是自己原本想做的,但一旦做出承诺,就会尽力实现。- Authority.
人往往会尊重权威或者专家。- Scarcity/Exclusivity.
当我们受到限制获得某些东西时,我们却更想得到它。
这些技巧可能已经被很多营销高手运用得得心应手,我们也可以将其加入自己的工具箱中,更好地发挥自己的影响力。它让我想起了几年前我们在内部实施Code Review的故事。
一个实施Code Review的案例
Code Review作为一项软件开发中广泛采用的实践,其有效性已经得到了认同;左耳朵耗子在《从CODE REVIEW 谈如何做技术》这篇文章中已经有了讨论。但是,在我周围的团队中并没有得到很好的落实。
如何在团队中落地这么一件看似很简单、却长期被忽视的实践,不是一件太容易的事;尤其是一线团队和开发人员,经常因为时间紧任务急、耽误时间、没有用处等原因而忽略这个环节。
在后来的实践中,我们借鉴了上述有关影响力的模型,帮助我们逐步走上正轨。具体来说包括以下几个方面。
-
打开眼界,看看外面的世界
在相对封闭的通信行业中,给予大家了解其他行业和公司的机会,尤其是类似于Google这样的明星公司。在了解到这些成功的互联网公司里也在做代码评审这件事情的时候,大家更有可能相信这个方法是可行的,至少愿意去尝试一把。 -
邀请权威人士献身说法
在敏捷转型的几年中,公司投入资源,邀请了来自外部的咨询师和顾问,给组织和团队做辅导,其中包含一些软件设计水平很高的牛人。我们趁此机会,请他们帮助我们在团队内进行Code Review实践的导入。
咨询师的影响力往往胜过内部的这些教练,团队成员显然也更愿意相信他们头顶上的光环、以及过去的成功经验。从最开始带着大家做daily review,到最后团队逐步养成定期代码评审的习惯,这些高手的带动作用不可小视。 -
为开发人员解决燃眉之急,赢得信任
作为教练,平时积极地帮助开发人员解决问题,尤其是一些刁钻古怪的bug,可以帮助我们逐步树立个人的品牌,赢得他们的信任。
当我们再给他们“推销”一件东西的时候,他们会更容易接受,尤其是在发现一些bug是可以通过代码评审消除的情况下。
人与人之间的互利互惠会让他们更容易接受我们。 -
建立正向的激励机制
代码评审稳定进行一段时间后,我们在组织内设立了“show me the code”活动。这个活动每月举行一次,大家可以把通过代码评审发现的典型代码,提交到一个公共论坛供所有人点评和讨论。然后通过投票的方式选出最有价值的几份代码,在内部给予相应的物质和精神奖励。
通过这种方式,引导大家不断将代码评审的习惯保持下去,并形成稳定的节奏。
5.总结
人的大脑来源于人类千百年来的进化和基因的遗传,这也决定了我们的思考方式和行为方式在很长一段时间内保持基本稳定,其中包含了一些与生俱来的弱点或者缺陷。
一切问题归根到底都是“人”的问题。从人的特点出发,可以帮助我们更好地认识自己和团队,顺应人性,从而制定更加有效的措施,促进个人和团队的成长和进步。