另一个角度谈谈程序员是不是青春饭

前几天部门分享,有个同事分享了并发编程模型相关的知识(其实就是多线程那一套东西),很多程序员听的呆若木鸡。 由此,并结合我这些年的做技术经历,我想了一些,不成体系,随便写写。


往前推 10 年,一个程序员写一个内存池,或者线程池,应该是家常便饭的;而 10 年后的程序员会觉得这些东西,太过底层了, 或者太过理论化了。技术在发展,程序员们变菜了吗?并不是,而是关注的点不再一样了。

10 年的跨度有点大了,我只说一下自己从上大学开始学技术、后来做技术到现在这七八年的一些感受。

在我上大学那会,学习技术主要还是靠看书,还有些人看视频教程。比如说学 C++,Java,还是找一些经典的书学习, 通常称之为经典的都是很好的技术书,我几乎看完了所有 C/C++ 经典的书。 工作写代码造轮子的现象比较明显,自己会写很多的库,测试用例啥的。

近三四年,我不用 C++ 了,用 JavaScript 写前端,Python/Go 写后端,框架也一直在变,基本上都是需要什么技术、框架,拿过来就用。 对于这些技术,我没有了解的很深入,但确实做了很多事情。造轮子的事情,基本上没干过。

为什么会有这么大的转变,除了技术在成长这种主观因素之外,很客观的因素是做技术的环境不一样了,软硬件等基础设施在不断的进步。

开源会整个技术圈的冲击太大,社区的力量太强大了。现在无论是 JavaScript 还是 Python,还是 Go,有了 Github 之后, 第三方 package 丰富且优质。需要的库拿过来直接用,几乎不用担心质量问题。 还有,在开源力量的推动下,新技术发展也很快,配套的文档和范例非常丰富,基本上不需要看书(也没有)。

而作为做技术的人,面对的东西不再一样了。曾经我们需要面对的问题是,如何去找学习资料; 而现在要面对的问题是怎么从很多的学习资料中选择最好的。

技术按照这个节奏发展,到底是不是一件好事?

从广义上来讲,当然是一件好事,编程本身逐渐接近本质,他成为一个更大众的工具,人们更需要关心的是 idea,而不是技术上怎么实现。 我记得《黑客与画家》里面有类似意思的一句话,一个好的编程语言,应该是允许程序员随意涂改的。 起初我是不明白这句话,因为在观念里我是有软硬件性能的考量,但随着硬件的发展,内存越来越大,CPU 越来越快之后, 我开始觉得这句话是有道理的,编程应该是一种简单的工具,是手段,我们应该去关心上层的东西,而不是底层的实现。

但是对个人来讲,这无疑是一件坏事,又或者说对于做技术的人是一大挑战。技术越来越普及,曾经擅长的东西,现在别人从网站搜一搜可以拿过来就用。 曾经付出的努力,除了作为茶语饭口的吹资,想象不到其他的用处。 年轻人会越来越厉害,是因为我们一开始面对的是做技术,而他们面对的则直接是做事。

而无论对于资深的程序员,还是年轻的程序员,他们都将面对的一件事是: 编程越来越不值钱了,你所擅长的东西很快就被会淘汰

倒退五年,一线的业务程序的工资是高于后台的技术人员的(运维,中间件,DBA),而现在几乎反过来了。且不说中后台理念, 随着技术组件化、产品组件化,微服务架构下,一线业务程序做的事情更是无聊的拼凑来实现产品经理所需要的功能即可, 技术难度向中后台偏向,那么中后台程序是不是会越来越吃香了呢?短期来看是的,长期来看他们好不到哪里去,只不过是工具成熟度的问题。

尽管如此,软件工程相比传统行业的工程,还是落后很多,但是长期来看会逐步趋近,无论是技术还是运营,无论身处企业大小, 最终都会沦为流水线中的一个环节,就像建筑工地的工人一样。

某种意义上,我们这一代程序员也真的就是青春饭而已。


每一代人总有每一代人的幸福和困局。

任何行业出现淘汰第一批永远是金字塔底部的人,我们要么力争上游,要么等着被淘汰。


2019-12-28 UPDATE

如果你运气好的话,恰好赶上了一个新兴技术的兴起,并且跟着他从问世到落地一同进步。比如说 DevOps,无论是是处于哪一个环节。 你可能付出了常规的努力,但一不小心就站在和行业的顶端,成为了技术专家。

那么,你很有可能在 5 年甚至更长时间内是极其吃香的(无论到那家公司),你拥有着高于别人的薪资,被领导捧在手心,顺风顺水。

但是随着技术的普及、各大公司的落地,理念被打散落实到各种岗位里,比如容器化,CI/CD,监控告警,日志收集和处理等等。 曾经你所拥有的大而全的技术,就不再那么吃香了,尤其是成熟的方案被大公司实践然后将框架开源之后。

如果你不持续的进步,持续的站在业内的前沿的话,或者转型到再进一步的领域;那你很大概率就变成了普普通通的一员。

这还是一路顺风顺水的几年,大部分人都赶不上这么好的机会。

也就是说,无论你是否赶上了行业的风口,都必须要持续进步,不然优势很快就会被缩小。

很多人会以为,我可以在这五年里晋升,走管理岗位,这确实是一条路;但其实这比你称为技术专家要更难一些。 一个千人左右的公司,中层以上的职位也就几十个。类似五六个个人的小主管,很大概率在跳槽时是不被认可的,尤其是从小公司到大公司。 而且带五六个人某种意义上只是一个项目经理的角色,并不是实际上的管理岗位。 也就是说,只有到中层(业务线负责人,总监等)的岗位才算的上是别人认可的管理岗位,这太难了。 想要晋升到中层,除了足够的技术水平和视野之外,还要面对公司的政治斗争,和一些运气成分才能上位。这是不是要比称为技术专家难多了…

这种问题不只是互联网行业,传统行业也是一样的。

我有个表哥在 4S 店修车修了八九年,从小学徒干到大师傅,后来实在干不下去了,回家转行做别的了。 原因很简单:汽车的每年更迭,架构也在一直变,以前掌握的技术,修不了新车,还是要持续学习,这并不是他不够努力。

还有网上传的一个例子,小区看门的老大爷,勤勤恳恳,大家也很喜欢他,无论多晚开车回来,都会帮你开门。直到有一天失业了。 小区门禁安了摄像头和车牌自动识别系统,比人工更准确更智能。

技术的变革总会养活一批人,然后让一批人失业。这是无论哪个行业都要面对的事情。

First created: 2019-09-27 15:48:08
Last updated: 2020-08-10 Mon 14:36
Power by Emacs 26.2 (Org mode 9.1.9)