[演讲]这些软技能,让程序员更幸福 QCon Beijing 2017

写在前面

本篇演讲稿是我4月16日上午在QCon Beijing 2017(全球软件开发大会)上做的“程序员软技能”专题演讲,实际演讲过程中的内容,会跟演讲稿会有一定的区别(不能完整背诵了),先将我准备的演讲稿放出来,待QCon将演讲视频发布上去后,更新下文章内容。

演讲内容

导语

标题页

标题页

欢迎大家来到QCon Beijing 2017——工程师的“软”技能,我觉得今天能够来到本专题的同学,已经表达出软技能的重视,的确软技能的提升会很大的帮助自己更好发展。今天我将跟大家分享下我觉得可以让我们程序员生活、工作更加幸福的软技能。

关于我

关于我

演讲大纲

演讲大纲

今天的演讲,我将从分为四个部分进行,最先将简单阐述下程序员发展所遇到的一些问题,再对硬技能与软技能进行分析;再推导在不同职业阶段哪些软技能可以让你更幸福;最后我将聊聊如何来提升软技能。

程序员发展困境

程序员发展困境

社会不断发展,IT领域技术与产品不停迭代的过程中,作为程序员身处其中我们在职业、生活上的发展困境有哪些?

职业压力

职业压力

我们都想在职业有良好的发展,追求上升通道,如专业线的架构师、科学家、又如管理线的技术总监、技术副总裁、CTO等。实际上我们程序员在职业上面临的压力不小,上面便是我列出来常见的一些职业上的压力。

  • Deadine魔咒,项目经理、老板总是期望项目越早上线越好,Deadline总是在前面召唤我们,总得拼尽力气去赶Deadline。
  • 升职加薪困境,每个公司拥有自己的晋升考评模式,如何能够搞懂公司的晋升考评模式,确保自己的贡献能够被知道进而升职加薪呢。
  • 还有跟同僚在合作上的沟通,我们会被人反馈程序员不好沟通,是个奇怪的物种。
  • 行业又在不断变化,O2O、餐饮外卖、共享单车、互联网+等业务模式或概念不断涌现,怎样在这变化的行业中,保持自己的职业发展向上发展呢?

技术能力挑战

技术能力挑战

技术能力和技术大局观是程序员赖以生存的前提,IT行业的商业模式创新和技术创新相互作用,促使彼此前进。毫无疑问,我们在技术上面临了不小的挑战,怎么在保证现有工作完成的情况下,又能跟上工具框架更新,研究新的技术概念、并思考其技术落地性,从日后趋势而言,越来越需要有经验的从业人员拥有跨行业的技术广度,因为互联网终将变为基础设施与各个行业进行融合。

案例穿插#1: 在这些年的从业中,面试过很多的程序员,跟大家分享个某大厂4年经验Java程序员的例子,我在对其进行电话面试后,他的技术技能在4年中发展极为缓慢,可以说是停滞的状态,公司及工作内容是一方面原因,作为程序员我们如何在这样的工作环境下还能保证自己的发展呢?我们在后面的内容会解答这个问题。

生活压力

生活压力

貌似加班对于程序员来说缺省项了,面临上面所说的职业压力、技术能力挑战之外,我们还面临着社会角色所带来的生活压力,如健康问题、生活工作平衡的问题以及现实的金钱问题,想到这些有种身体被掏空的感觉。

案例穿插#2: 在此要跟大家在分享个我身边的案例,我的一个前同事进行了游戏领域创业,2年后公司作价1亿卖给上市公司,为什么他能够做到这样的事情,我想后面再跟大家分析下,我举这个例子要说的是,不是没有机会的,怎样让自己能够发现机会,并抓住它才是关键的。

硬技能 vs. 软技能

硬技能 vs. 软技能

前面说了我们程序员所面临的发展困境,接下来我们来介绍下硬技能和软技能的定义、他们之间的区别与关系。

硬技能、软技能简述

硬技能、软技能简述

我们简单来看看,硬技能、软技能的定义或解释吧。

硬技能:专业领域的知识和能力。

硬技能:专业领域的知识和能力。

硬技能相对来说容易理解,即我们在专业领域的知识和能力,是实打实的技能,一般能够客观评价。

软技能:如何生活、工作的能力。

