中国的程序员群体是否已经过多了?一个从业十年老程序员的深度观察
这个问题我思考了很久,因为作为一个在IT行业摸爬滚打了近十年的老程序员,我亲身经历了这个行业从火热到冷静的完整过程。从24岁在厦门某马做嵌入式开发时的意气风发,到27岁在世界500强外企做汽车电子时的技术沉淀,再到28岁开始自媒体创业,30岁赚到第一个百万——这十年让我对中国程序员群体的现状有了深刻而复杂的认识。
说实话,每次看到网上关于"程序员是否过多"的讨论,我的心情都很复杂。一方面,我确实感受到了这个行业竞争的激烈程度在不断加剧;另一方面,我也看到了这个行业内部巨大的分化和差异。今天我想用最真实的经历和观察,跟大家深入分析这个问题。
一、从我的亲身经历看行业变化:十年见证的冰火两重天
让我先从我自己的经历说起。2014年,我刚从机械专业毕业,阴差阳错地进入了IT行业。那时候的情况和现在完全不同——程序员是一个相对稀缺的职业,只要会写代码,基本不愁找工作。
我记得我在厦门某马面试的时候,HR看到我是机械专业出身,但自学了单片机开发,立马就给了我offer。当时的薪资虽然不高,但相对于其他行业已经很有竞争力了。那个时候,我们这些程序员还有一种"天选之子"的感觉,觉得自己掌握了这个时代最重要的技能。
但是,短短几年后,情况就发生了翻天覆地的变化。当我在2019年开始做自媒体时,我接触到了大量的程序员朋友,发现这个行业已经变得完全不同了。
首先是人员数量的爆发式增长。我记得2015年的时候,我们公司招聘一个嵌入式工程师,能收到的简历大概是50份左右,其中真正有经验的可能只有10份。但到了2020年,同样的岗位能收到300份简历,而且其中很多人的技术水平都不错。
更直观的感受是各种培训机构的兴起。我刚入行的时候,学编程主要靠自学或者大学的计算机课程。但现在,各种编程培训机构遍地开花,从线下的传统培训班到线上的视频课程,从几千元的短期培训到几万元的长期培训,应有尽有。
我有个朋友在某知名培训机构当讲师,他跟我说,他们机构每年能培养出数千名程序员,而且这还只是全国众多培训机构中的一家。这些数字让我震惊——如果每家培训机构都能培养出这么多程序员,那全国一年新增的程序员数量得有多少?
我还观察到一个现象:程序员的"门槛"在不断降低。以前,做程序员需要有比较强的数学基础,需要对计算机原理有深入的理解。但现在,很多培训机构声称"零基础三个月成为程序员",这在以前是不可想象的。
我并不是说这种变化不好,实际上,编程工具的进步、开发框架的成熟、学习资源的丰富,确实降低了编程的门槛。但这也意味着,程序员这个职业的稀缺性在下降。
另一个显著的变化是就业竞争的激烈程度。我在2018年的时候帮朋友内推过一个Java开发的岗位,当时这个岗位的要求是2-3年经验,薪资15-20K。我朋友告诉我,他们收到了800多份简历,最终面试了50多个人,竞争激烈程度让人咋舌。
更让我印象深刻的是,这800多份简历中,有很多人的背景都很不错:985、211毕业的不少,有大厂经验的也不少,甚至还有一些有海外工作经验的。这让我意识到,程序员这个职业已经不再是"稀缺资源",而是变成了一个高度竞争的领域。
我也观察到了薪资增长的放缓。我刚入行的时候,程序员的薪资几乎每年都在涨,而且涨幅很大。我自己从2014年的月薪5K,到2017年的月薪25K,三年时间薪资涨了5倍。但近几年,我发现程序员的薪资增长明显放缓了,很多人甚至出现了薪资倒挂的现象。
我有个朋友,2019年从某大厂离职时月薪30K,找了半年工作,最终只能接受月薪25K的offer。他跟我说:“现在的市场太残酷了,我这种有5年经验的都不好找工作,更别说刚毕业的了。”
二、数据说话:程序员群体的真实规模
为了更客观地分析这个问题,我花了很多时间收集和分析相关数据。这些数据让我对程序员群体的现状有了更清晰的认识。
根据我查阅的各种行业报告和统计数据,中国的程序员数量在过去十年确实经历了爆发式增长。2010年左右,中国的程序员数量大约是200万人,但到了2020年,这个数字已经超过了1000万人。十年时间,数量增长了5倍!
这个增长速度是惊人的。要知道,美国作为IT产业最发达的国家,程序员总数也就400万人左右。中国用十年时间,程序员数量就达到了美国的两倍多。
更具体地看,每年新增的程序员数量也在不断增加。据我了解,2015年全国计算机相关专业的毕业生大约是50万人,但到了2020年,这个数字已经超过了100万人。再加上各种培训机构培养的程序员,每年新增的程序员数量可能达到150万人以上。
这个数字意味着什么?意味着平均每天有超过4000人加入程序员队伍。这个增长速度,即使是在快速发展的IT行业,也是难以完全消化的。
我也注意到了一个有趣的现象:程序员的地域分布越来越广泛。以前,程序员主要集中在北上广深等一线城市,但现在二线、三线城市的程序员数量也在快速增长。
我自己就是一个例子。我现在生活在一个二线城市,但我发现这里的程序员数量比我想象的要多得多。我经常参加本地的技术聚会,每次都能遇到很多同行。这在十年前是不可想象的。
但是,程序员数量的增长并不意味着都是"过多"。我们还需要看需求端的情况。
从需求端来看,中国的数字化转型确实创造了大量的IT岗位。几乎每个企业都在进行数字化转型,都需要程序员来开发和维护各种系统。电子商务、移动支付、在线教育、远程办公等新兴行业的发展,也创造了大量的程序员需求。
但是,我观察到的一个问题是,需求的增长速度明显低于供给的增长速度。特别是在2019年以后,很多企业开始控制成本,减少了对程序员的需求。同时,很多企业开始更加注重程序员的质量而不是数量。
我有个朋友在某大型互联网公司做技术总监,他跟我说:“我们现在招聘程序员的标准比以前高了很多。以前可能只要会写代码就行,现在不仅要会写代码,还要有良好的工程素养、沟通能力、学习能力等等。”
这种变化反映了一个重要趋势:程序员这个职业正在从"量"的竞争转向"质"的竞争。
三、质量与数量的矛盾:不是所有程序员都是"程序员"
在讨论程序员是否过多的问题时,我认为最重要的一个观点是:不是所有会写代码的人都是合格的程序员。这个行业存在着巨大的质量差异,而这种差异正在成为就业市场的主要分化因素。
我想用我在自媒体创业过程中接触到的案例来说明这个问题。我经常收到一些粉丝的求助,他们大多是刚入行或者想要转行的程序员。通过与他们的交流,我发现了一个严重的问题:很多人虽然有了"程序员"的头衔,但实际的技能水平和工程素养还远远达不到行业要求。
我记得有一个粉丝,他在某培训机构学了四个月的Java开发,然后就投简历找工作。我看了他的简历,项目经验写得很丰富,技术栈也很全面。但当我深入了解他的实际水平时,发现他只是会照着教程敲代码,对Java的基本概念都理解不透彻,更别说独立解决复杂问题了。
这样的例子并不少见。我估计,在目前的1000万程序员中,真正具备独立开发能力、能够解决复杂技术问题的程序员可能只有30-40%。剩下的60-70%,要么是刚入行还在学习阶段的新人,要么是技能水平有限的"代码搬运工"。
这种现象的出现,我认为有几个原因:
首先是培训市场的浮躁。为了吸引学员,很多培训机构都会夸大培训效果,声称"零基础三个月成为程序员"。但实际上,成为一名合格的程序员需要的不仅仅是掌握某种编程语言的语法,更需要理解计算机科学的基本原理、掌握软件工程的方法论、具备解决问题的思维能力等等。这些能力的培养,绝不是三个月就能完成的。
其次是学习者的急功近利心态。很多人看到程序员的高薪,就想要快速转行。他们往往只关注表面的技术技能,而忽视了基础知识和思维能力的培养。这样培养出来的程序员,虽然能够完成一些简单的编码工作,但面对复杂的技术问题时就会束手无策。
第三是行业发展的不均衡。中国的IT行业发展太快了,很多公司为了快速扩张,降低了对程序员的要求。这在一定程度上掩盖了程序员质量不高的问题。但随着行业的成熟,这种低标准的用人模式已经难以为继。
我在外企工作的经历让我对这个问题有更深的感触。我们公司对程序员的要求非常高,不仅要有扎实的技术功底,还要有良好的英语能力、沟通能力、文档写作能力等等。在这样的标准下,我们招聘时发现,真正符合要求的候选人其实并不多。
我记得有一次,我们要招聘一个嵌入式软件工程师,要求有3年以上相关经验。我们收到了200多份简历,但经过筛选,只有20个人进入面试环节。在面试中,我们发现很多人虽然有3年的工作经验,但对嵌入式系统的理解还停留在表面,无法独立设计和实现复杂的系统。
最终,我们花了3个月时间,才找到一个真正符合要求的候选人。这个经历让我意识到,高质量的程序员其实是稀缺的,而低质量的程序员确实是过多的。
这种质量差异也反映在薪资水平上。我观察到,优秀的程序员薪资还在持续上涨,而平庸的程序员薪资则在下降。这种"马太效应"在程序员群体中表现得越来越明显。
我有个朋友,他是一个资深的架构师,技术能力很强。即使在2019年"寒冬"时期,他还是很容易找到高薪工作。但同时,我也知道很多技术水平一般的程序员,在那个时期找工作非常困难。
这种现象说明了一个重要问题:程序员市场正在从"卖方市场"转向"买方市场"。以前,只要会写代码就能找到工作;现在,只有真正有实力的程序员才能获得好的机会。
四、细分领域的冰火两重天
在讨论程序员是否过多时,我们不能一概而论。不同的技术领域、不同的专业方向,情况是完全不同的。我通过这些年的观察,发现了一个明显的趋势:一些领域确实人才过多,而另一些领域却人才稀缺。
让我从我最熟悉的嵌入式开发领域说起。我在这个领域工作了7年,对其发展变化有深入的了解。相比于前端、后端等热门领域,嵌入式开发的人才数量增长相对缓慢。
这主要是因为嵌入式开发的门槛比较高。它不仅需要软件开发能力,还需要硬件知识、系统知识、领域知识等等。而且,嵌入式开发往往涉及到具体的硬件平台,学习成本比较高,不像Web开发那样容易上手。
我记得我在外企工作的时候,我们经常面临招聘困难的问题。虽然市场上有很多程序员,但真正懂嵌入式开发的人却不多。特别是那些既懂软件又懂硬件的复合型人才,更是稀缺。
我有个朋友在某汽车电子公司做HR,她跟我说:“我们一个嵌入式工程师的岗位,往往要招聘3-6个月才能找到合适的人。而且找到的人,还需要较长时间的培养才能独立工作。”
这种情况在人工智能、大数据、区块链等新兴技术领域也存在。虽然这些领域很热门,但真正有深度技术能力的人才还是很稀缺的。
我在做自媒体的过程中,接触了很多做AI的程序员。我发现,市场上确实有很多声称会AI的程序员,但大多数人只是会用一些开源框架,对AI的基本原理和算法并不深入理解。真正能够独立设计和实现AI系统的人才,数量并不多。
我有个朋友在某AI独角兽公司做算法工程师,他跟我说:“我们公司招聘AI算法工程师,要求有深度学习背景,能够独立设计和实现算法。这样的人才真的很难找,我们经常开出很高的薪资都招不到合适的人。”
相比之下,一些传统的开发领域确实存在人才过多的问题。特别是Web前端、Java后端、移动开发等领域,由于门槛相对较低,培训机构又大量输送人才,导致供大于求的局面。
我观察到,这些领域的初级程序员竞争非常激烈。很多刚毕业的计算机专业学生,或者培训机构出来的学员,都会选择这些热门方向。但市场上的初级岗位是有限的,这就导致了激烈的竞争。
我有个朋友在某互联网公司做前端Leader,他跟我说:“我们招聘前端开发实习生,能收到上千份简历。但这些简历大多千篇一律,都是做过几个类似的项目,技术栈也都差不多。要从中选出真正有潜力的人,非常困难。”
这种现象反映了一个问题:很多人选择技术方向时,往往是盲目跟风,而不是基于自己的兴趣和能力。他们看到某个技术热门,就一窝蜂地去学,导致某些领域人才过多,而另一些领域人才稀缺。
我还观察到一个有趣的现象:企业级软件开发的人才相对稀缺。虽然市场上有很多程序员,但真正有企业级开发经验的人并不多。
企业级开发不同于个人项目或者简单的Web应用,它需要考虑系统的可扩展性、可维护性、安全性、性能等多个方面。而且,企业级开发往往涉及复杂的业务逻辑和严格的质量要求。
我在外企工作的时候,深刻感受到了这种差异。我们的项目不仅要求功能正确,还要求代码质量高、文档完善、测试充分。这种要求下,很多看起来技术不错的程序员也会感到吃力。
我有个朋友在某大型企业做技术负责人,他跟我说:“我们招聘有企业级开发经验的程序员,发现符合要求的人不多。很多人虽然有多年开发经验,但都是在小公司做一些简单的项目,对企业级开发的理解不深。”
这种情况说明,程序员市场的结构性矛盾比较突出。一方面,某些基础技能的程序员确实过多;另一方面,某些高级技能的程序员却很稀缺。
五、地域差异:一线城市饱和,二三线城市机会涌现
程序员群体的地域分布也是一个值得关注的问题。我通过这些年的观察,发现了一个有趣的现象:一线城市的程序员确实已经趋于饱和,但二三线城市的程序员需求还在快速增长。
我自己就是这种地域转移的亲历者。我在一线城市工作了几年后,选择回到二线城市发展。这个选择让我对不同城市的程序员市场有了深入的了解。
在一线城市,特别是北上广深,程序员的密度确实很高。我记得我在深圳工作的时候,随便参加一个技术聚会,都能遇到几十个程序员。我住的小区里,也有很多程序员。这种高密度的程序员分布,一方面促进了技术交流和创新,另一方面也加剧了竞争。
我有个朋友在北京某大厂工作,他跟我说:“在北京,程序员真的太多了。我们公司楼下的咖啡厅,随便坐一桌,都能听到有人在讨论技术问题。这种环境虽然有利于学习,但竞争压力也很大。”
一线城市程序员的高密度,也导致了一些问题。首先是住房成本的上升。程序员虽然收入相对较高,但面对一线城市的高房价,生活压力还是很大。其次是工作强度的增加。在激烈的竞争环境下,很多公司都要求程序员加班,工作强度很高。
我在深圳工作的时候,经常要加班到晚上10点多。虽然收入不错,但生活质量并不高。我经常想,这样的生活真的是我想要的吗?
相比之下,二三线城市的情况就不同了。我现在生活的这个二线城市,程序员的数量虽然在增长,但还远没有达到饱和的程度。
我观察到,很多传统企业正在进行数字化转型,需要大量的程序员。但这些企业往往找不到合适的人才,因为本地的程序员数量和质量都还不够。
我有个朋友在本地的一家制造业公司做IT总监,他跟我说:“我们公司要做数字化转型,需要招聘很多程序员。但在本地很难找到合适的人,我们经常要去一线城市招聘,成本很高。”
这种情况为二三线城市的程序员提供了很好的机会。我发现,在二三线城市,有经验的程序员很受欢迎,薪资水平也在快速上升。
我自己就是这种机会的受益者。我在二线城市创业,发现这里的技术服务需求很大,但供给相对不足。我利用自己的技术背景和一线城市的工作经验,很快就在本地建立了自己的业务。
我还观察到,很多一线城市的程序员开始向二三线城市转移。这种转移的原因主要有几个:
首先是生活成本的考虑。二三线城市的生活成本相对较低,同样的收入可以获得更好的生活质量。
其次是工作压力的考虑。二三线城市的工作节奏相对较慢,加班情况也不如一线城市严重。
第三是发展机会的考虑。在二三线城市,有经验的程序员相对稀缺,更容易获得好的发展机会。
我有个朋友,在北京某大厂工作了5年,后来选择回到家乡的二线城市发展。他跟我说:“在北京,我只是一个普通的程序员,但在家乡,我很快就被提升为技术负责人。虽然薪资没有北京高,但考虑到生活成本和发展机会,我觉得这个选择是对的。”
这种地域转移的趋势,我认为会持续下去。随着国家对中西部地区发展的支持,以及远程工作模式的普及,程序员的地域分布会越来越均衡。
但是,我也注意到一个问题:二三线城市的程序员虽然机会多,但技术环境相对较差。缺乏技术交流的氛围,缺乏学习的机会,这可能会影响程序员的技术成长。
我在二线城市生活了几年,深刻感受到了这种差异。这里的技术聚会很少,技术讨论的氛围也不浓厚。很多程序员都是"单打独斗",缺乏与同行交流的机会。
为了解决这个问题,我开始在本地组织技术分享活动,建立程序员交流群。我发现,本地的程序员对这种交流机会非常渴望。每次活动都有很多人参加,大家都很积极地分享和讨论。
我认为,随着二三线城市程序员群体的扩大,这种技术交流的环境会逐步改善。而且,互联网的发展也为程序员提供了更多的学习和交流机会,地域的限制正在逐步减少。
六、AI时代的挑战:程序员的未来在哪里?
在讨论程序员是否过多的问题时,我们不能忽视一个重要的变化:AI技术的快速发展。这种变化不仅影响着程序员的工作方式,也影响着程序员的数量需求。
我在最近一年多的时间里,深度使用了ChatGPT等AI工具,对AI对程序员工作的影响有了直观的感受。我发现,AI确实能够在某些方面提高程序员的工作效率,但同时也带来了新的挑战。
首先,AI确实能够帮助程序员完成一些重复性的工作。比如,我经常用ChatGPT来生成一些基础的代码模板,或者帮助我debug一些简单的问题。这些工作以前需要我花费大量时间,现在AI可以在几分钟内完成。
我有个朋友,他是一个前端开发工程师,最近开始使用GitHub Copilot等AI编程助手。他跟我说:“这些工具确实很有用,能够大大提高我的编码效率。一些常见的代码模式,AI都能自动生成,我只需要稍微调整一下就行。”
这种效率的提升,可能会减少对初级程序员的需求。如果AI能够帮助一个高级程序员完成两个人的工作,那么企业可能就不需要雇佣那么多程序员了。
但是,我也发现,AI的能力是有限的。它能够处理一些标准化的、重复性的工作,但对于复杂的、需要创新思维的工作,AI还是无能为力的。
我在使用ChatGPT的过程中,发现它生成的代码虽然语法正确,但往往缺乏深度的思考。它不能理解复杂的业务逻辑,不能处理特殊的技术约束,不能进行系统性的架构设计。
我记得有一次,我让ChatGPT帮我设计一个嵌入式系统的架构,它给出了一个看似合理的方案。但当我深入分析时,发现这个方案有很多问题:没有考虑到硬件的限制,没有考虑到实时性的要求,没有考虑到安全性的问题等等。
这个经历让我认识到,AI虽然能够提高效率,但不能替代程序员的专业判断和创新能力。特别是对于那些需要深度技术能力的岗位,AI的影响可能是有限的。
我在做自媒体的过程中,也观察到了程序员对AI的不同态度。有些人很恐慌,担心AI会取代自己的工作;有些人很乐观,认为AI只是工具,会让自己的工作更有价值。
我个人的观点是,AI会改变程序员的工作方式,但不会完全替代程序员。它会淘汰一些低价值的工作,但也会创造一些新的工作机会。
比如,随着AI工具的普及,会需要更多的AI工程师、AI产品经理、AI训练师等新的职业。这些职业需要既懂技术又懂AI的复合型人才。
我还认为,AI的发展会加速程序员行业的分化。那些能够掌握AI工具、具备复合技能的程序员,会获得更多的机会和更高的薪资。而那些只会简单编码的程序员,可能会面临更大的竞争压力。
这种变化对程序员群体数量的影响是复杂的。一方面,AI可能会减少对某些类型程序员的需求;另一方面,AI也可能会创造新的需求。
我认为,关键是程序员要适应这种变化,不断提升自己的技能和价值。那些能够与AI协作、利用AI提高效率的程序员,会在未来的竞争中占据优势。
我自己也在积极学习和使用AI工具,探索它们在我的工作中的应用。我发现,AI确实能够帮助我提高效率,但更重要的是,它让我有更多时间专注于那些需要创造性思维的工作。
我相信,在AI时代,程序员的价值不在于会写多少行代码,而在于能否解决复杂的问题,能否创造有价值的产品,能否推动技术的创新。这些能力,是AI暂时无法替代的。
七、我的观点:结构性过剩,质量性稀缺
经过这么多年的观察和思考,我对"中国程序员是否过多"这个问题有了自己的答案:结构性过剩,质量性稀缺。
什么意思呢?就是说,某些类型的程序员确实过多了,但某些类型的程序员却很稀缺。
具体来说,我认为以下几类程序员是过多的:
-
基础技能程序员:只会基本的编程语言,缺乏深度技术能力的程序员。这类程序员主要来自于各种培训机构,虽然数量很多,但技术含量不高。
-
单一技能程序员:只掌握某一种技术,缺乏综合能力的程序员。比如,只会Java但不懂系统设计,只会前端但不懂后端的程序员。
-
低质量程序员:虽然有一定的工作经验,但技术水平和工程素养都比较低的程序员。这类程序员往往只能完成简单的编码工作,无法承担复杂的技术任务。
而以下几类程序员是稀缺的:
-
高级技术专家:在某个技术领域有深入研究和丰富经验的程序员。比如,资深的架构师、算法专家、安全专家等。
-
复合型人才:既懂技术又懂业务,既能编码又能沟通的程序员。这类程序员能够在技术和业务之间架起桥梁。
-
新兴技术人才:掌握前沿技术的程序员。比如,AI、区块链、量子计算等新兴技术的专家。
-
国际化人才:具备国际视野和跨文化沟通能力的程序员。这类程序员在全球化的技术环境中很受欢迎。
这种结构性的供需不匹配,是当前程序员就业市场面临的主要问题。
我在做自媒体的过程中,经常收到两种截然不同的反馈:
一种是找不到工作的程序员,他们抱怨市场竞争太激烈,很难找到合适的工作。
另一种是找不到人才的企业,他们抱怨市场上虽然有很多程序员,但真正符合要求的人才很少。
这种矛盾的现象,恰恰说明了程序员市场的结构性问题。
我认为,解决这个问题的关键在于提高程序员的整体质量。我们需要:
-
改善教育质量:提高计算机教育的质量,注重基础理论和实践能力的培养。
-
规范培训市场:整顿培训机构的虚假宣传,建立更加科学和实用的培训体系。
-
鼓励终身学习:建立程序员的终身学习机制,帮助他们持续提升技能。
-
完善评价体系:建立更加科学和公正的程序员评价体系,让优秀的程序员得到认可。
我也想给正在从事程序员工作或者想要从事程序员工作的朋友们一些建议:
-
注重基础能力的培养:不要只关注表面的技术技能,要注重计算机科学基础、算法数据结构、系统设计等基础能力的培养。
-
培养复合型能力:除了技术能力,还要培养沟通能力、业务理解能力、项目管理能力等复合型能力。
-
持续学习新技术:技术发展很快,要保持学习的习惯,及时掌握新的技术和工具。
-
选择合适的发展方向:不要盲目跟风,要根据自己的兴趣和能力选择合适的技术方向。
-
建立个人品牌:通过写博客、参与开源项目、技术分享等方式,建立自己的技术品牌。
最后,我想说的是,程序员这个职业虽然面临着一些挑战,但仍然是一个充满机遇的职业。关键是要认清现状,找准定位,持续提升自己的价值。
我自己就是一个例子。我从一个普通的程序员,通过不断学习和实践,最终实现了创业成功。这个过程虽然充满挑战,但也很有成就感。
我相信,只要我们能够适应时代的变化,不断提升自己的能力,就一定能够在这个充满变化的行业中找到属于自己的位置。
程序员的未来,不在于数量的多少,而在于质量的高低。让我们一起努力,成为那些稀缺的、有价值的程序员吧!
另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。
有收获?希望老铁们来个三连击,给更多的人看到这篇文章
推荐阅读:
欢迎关注我的博客:良许嵌入式教程网,满满都是干货!
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章