Blog

Blog

PHODAL

初级到资深:程序员的职业生涯思考与可迁移技能培养

很久没有写鸡汤了,知道大家喜欢看,所以。。。

在去年的一年里,我经历了一次 “升职”:从一个咨(cheng)询(xu)师(yuan)变成了一个高级咨询师。Title 变了,就意味着工作的内容也会发生一些变化。从拒绝升职,到被说服升职,我的一些想法发生了一些改变,开始考虑一些职业生涯的技能。

作为一个程序员,你不可能在一个岗位/ Title上干一辈子,就算你愿意,你老板也不愿意;你老婆也不愿意——你一辈子拿着一样的工资。

发展其它的通用技能,对这就是本文的主题。

开始之前,让我们带着一个问题:假使你是以 CTO 作为程序员生涯的最终目标,突然间,公司的 CTO 变成了你,你觉得你能做什么吗?

职业生涯

在今年一月份里,我看了一本名为《远见:如何规划职业生涯3大阶段》,尽管有人会说:书中的道理我们都懂,但是我还是想先扯一下相关的内容。

作者将职业生涯分成了三个阶段,每个阶段差不多要用 15 年的时间:

  • 第1阶段:加添燃料,强势开局。耐心打磨经验、技能和关系,为未来的职业生涯做基础。
  • 第2阶段:锚定甜蜜区,聚焦长板。专注于自己的长处,寻找更高的目标和追求。
  • 第3阶段:优化长尾,发挥持续影响力。成为导师,做一些想做的事情。

从本科毕业的年龄 + 45,你可能已经退休了。而到未来,退休年龄可能变成了 65 ,但是这并不重要。

在第一个 15 年里,我们应该着重于发现和探索自己喜欢做的事情。如对于多数程序员而言,编程只是一个谋生及存活的工具,在那之上,我们才有足够的财力去做想做的人和事。你现在觉得你喜欢前端开发,可能是因为你没有深入过后端,又或者只是你比别人擅长前端,你就喜欢上前端开发了

除此,在第一个 15 年里,作者也介绍了职场的三大燃料,用于为未来打下基础:

可迁移技能。职业生涯中获取并拥有的各种基本能力,这些技能可以在我们从一家公司跳到另一家公司,甚至是一个行业换到另外一个行业是仍然能依靠的能力。如解决问题、沟通等等。 有意义的经验。即拥有多样性的经验,它可以帮助我们成为复合型的人才,以免得我们的职业生涯脆弱不堪。如从传统的电信行业出来的程序员,可能在面对互联网企业,会有些不适应。 持久的人际关系。即职业生态系统,这些人可以是上司、客户、合作伙伴、人才及同类,互相之间可以相互帮助。

因此在这种情况下,我们会发现:编程只是普通的一项技能。代码,每个程序员都会写,每天都在写。每年年终的时候,你写的代码又快又好,并不代表你能涨的工资越多。对于 KPI 公司而言,在哪里、哪个部门写代码,往往更重要。即使在同一个部门,做相似的编码,如果你不能证明你的价值,那么你的 KPI 就不会体现代码的价值。

于是乎,我开始在计划一个更长的学习计划。依现在看来,未来的技能更新变得相当的快,它就像一个《灰犀牛》一样,看我们冲了过来。前提是,我们到那个年龄的时候,没有被人工智能淘汰。

强化可迁移技能

技能,向来是到用时方恨少。如果能在遇到问题的时候,知道自己缺少什么技能,还算是不错的;如果在自己遇到一个问题,不知道自己缺少什么时,情况就没有那么乐观了。

但是,问题来了,首先什么是技能?

泛指有别于天赋,必须耗费时间经由学习、训练或工作经验,才能获得的能力。

如,编程是一项需要不断打磨地基础技能,它不是我们一生下来就掌握的能力。

然后,我们再回来说说什么是可迁移的技能。

也被称为通用技能,是职业生涯中除岗位专业能力之外的基本能力,适用于各种职业,能适用岗位不断变化,是伴随人终身的可持续发展能力。 专业技能的运用都是在可迁移技能基础之上。 一般用行为动词来描述,是通用的,可迁移的;通常描述人际交往能力、沟通能力、解决问题的能力、团队合作能力、领导力、适应能力。

而对于程序员来说,这些可迁移的技能有:

  • 快速学习的能力
  • 解决问题的能力
  • 沟通技巧
  • 演讲
  • 运动
  • 等等

这些技能适用于不同的行业,不同的领域。

快速学习的能力。快速学习的能力,指的是能快速掌握一项技能、技术的能力。在今天看来,下周你就要上手一个新的技术栈,你要能在这周的时间里:

  • 快速入门、阅读文档
  • 搭建环境,编写、理解 hello, world
  • 遵循基本的规范及用法
  • 能理解其设计思想,以编写复杂的用法
  • 能找到丰富的资源集

它依赖于,我们拥有丰富的底层相关知识,如编程语言的不同范式、前端框架的基本原理、后端服务的基本架构等等。在技术不断更新换代的今天,这项技能显得特别重要。它意味着,我们。有了这项技能,那么剩下的能力就变成了一个时间问题。如在那篇《学习的艺术——如何学好一门技术、语言》中提出,输出就是最好的输入

