技术在进步,人也得成长。打开社交媒体,无处都不在贩卖焦虑:

  震惊!90 后的程序员,至今都没有一个活过 30 岁?

  为什么 35 岁的 85 后程序员,都找不到工作了?

  ……

  那些写稿的人,有一天突然自己焦虑了——是不是这真的就是一种趋势?年底了,也得按照惯例 “焦虑” 一下成长。照旧,作为每年年底的复盘(Review),这仍然是一篇对于未来的思考和总结。

  

  职业发展 vs 个人发展

  国内大部分的组织,哪怕是大型的公司、企业里,都缺乏有效的技术人员发展路线。或许是国内的程序员都比较 ”年轻“,或者是现有的大部分程序员都停滞在现有的阶段——资深阶段。这无论是 BAT 里的 P7、P8,T2.3、T3.1,还是 ThoughtWorks 里的 Senior Consultant,这都是一个很长的关卡。

  原因,除了这是一个等坑期,还是一个迷茫期。坑位只有有限的几个,而等坑的人却有那么多。而往往不是一个光靠技术就能往上走的坑,为了更高的 Grade/Title,需要的都是技术 + 业务。这样一看,呀,纯技术路线在哪都发展不下去。那样一来,我们需要往何方走呢?

  资深的下一个 Grade 就是 Lead Programmer,如 Basecamp(37signals,创造了 Ruby on Rails 的公司)在 GitHub 上标明的 Lead 程序员的要求:

  在多种编程环境中拥有深厚的专业知识

  能够为大型项目运行和指导小团队

  能够跨多个领域执行项目(例如,需要 API 后端的原生应用)

  ……

  换句话来说,我们要能够完成站在整个系统的角度来看待问题。作为一个资深的程序员,或者 Tech Lead,我们往往从自己的那部分前端、后端出发,来考虑整个系统的问题。而作为一个更高级别的程序员,需要拥有更好的功能,来掌握更多的技能。但是,这一点让我又考虑去了程序员的专与广的问题:

  作为一个 Junior 级别的程序员的时候,我们要追求广度,它能让我们找到适合的方向。

  作为一个 Senior 级别的程序员的时候,我们要追求深度,它能让我们证明自身的价值。

  作为一个 Lead 级别的程序员的时候,既需要广度而又需要深度。

  这大抵算是对于大部分人来说,如我,会有一个更清晰的方向。

  

  定位:工程 or 研究

  微信图片_20190102110958.jpg

  从长期来看,作为一个软件开发工程师、咨询师、前端工程师等,我们不得不为自己在职业上定一个位:WHO AM I ?在不同的职业生涯里,我们的定位都是不同的。

  从 IT 领域上,大抵上可以分为:工程师 + “科学者”/研究员。前者偏向于工程,后者偏向于理论研究。看笔者文章的人,大抵都属于前者。但是吧,又得投入后者。

  一旦,我们找到了合适自己目前的位置,便得去关心所在领域的最佳实践。如对于工程来说,我们要关注的东西是:

  可演进式架构

  编写可维护的代码

  更好的工程实践

  对于理论来说,我们关注于原理与设计。要合理的分配两者的学习比例。

  若你和我一样是一个工程师,又喜欢研究理论。日常的编程中,多数的研究相关的内容是用不上的,往往是工程上用的东西比较多。不过只靠实践,往往也是不够的,还需要进行一定的理论和创建研究。在合适的时候,需要适当地分配一下比例,如 80:20 的比例。

  在职业阶段的不同,又需要对编程领域细分,如前端、后端、原生应用、blabla。只是这点细的分类,并没有太多的差异。从笔者的经验来看,能用一个语言编程的人,再换个语言编写业务代码,并不是一件困难的事。唯一麻烦的地方,角色的转变——你可能没有意识到现在的位置,它需要你去做什么,而不是抗拒它。


  靠持续投入,而依赖才华

  职业生涯的早期,写代码靠的是才华。但是随着时间的变化,若是没有持续地投入,也有才尽的时间。就这一点上,就 IT 行业,又或者是不同行业中,我们都可以看到一些端倪。

  今年劳动节,我和花仲马去马来西亚玩的时候,我们买了本春上村树的《身為職業小說家》,即《我的职业是小说家》的繁体版本。繁体版本是传统的坚版,由右到左的排版方式,我便又饶有兴趣的看了一遍。最大的体会便是:越有造诣的人,则越投入得越多越长。

  如村上春树,上班族打卡,早上起来雷打不动坐在写字台前写作 5、6 个小时,每天必须完成四页稿纸。三十年来天天坚持跑步,真是一点儿也不浪漫。

  如若我们看待编程的方式是,它不仅仅是收入的来源,还是乐趣的来源。那么,我们会持续不断地投入。而这种投入,依靠的还是一定自律。如若只是每天完成工作上的代码,怕也算不是投入。除非,它能为我们带来更多的乐趣。对于工作能否带来真正的乐趣,智者见智吧。

  我害怕的一种生活状态,便是每天加完班,加到家里,再也不想写代码。哪怕是再好的才华,再高的兴致,也容易被磨灭开来,成为别人家的机器。

  而所谓的才华,大抵便是悟性。而悟性这种东西,往往不是练出来的,更可能是看出来的,或者是对话出来的。才华,便也是笔者最讨厌的玄学——说了,我自己也不懂所以。而这种才华,便也算是运气,有时候是在非自己的工作领域中领悟出来的。

  自律、体力、耐性,就是这么不佛性的三要素。

  

  适当地输出

  在 IT 行业里,做得有声有色,得是能拿出一些作品。或是借助于公司的产品,来体现自己的出色;或是创造自己的项目,来展现自己的乐趣;又或者是写自己的文章,表达自己的编程观点。

  输出,大抵是到目前为止,我使用得最好、广泛、有效的技术。因为看到它对自己带来的一系列成长,便也将它作为自身技能的一部分,持续不断地磨炼。输出的内容可以是:演讲、代码、开源软件、文章。

  而输出有一个大前提是输入,如编程实践、阅读书籍等等。如此说来,这种活,倒也不是阿猫阿狗能轻轻松松做到的,还得经过一系列的思考,。但是总有一些人吧,总是可以轻松地复制和粘贴别人的观点。若没有加以实践,有些东西还是经不得推敲的。在阅读的时候,只需要细微地思考一下,也便能识别出来一些端倪。

  如我擅长的写作,对于自己而言,还有别的技能提升:

  系统性思考

  逻辑思维

  观察能力

  在写文章的过程中,会不断强化这些技能。如果我们想快速进入一个领域,便可以以输出来强化知识输入的能力。

  这输出不仅仅是一个能力提升的话题,还在持续不断地提高你的影响力。再好的技术,没有方式和能力对外展示出来,就不要怨天尤人。从技术实力上来说,我大抵是比同龄人的平均水平,多一点点。但是多了这份影响力,便多了不止一点点。它可以用在扩大团队规模上,提升整体的技术水平。

  

  持续的挑战

  持续的挑战,在这里指的是:尝试新的可能性,学习新的技术。

  若是每年都安安逸逸地,没有一点新的气息,再好的斗志,也会被岁月磨去。这样一看,学习什么东西,似乎一点儿也不重要。我们要的是一种心态,它能让我们接受新的事务——虽然我们可能并不认同,但是也能接受它的存在。

  哪怕是随着年龄的增大,其它事务的不断增多,学习的时间越来越少。我们只有持续不断地学习,保持一种学习的心态。面对一些新的事务,便也不会有害怕的心里。

  到底也是这些年,看到越来越多的技术人员,因为各种原因,荒废了技术。便也意识到这方面的战略意义,你呢?是不是也存在这样的问题呢?

  

  领域知识

  某个框架,某个语言,只是解决问题的方式之一,而非是唯一的解。

  不讨论框架,不讨论语言,我们只讨论领域。而我们讨论领域的时候,指的是技术及非技术相关的领域。而技术只是其中的一个领域,但是是非常小的一个领域。不过,从技术的角度来看,跨领域的工程师机会比较多,可能性也比较高。一旦如此,我们也越能解决跨技术领域的问题。又如我们在开头所说,它有助于我们成为更好的程序员。

  与此同时,我们会发现,我们往往缺少技术以下的领域知识,如金融、物流。而这是这些领域知识,它可以为我们的职业生涯带来更多的价值。越是我们平时觉得不起眼的东西,在我们寻找工作的时候,有相应的背景,反而能为我们带来更多的价值。

  作者简介:黄峰达(Phodal),ThoughtWorks Senior Consultant,CSDN 博客专家。长期活跃于 GitHub、CSDN,专注于物联网和前端领域。出版著作《自己动手设计物联网》,以及《Growth:全栈增长工程师指南》等六本电子书,并译有《物联网实战指南》。

  本文经授权转自作者公众号「Phodal」。