如何规划程序员技术生涯

阅读本文大概需要5分钟。

昨天在知乎上看到一个程序员发展的好问题:

 

如何规划程序员技术生涯

死月是前端领域一个比较知名的IP,之前在大搜车带领整个node团队,出过书写过技术专栏,在业内享有比较高的知名度。

认识死月的同学都对他评价非常高,甚至在这个帖子下面一个阿里P8都站出来认为阿里P6级别是委屈了死月同学:

如何规划程序员技术生涯

之所以说这是个好问题,因为它太有共性了。不光是死月同学,我身边带过的下属、认识的朋友就有不少技术特别牛逼,但在公司级别和待遇一直上不去。

 

成为高级程序员之后,很多人就止步于此,一直得不到提拔和晋升。

 

今天分享下我对这个问题的看法:

 

首先技术这个维度做到高级程序员,差距就不会有太显著了。

 

如果排除阿里内部不公平的可能性(或许也可能是这个原因),可能死月是欠缺在其他技能上了。

 

比如:沟通表达能力、产品业务洞察力、资源协调整合能力、向上管理能力、技术认知及前瞻性等等。

 

对程序员来说,高级程序员意味着掌握了下面这些技能:

如何规划程序员技术生涯

 

阿里P6+就是高级程序员,而P7是技术专家。那技术专家和高级程序员究竟还有哪些距离呢?

 

我想举一个个人的例子来说明这个问题:

 

18年我放弃几个大厂P8+ Offer选择加入了某独角兽公司担任技术VP和创新事业部总经理。上任的第一件事就是参与重构整个公司的架构,深入了解了下,我们首先把公司当时的架构画出来了,简单点说就是个大泥球架构:

 

如何规划程序员技术生涯

这家公司的数据库是单库模式,一张表就有几百个字段,简直搞死人。

 

当时公司已经惨到只要改一个功能就得测试2周的悲惨境地,线上出一个故障技术团队更是惶惶不可终日。

 

耗时2周我们才完成第一步:深入了解了这个大泥球和对应支撑的业务。

 

接下来耗时1个月,采用ddd领域设计

 

如何规划程序员技术生涯

在充分了解业务之后,基于领域模型,我们做了对业务的拆解:

 

如何规划程序员技术生涯

接下来我们最终确定了新架构的六大关键元素:

  • 前端业务模块

  • 支撑业务模块

  • 核心业务模块

  • 中台服务模块

  • 平台服务模块

  • 基础架构模块

基于领域模型的拆解,我们还确定了六大关键元素之间的并列、包含、支撑关系。

 

然后我们设计出了新的架构:

 

如何规划程序员技术生涯

以上,是我们确定的公司的新的技术架构图,紧接着团队攻坚3个月,按照架构图的设想重构了公司的技术框架。

 

重构完成后,公司的程序员们再也不用为了一个bug拔光自己的胡子了。

 

而要完成这么一个大工程,技术能力只是最底层的,更关键的就是:产品业务能力、向上管理、技术之外的软实力、资源协调能力、领导力等等。

在成为高级程序员之后,决定你技术生涯的,更重要的不再只是技术,而是各种软技能和你本身的性格。

关于以上几点,简单给点建议:

1.产品业务能力

 

程序员需要具备产品业务能力吗?尤其对一心走技术专家路线的人来说,大概率会有这个疑问。

 

我认为是需要的,因为技术本身只是工具,只有和合适的产品业务结合才能创造真正的价值。

 

这意味着理解产品业务就非常重要了,拿我在那家独角兽公司的例子来说,如果不对公司业务了如指掌,如何做好架构拆解和技术选型呢?

 

事实上,大厂的技术专家也都是业务精通者,只有这样才能真正用技术驱动业务。

 

2.技术之外的软实力

 

比如你沟通能力很强,比如你就是很会讲(甚至很会写PPT),向上管理能力很强,能够获得更多资源,把一些事情做成,这都是软实力。

 

再比如你的周报月报写的就是比别人漂亮,清楚的用数据表达了成绩,讲清楚了卡点和重点。

 

以上这些都是技术之外的软实力,可别小瞧这些,关键时刻它们能加速你的发展。

 

3.输出&贡献

 

输出换个词是贡献,就是你用技术能力、产品业务能力做出来的事情。

 

输出的大小取决于自身和环境,很多人往往重视自身却忽略环境的影响。

 

简单点说,如果你一开始就在微信团队,哪怕你就是做了一个小模块,可能也输出巨大,反之你要是在一个失败的团队,哪怕是架构师,输出也会被公司认定为非常有限。

 

成为高级程序员之后,大家要学会选择环境,这里面就是思考和选择的力量了。

 

另外还有几点技能对程序员发展比较关键,比如向上管理、领导力、沟通表达能力等。

今天就分享这么多了,程序员的职场之路并不平坦,希望我的每一个程序员读者都能在职场一马平川。

发布者:糖太宗,转载请注明出处:https://www.qztxs.com/archives/science/technology/7712

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年5月18日 下午11:58
下一篇 2022年5月19日 上午12:03

相关推荐

  • 零基础学Java第六节(面向对象二)

    本篇文章是《零基础学Java》专栏的第六篇文章,文章采用通俗易懂的文字、图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号【编程攻略】 继承 创建一个Person类 我们创建一个用于描述人的类。我们怎么抽象出一个人这个类呢?我们以不同的角度做抽象,得到的属性和行为都会有些区别。这里,我们主要从人的社会属性来抽象。为了表示性别,我们先顶一个枚...

    2022年5月22日
    1500
  • Centos 7 使用firewalld防火墙

    启动一个服务: 1 systemctl start firewalld.service 关闭一个服务: 1 systemctl stop firewalld.service 重启一个服务: 1 systemctl restart firewalld.service 显示一个服务的状态: 1 systemctl status firewalld.service...

    技术 2022年6月1日
    1000
  • crontab误删除恢复

    事故原因分析: 回忆自己操作过程中,未进行crontab的清空,网上查了下原因,并且复现了下。可能原因如下: 如果在SSH远程终端中敲下“crontab”命令之后,远程连接被一些原因(比如 糟糕的网络,程序异常)意外终止了,那么Crontab计划任务就会被操作系统所清空。听起来很不可思议,但是经过在虚拟机上的多次测试,它确确实实的发生了。测试方式为 用Sec...

    技术 2022年6月13日
    2500
  • Spring AOP实现用户操作日志功能

    我使用Spring AOP实现了用户操作日志功能 今天答辩完了,复盘了一下系统,发现还是有一些东西值得拿出来和大家分享一下。 需求分析 系统需要对用户的操作进行记录,方便未来溯源 首先想到的就是在每个方法中,去实现记录的逻辑,但是这样做肯定是不现实的,首先工作量大,其次违背了软件工程设计原则(开闭原则) 这种需求显然是对代码进行增强,首先想到的是使用 Spr...

    2022年5月22日
    3000
  • 求最大最小值,最少要进行多少次比较? | 经典面试题

    如何从n个数里找到最大值? 很容易想到,用一个循环就能搞定。  int find_max(int arr[n]){     int max = -infinite;     for(int i=0; i         if(arr[i]>max)             max=arr[i];     return max; }   这里,需要执行n...

    技术 2022年5月11日
    2800

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信