解决问题的能力。解决问题是创建价值的根本。在那篇《程序员,你真的会解决问题吗?》中,提到解决问题的四个步骤:

  • 正确识别问题
  • 描述清楚问题
  • 寻找解决方案
  • 解决问题并总结

沟通技巧。作为一个工科生,我的语言表达能力一直是有待提高。它与写作稍有不同的是:写作都是思考完的结果,而沟通则是一种实时的反馈机制。这是我在 ThoughtWorks 工作时,发现需要不断打磨地能力,即使在现在我仍然觉得有待改进。但是在今天看来,这种投入是长足有效的,至少沟通能力在不断提高地。我的第一语言是闽南语,而不是普通话,除了口音带来的问题,还需要拥有更好地表达能力。

作为一个长期加班、只有两点一线的单身程序员,你觉得你一天沟通时间有多少呢?

制定一个长期的技能成长计划

过去我制定计划的时候,时间上都比较短暂: 1~3 年。

在工作中,寻找造轮子的乐趣。写多了前端代码之后,我发现前端有些 “无聊”,因为就只是那几个框架换过来换过去。过去,我习惯于在业余时间里,造一些日常用的轮子。直到有一天,我在想每天工作的时候,总会遇到一个个的大坑,这些躺过的坑可以整理成框架一样的东西。所以,想着应该可以尽可能的去创造能用到的轮子。

如果以 15 年作为职业,那么可以做的事情就多了。如,我一直将咨询师(技术咨询)作为未来的职业方向,这是一项面向未来的工作,因此这种学习过程也变成了一种面向未来的学习。而咨询是大部分资深的程序员,几乎每天都会遇到的场景。

咨询(consultation)意思是通过某些人头脑中所储备的知识经验和通过对各种信息资料的综合加工而进行的综合性研究开发。

举个简单的例子:

你的新同事小陈遇到一个问题,但是他不会提问,问了你的一个问题:为什么我的程序跑不起来?

我们就会去诊断同事遇到的情形,于是就会问他:遇到什么错误?

这时,小陈把错误的日志发了过来给你。

然后,你开始着手分析问题,问他/她所使用语言的版本?相应的依赖有没有安装?

Blabla…

最后,你告诉小陈:重启电脑试试。

在这里,我们就是 “出售” 了我们的知识与经验,而整个过程,是以我们主动提问为主。如果我们将其作为职业,那么就是咨询师。

而问题的关键在于要成为咨询师,不仅仅要拥有、深入相关行业的知识,还要掌握好一些咨询技巧。即,只拥有计算机行业的知识,并不能成为一个技术咨询;同样的,只拥有咨询相关的技能,也很难解决技术问题。作为一个技术人员,技术是一种假以时日就会 “精通” 的能力,而其它的技能则要主动学习掌握。

在上面这个故事的过程中,我们需要的非技术能力有:

  • 提问的能力。首先,我们需要学习的就是如何提出有针对性的高质量的问题。这种场景类似于医生诊断病人,我们需要不断地寻问病人的相关症状,而不是问他今天天气怎么样?——这个问题可能是来自于心理医生。而在这个过程中,如果病人先入为主的说,他可能是感冒了。那么,它有可能会影响到我们的判断结果。
  • 分析和诊断问题。如果我们遇到的是一个 QA (测试人员),那么我们就会要求 QA,重现这个过程。我们才能一步步地向下分析原因,如:QA 输入的是一个 { ”city” :”北京”} 的字符,然后后台就挂了,于是你自己尝试并不能发现问题。最后,你才发现原来 “:” 是中文字符。在这个过程里,需要不断地分析和诊断。

假设,你以 CTO 作为目标,那么你就会发现你要学习的技能。

结论

如果你无法在一个领域做到做好的,又或者和我一样兴趣广泛,那么你就可以尝试去打造自己的组合技能。

如前端开发 + 物联网经验,或者 VR、区块链;又或者是,作为一个开发人员,你拥有相当丰富的金融银行经验;它可以表明出你的稀缺性——前提是你的稀缺是市场所需要的。一手写着前端代码,一手拿着 PASCAL 的编程经验,可能是一无用处的。

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《全栈应用开发:精益实践》

这不是一本深入前端、后台、运维、设计、分析等各个领域的书籍。本书以实践的方式,将这一系列的领域及理论知识结合到一起,来帮助读者构建全栈Web 开发的知识体系,并辅以精益及敏捷的思想,来一步步开发Web 应用:从创建一个UI 原型到编写出静态的前端页面;从静态的前端页面到带后台的应用,并部署应用;从Web 后台开发API 到开发移动Web 应用。在这个过程中,我们还将介绍一些相辅相成的步骤:使用构建系统来加速Web 应用的开发;为应用添加数据分析工具来改进产品;使用分析工具来改善应用的性能;通过自动化部署来加快上线流程;从而帮助读者开发出一个真正可用的全栈 Web 应用。同时,我们也将帮助读者把这些步骤应用到现有的系统上,改进现有系统的开发流程。

comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签