软技能:如何生活、工作的能力。

软技能呢,我的理解是它是一种“如何生活、工作的能力”,你的工作现状、生活现状一定程度上代表了你的软技能能力。

硬技能 vs. 软技能

硬技能 vs. 软技能

我们来从三个维度,即定义、可度量性、提升办法来对比下硬技能、软技能,并举例看下硬技能、软技能的区别。

软技能及分类

软技能及分类

前面说了软技能代表了“如何生活、工作的能力”,那么我们来看看软技能怎样分类,又有哪些典型的软技能。

职业力:帮助我们实现更好职业生涯的软技能合集

职业力:帮助我们实现更好职业生涯的软技能合集

职业力

职业力

这是我整理的与职业力有关的软技能,对程序员而言,在职业方向想要有着更好的发展,这些软技能十分重要,我们快速浏览下:

  1. 解决问题的能力:可能你受雇于不是自己的企业,即我们常说的打工,也可能你是自己创业,即自己雇佣自己。在现代商业社会中企业重要职责之一,便是创造价值,直接经济价值或是社会价值,这样作为雇员要清楚的是,雇主是需要你来解决问题,不论是程序员或其他岗位,所以职业力里面重要的一条便是解决问题的能力。首先要建立我就是来解决问题的意识,然后再通过自己的能力或寻求他人帮助来解决问题,解决问题的能力差异便是在公司中人与人之间最重要的差距。
  2. 规划未来目标:首选我们需要明确的一点是,认为自己在为他人工作的这个观点是不正确的。为什么呢?工作确实是属于公司的,但你所从事职业的职业生涯是属于自己的,仅是在企业的平台上来施展自己的能力并换取酬劳,因此,你对未来职业生涯的规划显得尤为重要,你想成为怎样的人,你想成就怎样的事,你想过着怎样的生活,都需要你自己进行思考和规划,这一切都是为了自己,为了更好的生活,这一点需要谨记。面向未来做目标规划,有大目标,也得有可以在最近1年左右实现的小目标,即根据自己的大目标来定个小目标。
  3. 沟通能力:现在企业是以协作为主要模式,孤单英雄的模式已经是过去式了,当然,如果你是神级大牛的话,可以忽略这一点,因为你可以靠超乎常人的逆天技术实力来弥补沟通能力的缺陷。作为程序员经常需要打交道的人有产品经理、测试、UI和项目经理,由于大家工种不太一样,所以经常会有争执或不快,沟通一词,最重要的点在那个“通”字上,所谓换位思考,先弄清楚对方想表达的内容,再进行交流和沟通,可以让自己的工作更为的顺畅,让团队的协作更加顺滑。
  4. 职业认知:什么是职业认知呢?简单来说清晰认识自己所处行业的情况,自己公司在行业中的地位,和自身专业领域的技能情况,有了良好的职业认知能够帮助自己进行更好的职业规划和发展。有个提升自己职业认知能力的方式值得推荐,便是以投资人的角度来看到自己公司和产品,以高级别职位的角度来看自己的能力。
  5. 工作态度:这个态度可不是说要求你态度良好,对人和和气气、有求必应哦,而是以承担责任的心态去面向结果来完成工作的态度。
  6. 人际交往:我想大家都明白这个是啥,说道程序员短板,都会把这个提出来。同样作为程序员的我,在刚从业的前几年在人际交往的处理上同样做得不好,我后来总结为什么程序员总是在这块做不好呢?首选,我们工作面对是计算机,给计算机Input再看有没有我们期望的Output,如果没有我们期望的Output,那我们就Debug,一切都很简单,不是0就是1,但人与人间交流、交往不是这样一回事,不是非黑即白,所以学会跟人打交道之前先理解这点,人的多样性远超过我们技术的编程语言、工具框架。简而言之,多多换位思考、多多训练是为上策,关于这一点,我也是在不断学习中。
  7. 晋升阶梯:作为程序员的晋升通道相比较其他岗位而言要稍微轻松些,因为对于硬技能考察的较多,当然如果要进行管理线的晋升,对于软技能的重视也是非常高的。在公司要有良好的晋升,最重要的事情便是成为事情的解决者,勇于尝试新的机会并承担责任,以最后的结果输出来证明自己。
  8. 爱技术、但不要狂热:作为程序员,我们可以通过技术实现很多好玩的东西,热爱技术是很正常的事情,但是不要狂热,因为在项目对于技术的选型要考虑到其它的隐性成本,如掌握某项特定技术的人在市场上的多寡问题。技术是帮助我们来实现产品价值的工具之一,如果过分的追求技术,会变成舍本逐末,单纯追求技术上的满足不管项目、产品的全局是不负责任的,我们可以将这个想象成带着脚铐跳舞。

