程序员的专家之路

这段时间忙于一个系统性的任务,恐怕做不到周更了(事实上,做不到了,距离上篇文章已超过半个月),下半年争取月更。

----------以下是正文

想走专家之路的程序员,成长路径如何选择?这些年走来有些许感触和觉悟。

软件技能模型

我把编程技能所需分为四个层次:

应用层:所从事的开发岗位直接相关的编程知识

传输层:编程语言的特性和使用,建模思维,设计模式

基础层:包括数据结构和算法,操作系统,编译原理,计算机网络等等

数学层:高等数学,概率轮,线性代数,离散数学

因此可以形成这样一条链路:

应用层 --〉传输层 --〉基础层 -〉数学层

反向走

数学层 --〉基础层 --〉传输层 --〉应用层

现实的问题从应用层向下传递,哪一层涉及到了,就为解决该问题提供支持,解决的结果向上汇合给到上一层,然后在应用层给出代码。这像极了安卓开发里的触摸事件传递。

这四层构成一个橄榄型,大量的时间和精力需要投入到基础层和传输层环节。

时间投放

大家在工作之中,不知觉的把大部分时间放在应用层,其实这样不好。而是要把大量的时间放在传输层和基础层,甚至是数学层上,超过的一半的时间放在基础层内容的精进上,尤其对于想走通技术专家之路的程序员更当如此。

现在你所从事的软件开发岗位,比如后端开发;职业生涯中后期你从事的领域变更了。过早的把时间投放在早期的应用层,将减弱了快速迁移和深入的研究的潜力

你所在公司的项目,不一定能存活下来。把时间放在应用层,如果项目失败了,虽然代码写完,你的技术收获还在,但是项目的溢出收益丧失了。将精力投入在基础层,这样你的收益大概率的将会贯穿于整个职业生涯。

程序员的高阶状态是自己造轮子和写框架,能解决其他大多数程序员搞不定的问题。要做到和大多数程序员不一样靠的是什么?那就要有大多数程序员所没有的东西,那是什么?基础层和数学层的能力。

一种实施策略

模型上层,应用层和工作关联最紧密,短期看提高应用层对工作最有助益。基础层、数学层离生产遥远,短期无法增加程序员的生产力,同时面临应用层技术潮流的更迭压力,这种情况如何处理呢?

一种处理思路是:层和层的连接通过线来连接。比如安卓领域,传输层是Java,Kotlin语言,基础层是操作系统,数学层是高数。 先走通这一条线。

另外,数学层的能力对不同领域层是相同的,可以复用。

最后,把握时间。不做其他不相关的事情。

小结

回顾过去,有2年左右时间,我把超过一半业余时间投入到了项目本身和应用层学习上,走了弯路。

希望本篇内容能带给你有益的思考。

生活不止眼前的苟且,还有诗和远方的田野,还有星辰大海。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180901G0QKPB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券