• 不同层级的程序员对技术的不同理解
  • 发布于 2个月前
  • 237 热度
    0 评论
程序员需要不断提升自己的技术,这其实是一句正确的废话,但是,不同的公司对技术的定义是不同的,庸俗地讲,越能给出高薪的公司对技术的定义更有权威。而且,不同层次的程序员对技术的理解也有偏差,对值钱技术的错误理解,绝对会导致程序员无法拿高薪。

本文就以Java为例,说说不同层次的程序员以及不同等级的公司,对“技术好”的理解。

1 先说说还没从事Java开发工作的程序员。这批人包括在校生,或者是培训班学员,或者是从事其它工作但想转Java工作的人。
一些错误的理解包括,谁输入代码快谁技术好,谁能快速跑通代码谁技术好,或者是谁API记得多谁技术好。在一些误导的言辞下,有些初学者会认为谁能写出一个带UI界面的小游戏或小程序,谁技术好,或者是,谁能在不带任何帮助的前提下,手动写一个(或跑通一个)spring boot的项目,谁技术好。

其它一些杂七杂八的认识还有,谁背的面试题多谁技术好,谁跑通的学习项目数量多,技术好,或者是,谁跑通学习项目的业务范围广,谁技术好。但如果没有真实Java开发经验,论技术来说是有个上限,换句话说,哪怕跑通再多的学习项目,背熟更多的API,或者是刷再多的算法题,都无法突破这个上限。在这个阶段,衡量技术的标准应该是,所学的内容能确保找到工作,在此基础上,凭借学校好等因素,能找到大公司的工作。

换句话说,对初学者来说,技术体现在两个方面,首先是找到工作的本事,这更体现在面试技术上,说更直白点就是展示自己的能力方面,另一个才是技术。靠说技术展示自己行,这个本事优于技术本身。

2 有增删改查开发能力的程序员,比如是小公司程序员,接触不到框架或值钱技术。
在项目经理或老板有意无意的引导下,或者是在这部分程序员日复一日做功能性开发的前提下,这部分程序员认为的技术好,很大程度是熟悉业务,比如能快速开发功能,能快速排查问题,或者是来了功能可以快速和其它人协调。这部分人确实能给本公司产生更大的价值,但如果公司做的业务规模不大(大多数项目其实都规模不大),在跳槽时,这些关于业务的知识点其实是无法帮到程序员的。

至于带团队的技术(或者说是能力),如果公司小项目人不多,这部分的技术也不值钱,无非是熟悉业务加协调再带些项目管理工具的使用,不能说没价值,但跳槽是还是帮不到程序员。

排查项目里技术方面的bug,这倒能提升技术,不过解决业务方面的问题其实未必能提升技术。对于这部分的Java程序员来说,技术好,一般是能排查性能,数据库或组件甚至架构方面的问题,具体来说 ,能解决组件部署,项目上线,redis或kafka方面的问题,再进一步,比如能用docker,k8s等工具部署项目。

3 大厂角度对技术好的理解。
在不少大厂里,最不可替代的程序员一般是做中间件。这部分程序员可以是跨业务的,搭建个通用性框架,负责搭建组件或集群,参与系统上线,有部分的工作会和运维重叠,总之一般是和项目的各种基础设施打交道。比方说,不少互联网公司面试是会面试kafka,redis等分布式组件,或者是问秒杀限流等解决方案,但并不是背熟此类问题就一定能进大厂。因为大厂对技术的要求是,能用各种组件,集群解决问题,或者是,能用组件等搭建业务系统。具体说java,大公司层面对技术要,可以拆分如下要点。

第一,能解决因监控或其它途径报出来的性能问题,比如数据库,内存OOM,或者是cpu问题,至于业务方面的问题,默认程序员知道怎么排查怎么解决。

第二, 不是围绕组件的api,而是结合业务需求,比如限流,熔断,服务降低,高并发高可用系统,必要地引入组件以及组件集群,再进一步,这些组件或集群有问题了,要知道怎么排查。

第三,熟悉devops这套,比如service mesh,k8s,docker,pipelines这套。这块其实也可以说是运维做,但有些架构也会做这方面的事情。

第四,能让业务跑起来,同时搭建监控告警系统,从而确保系统的高可用。或者是,通过各种测试发现系统性能等方面的痛点,然后用各种措施改进。

所以吧,程序员要不断提升技术,这总没错,但更要通过不断提升技术提升自己的薪资和职业发展空间。换句话说,得知道哪些技术值钱。这块如果不清楚,就去看自己行业(比如java或python)高薪工作的要求和面试方式,这其实就是技术的提升方向。
用户评论