写点什么

互联网公司程序员的竞争力

用户头像
sdutyq
关注
发布于: 2021 年 03 月 18 日

进互联网公司很长时间的感觉就是,公司更重视部署架构,对代码质量缺乏重视。现在已经在互联网做了接近十年。回过头来看,不重视代码质量背后是有其阶段发展的必然性的。但随着部署架构的完善和公司商业模式的沉淀发展,逐渐,重视代码质量又会称为必然选择的方向,下面我们一起来回顾整个过程,从中我们可以分析下,到底什么才是互联网程序员的核心竞争力。

 

阶段一:重部署架构,重手工运维,轻代码

在阿里或京东技术并不成熟的时候,各大电商比拼流量。比如阿里的双十一大促,京东的的 618。大家都是比拼谁流量大,谁系统在大促中平稳,没有出问题。电商研发部门的考核指标就是能抗量双十一,618。下面的对话经常在程序员和 Leader 中发生:

•          程序员说:这段代码写的不够优秀,我们优化下?

•          领导说:现在单库扛不住了,赶紧优化成分库分表,再加个 Redsi 集群抗写,代码优化不着急,我们先扛过下周的大促吧。

•          程序员说:我觉得这些业务代码,可以这样这样改造下,会更好维护。

•          领导说:赶紧着,马上双十一了,快对系统压测下,看看服务器,数据库和 Redis 要不要扩容。系统没事别动,尽量少改,改就有风险。

•          程序员说:我应该写单元测试,变动业务的时候出 Bug 更小。

•          领导说:业务上线有测试人员保证,积压的需求还没开发完呢。

•          程序员心想:我工作做完是不是可以下班了。

•          领导期望:大家要有责任心,程序员必须 24 小时待命,随时处理各种问题。手机必须时刻关注报警短信,要随时摘掉性能不好的服务器。网络出问题,要随时切向备用机房。

程序员的核心职责并不是编程质量,而是通过部署架构来优化心性能(比如分库分表,水平扩展 Redis 集群);24 小时随时处理程序的各种突发问题(盯监控,切换配置,摘除不可用资源);代码质量可能有少部分人在乎,但从上到下,在乎的人并不多,从公司商业视角看下就能解释了。

公司商业视角:各种资本都在盯着能不能撑过双十一,这堆程序员不管他们怎么做的,一定要搞定系统不挂!一层层管理者都是系统挂了直接走人!不难理解传递到程序员这就演变成了这个状况。

 

阶段二:沉淀基础服务与运维自动化

随着时间推移,群体(公司和程序员)会发现第一阶段的监控和容灾手工处理其实可以自动化的。高并发的方案是可以沉淀为很多基础服务产品的,并且形成的基础服务和监控产品是可以对外商业赋能的。比如阿里或亚马逊提供虚拟服务器服务后,也会把自身高并发业务沉淀出来的消息服务,缓存服务,数据库服务对外卖钱。这样就形成了一个良性循环,内部高并发场景孵化出稳定的商业产品,商业产品卖钱外部客户(广告就是,我们的产品在阿里的双十都能扛过去,你这点流量就放心用吧)。有盈利后,基础服务团队就可以招兵买马,基础服务产品就会越来越完善。基础服务产品的完善也会让阿里的电子商务系统更完善,这个时候你发现原来的程序员还能做什么呢?原来哪些核心工作都有平台产品来实现了。

•          程序员说:我能加班,有责任心,能 24 小时摘除坏的服务器。

•          公司说:不好意思,现在服务化治理系统会自动摘除性能不好的服务器。

•          程序员说:我能开发基于 Redis 和数据库分库分表的大并发程序。

•          公司说:不好意思,现在有成熟的数据产品,只需要新人按照成熟的方案编写少量代码就可以支持高并发。

•          程序员说:我可以备战双十一,加班半夜去压测系统的瓶颈。

•          公司说:不好意思,现在压测系统定期跑指定好的脚本,会自动生成压测报告,只需要几个人来维护脚本就行。

到了这个阶段,如果一个原来需要 30 人的团队,如果达到同样的效果,现在需要 5 个人左右就够了。

 公司商业视角:这批程序员薪水这么贵,能不能少点人。咱们公司的系统这么牛!能抗双十一,经过流量检验的产品很有卖点,云服务是个巨大的市场。最好把这里边的能力做成产品卖钱。这样可以卖云服务器,云数据库,云缓存,云消息系统。

 

思考:程序员的价值与竞争力

这个时候,作为互联网程序员的你什么才是你最核心的竞争力呢?

前面你熟练操作各种监控工具和预案,不好意思,这些是运维工具做的。

前面你了解各种互联网架构,并能实现,不好意思,现在成熟方案+几行代码就搞定了。

现在只剩下业务代码的书写了,顾名思义,重要的是「业务」+「代码」。

你会发现原来所谓的互联网核心架构其实并没有想象那么重要。你说,那我去做运维工具或基础技术平台?那你会发现代码更重要了,因为互联网基础技术平台的「业务」+「代码」中的「业务」更技术化,其实是「互联网架构技术」+「代码」了,架构知识作为需求出现了,并且这个需求相对稳定,所以更突出了「代码」的比重了。

无论作为程序员或架构师,你会发现最终最核心的还是如何写好代码,绕了一圈,你会回到起点:如何命名变量?如何 if-else?如何组织代码块?如何抽取方法等基础问题才是你面对的本质问题。

 

职业规划

不管你的公司处于哪个阶段,都应该重视代码。

·      如果处于阶段三,可以选择去做基础工具开发,核心竞争力就是「代码」 。

·      如果处于阶段三,可以选择留在业务团队,你需要成为业务专家,核心竞争力就是「业务」和「代码」。

·       如果处于阶段三,你可以换个处于阶段一的公司或团队,继续发挥「互联网架构」的价值 ,最终新的公司还是会发展到阶段三,而且阶段一很辛苦。

不管怎么样,逃不出代码,也就是最终都是「代码」+「X」 。

·      如果你想过得开心,同时你不喜欢代码,那你还是换个职业,别做程序员或架构师了。

·      如果你想过得开心,同时你喜欢代码,那你可以只找个喜欢的「X」就可以了。


发布于: 2021 年 03 月 18 日阅读数: 10
用户头像

sdutyq

关注

还未添加个人签名 2019.10.15 加入

还未添加个人简介

评论

发布
暂无评论
互联网公司程序员的竞争力