美文网首页
互联网公司程序员的职责

互联网公司程序员的职责

作者: qryc | 来源:发表于2020-07-28 21:21 被阅读0次

    刚进互联网公司,很长时间的感觉就是公司不重视代码质量,现在已经在互联网做了接近十年,回头想想,不重视代码其实背后是有其发展的必然性的,但随着技术和公司商业的发展,你会发现,重视代码质量又会成本必然选择。

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

    在阿里或京东技术并不成熟的时候,各大电商比拼流量,比如阿里巴巴的双十一大促,京东的双十一,大家都是比拼谁流量大,谁没有挂;电商研发部门的考核指标就是能抗量双十一,六一八。通过这个阶段的对话来体现下:

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

    • 领导说:现在单库扛不住了,赶紧的优化成分库分表,再加个Redsi集群抗写,代码优化不着急,不出问题就行了。

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

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

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

    • 领导说:业务上线有测试;大家要有责任心,程序员必须24小时5分钟内处理各种问题,手机必须时刻关注报警短信,要随时摘掉性能不好的服务器;网络出问题,要随时切向备用机房。

    程序员的核心你会发现根本不是编程,通过部署架构来优化心性能(比如分库分表,水平扩展Redis集群),24小时随时处理程序的各种突发问题(盯监控,切换配置,摘除不可用资源),代码质量,不好意思,可能有少部分人在乎,但整体上真的没人在乎,从公司视角看下就能解释了。

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

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

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

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

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

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

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

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

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

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

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

    阶段三:程序员的价值

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

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

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

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

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

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

    职业规划

    不管你的公司处于哪个阶段,都应该重视代码 如果处于阶段3,可以选择去做基础工具开发,核心竞争力就是【代码】 如果处于阶段3,可以选择留在业务团队,你需要成为业务专家,核心竞争力就是【业务】和【代码】 如果处于阶段3,你可以换个处于阶段一的公司或团队,继续发挥【互联网架构】的价值 不管怎么样,好像都逃不出代码,【X】+【代码】 如果你想过得开心,同时你不喜欢代码,那你还是换个职业,别做程序员或架构师了 如果你想过得开心,同时你喜欢代码,那你可以只找个喜欢的【X】就可以了

    相关文章

      网友评论

          本文标题:互联网公司程序员的职责

          本文链接:https://www.haomeiwen.com/subject/jnywfktx.html