案例穿插#3: 我有个同事,之前离职进行餐厅创业,在1年后餐厅运营步入正轨后,回顾公司进行研发工作。他仔细分析了自己的职业阶段和自己想从事的餐厅创业,觉得自己1年时间能够将事情处理好,于是乎就投入了餐厅创业,将企业里面使用到的流程优化后,也应用于餐厅管理后,餐厅做得也是风生水起,自己再回归程序员本行,有着良好的职业认知。

生产力:帮助我们提升生产效率的软技能合集

生产力:帮助我们提升生产效率的软技能合集

行业的竞争压力越来越大,社会环境而言变化也很快,如何在时间越发不够的情况下来将事情做好,生产效率就是很关键的,我们来谈谈生产力分类下的软技能。

生产力

生产力

  1. 专注力:在日常工作和生活中我们可能时常被打断,特别是当我们程序员进行编码工作时候,被打断后,往往需要半个小时或更长来找回当时的工作状态。挑选时间片段专注于单一任务的方法,可以帮助程序员从这种状态中脱离出来,当然自己也要学会建立防火墙,专注时间内的其它可能打扰自己的因素需要避免开,如即时通信软件、微信等。专注于完成单一任务,不要期望并行任务完成得很好,经常性的被打断会造成专注力的缺失,对于程序员来说缺乏专注力是致命的。
  2. 时间管理:总是感觉一天什么都还没有做,时间就溜走了,分享一个我对于时间利用方式的理解,即碎片事情用碎片时间,完整事情用成块时间。怎么理解呢?我们日常有很多的碎片事情,如查邮件、刷微博、看微信等,这样的事情就可以利用碎片时间来做,例如上厕所、等公交、坐地铁等;例如完成产品某一功能便是完整事情,需要利用成块的非打扰时间来完成,这样才会将时间利用好。
  3. 吃自己的狗食:技术在不断更新,随着我们经验的增长,在于编码习惯和架构设计方面的能力也是在提升,要勇于去更新自己之前的代码,利用你最新的能力和良好的编码习惯将之前的代码变得更为优雅。
  4. 有效努力工作:加班是我们程序员跑不掉的话题,需要思考的是,在自己的工作内容里面在完成时到底用了多少有效时间,千万不要只是看上去很努力,做了很多无用功或是浪费了时间,当然,如果你公司文化是由加班多少来决定晋升和绩效的,要么玩这个游戏,有么离开这样的公司。
  5. 建立自己的工作方式或习惯:每个人的习惯和能力都不太一样,所以在确定工作原则的基础上来建立专属于自己的工作方式或习惯,习惯的养成也是需要对自己进行更新的过程,这个过程不会轻松,但是是个复利的过程。
  6. 对自己负责:不论是提升工作效率,还是学习新的技能都是在给自己积累经验和知识,在进行工作输出时,需要对自己所完成的内容进行负责,使其达到最好的状态和输出标准,这一切的努力都是在对自己负责。
学习力:帮助我们实现更好自我学习教育的软技能合集

学习力:帮助我们实现更好自我学习教育的软技能合集

学习力

学习力

  1. 学习如何学习,如何自我教育:实际上从大学开始,我们的学习便应该是由自己做主,自己最先需要学会的便是如何学习,如何自我教育。在成年之后,知识的获取往往是通过主动学习,而不是被动学习所获得,可以通过阅读、实践、与人交流来构成自我教育的良性循环。
  2. 发现自己的知识短板:根据自己对于职业上升通道或领域专家的了解,来确定在每个不同阶段在技能能力上的要求都有哪些,每个阶段核心关注的点有哪些,从而来发现自己的知识短板。
  3. 找寻自己的导师:在学习知识和技能的时候,有一种可以让你充满干劲的方式,就是找到一名导师或偶像,通过导师和偶像来建立自己各个阶段的里程碑来追赶他们。
  4. 建立自己的学习技巧:构建属于自己的学习技巧是很关键的,会让自己事半功倍。简单分享下我的一些技巧吧,没有太过花哨的东西。第一,键盘盲打速度要快、准确率要高,能够很大程度节省自己的时间,我当年是通过OICQ同时跟多个妹子聊天来练就的盲打和手速;第二,英文要好,这里的好不是说口语哦,指的是英文阅读能力,练就的方法就是查看英文官方网站;第三,熟练使用搜索引擎,我在处理快速学习计算机的阶段,阅读了当时市面上能够买到的计算机杂志,会有搜索引擎技巧的介绍,当然了就是Google的技巧,在后来的工作中对自身的帮助特别大,找对应技术资料的速度比别人快;第四,一个稳定的VPN,为了VPN这样的东西花费是值得的,不要吝啬这块的投入。先分享这些大家都能实际操作的技巧,其它的等回头再做分享哈。

回顾案例穿插#1: 前面将到的某大厂Java开发工程师,4年工作经验技能没有成长,这便是典型的学习力缺失的案例。适当的不安全感是保证我们安全的前提,如果他能够发现自己的知识短板,进行补充学习,不会有当前的困境。

生活力:帮助我们认识生活、构建生活方式的软技能合集

生活力:帮助我们认识生活、构建生活方式的软技能合集

生活力

生活力

  1. 运动锻炼:程序员工作性质决定了每天会有很长时间是坐着的,以脑力输出为主的工作性质,这样使得我们的身体质素面临很大挑战,另外,有个说法是程序员是碗青春饭,那么这样我们更加需要将自己的身体锻炼好,才能够有更为长的职业生涯和生命。
  2. 理财技能:程序员的收入水平相比较于大多数行业来说是高的,如何做好财务规划,不指望飞来横财的方式来进行退休规划呢,理财技能便尤为重要,程序员不能很好地限制自己的冲动,进行直播打赏、一元购赌博最后深陷债务的例子还是很多的。
  3. 认识自己:可能世界上最难的事情便是认清自己,甚至有可能需要使用一辈子的时间来不断刷新对自己的认识,在各个阶段我们能够尽量的认识自己,熟悉自己的各项能力或不足,才能促使我们实现更好的自己。

这些软技能可以让你更幸福

这些软技能可以让你更幸福

我们在前面介绍了,职业力、生产力、学习力、生活力四个方向的软技能,那么到底哪些软技能能够更好地帮助我们的工作和生活呢?接下来我们将从职业发展阶段,来看看软技能对我们工作生活的帮助。

职业生涯四大阶段

职业生涯四大阶段

  • 受助与学习
  • 独立贡献
  • 带动他人一起贡献
  • 领导创新阶段
第一阶段:受助与学习

第一阶段:受助与学习

一般情况下工作年限1~3年,在这个时间内,构建熟悉工作环境并完成被分配的工作,遇到问题需要在别人帮助下解决问题,以学习成长为主。

重要软技能

第一阶段:重要软技能

在这个阶段,我们应该更加关注于学习能力和效率工作方式的养成,因为在这个阶段需要打好我们的基础质素,日后才能更加快速地成长。

  • 构建自己的学习方式:在前面有提到,有效的学习方式构建,能够保证自己通过一定的行为模式来学习新的知识,或是将已有知识加深。
  • 寻找自己的导师:需要有偶像才能帮助自己更好地前进,锚定了导师或偶像的话,我们才能更好地进行技术上的精进,以达到我们确定的目标。
  • 专注力的养成:这个阶段职业生涯刚开始,专注力的养成,可以帮助我们提高效率,在单位时间内获取更多知识或者技能,本阶段是个着重积累的阶段,所以专注力极为重要。
第二阶段:独立贡献

第二阶段:独立贡献

一般工作3~5年,能够独立完成具有挑战性的工作,解决非预期问题,有一定全局意识,已成领域行家。

重要软技能

第二阶段:重要软技能

在这个阶段,进入了独立贡献阶段,所以,更加关注的应该是工作业绩成果,跟上个阶段相比较,负责的工作更为重要,也会跟其他同学合作,会感觉自己越发忙不过来,于是这些软技能对于这个阶段的同学尤为重要。

  • 时间管理:随着能力和负责事情重要性的提升,可能会面临着时间被其它事情所打断的问题,例如跨团队沟通、工作汇报以及案例分析等,这样如何有效地管理时间对你来说非常关键,否则会变得事倍功半。
  • 解决问题的能力:这个能力代表了你在这个阶段的重要性,毕竟公司是要你来解决问题的哦。
  • 沟通能力:上面有说到,需要跟其他团队进行沟通,那么如何有效地沟通以达到最后的成果,是需要我们掌握的技能,当然,沟通能力的不是一蹴而促的,需要我们不断地复盘训练。
第三阶段:带动他人一起贡献

第三阶段:带动他人一起贡献

一般工作5~10年,已成领域专家,具备深度与广度结合的专业知识,带领他人成长,完成工作任务。

重要软技能

第三阶段:重要软技能

  • 职业认知能力:如何看待你在职业上所取得的成就,以及公司、自己在行业内的水平定位,是你在这个阶段需要弄清楚的事情,因为在拥有如此丰富的工作经验后,如果没有一定的职业认知能力,会使得自己的职业判断出现各式各样的偏差或误判,这样的成本相比较前面两个阶段而言是很高的。并且,一般在这个阶段你需要带领他人一起完成工作,如果没有足够的职业认知,那么在带人完成任务或团队组建上面或许会走弯路。
  • 规划目标能力:你想成为什么样的人,你想成就什么样的事情?在这个阶段应该能够对自己和公司工作进行良好的规划,因为一般情况下,不会再接到具体的任务安排,而是接到目标安排,你需要根据目标来进行阶段实施的规划,因此不论对于工作还是自身而言,规划目标的能力在此阶段都是非常重要的。
  • 人际交往能力:在此阶段时,有时候问题的解决并非仅靠自己的硬实力便能处理,你可能需要相关行业朋友的帮助,这便需要我们自己建立朋友网络,能够互相帮助解决问题,如何有效地通过价值交换建立人际网络,便是该阶段需要具备的软技能。
第四阶段:领导创新阶段

第四阶段:领导创新阶段

一般工作10+年,对行业和领域有了自己的认识和理解,专业水平、人脉都已丰富,职业巅峰时期。

关系图表

关系图表

关系图表

我画了张简单的图片,以便大家可以直观的看到软技能与各职业阶段的关系。

如何提高软技能,让生活更幸福

如何提高软技能,让生活更幸福

我们前面提到了一些重要的软技能,以及在职业不同阶段、人生不同阶段较为重要的软技能,我们知道了这些软技能,我们应该如何提高呢?

认识自己

认识自己

认识自己所处职业和人生阶段,对自己进行硬技能和软技能评定。

工具或方法

工具或方法

  • 根据自己的工作年限来确定自己的职业阶段,职业阶段需要具备的硬技能、软技能清单可以整理出来,进而对自己的能力进行评定,类似于技能雷达
  • 根据行业发展情况,分析对应的技能要求,可以简化成不同行业领域的技术图谱或技能树

确认职业目标

确认职业目标

以职业长期目标来明确自身职业短、中期目标

工具或方法

工具或方法

  • 对自己进行职业规划,根据职业规划来确定短期、中期目标
  • 将短期目标转换成可执行项目

训练:跳出舒适区

训练:跳出舒适区

明确自身软技能缺失和不足,以训练的方式进行提升

工具或方法

工具或方法

  • 以训练的方式进行技能提升
  • 什么是训练,训练不是在已知或已会的技能内容徘徊,应该是反复训练自己的不会内容和技能
  • 最好理解训练的方式,便是运动员和我们之前经历的考试

不断学习

不断学习

不断摄取知识及信息并思考学习,保持技术及商业灵敏度

工具或方法

工具或方法

  • 不要局限自己的技术栈,不要陷入对某项语言的盲目崇拜中
  • 当你手里只有锤子的时候,看到的东西都是钉子
  • 需要适当的扩宽自己的知识边界

结束语

结束语

回顾案例#2 游戏创业朋友身上具备的软技能:专注力惊人、沟通能力好、职业认知良好。


junq

Put a dent in the universe.