底层开发性价比越来越低,基础软件的质量将会越来越差

2018-01-23 23:25:49 +08:00
 begeekmyfriend
这是我的一个预言,前半句是当前事实,后半句是基于事实推断未来无可避免的事情。

对于年轻人而言,底层开发收获与投入比重将会越来越低。很简单,柏油路都建好了,未来将不存在什么颠覆性的基础软件产品。Windows 不说了,就拿 Linux 内核为例,近来很多人都提出构建全新的,不再基于传统 Linux 的操作系统,包括 Google 在内的一些巨头蠢蠢欲动,现在看来也是雷声大雨点小。比如之前呼声很高的什么 Fuchsia 最近也没什么声音了,就算新兴 IoT 方面,实时仍然老牌 FreeRTOS 等为主,非实时也看不到取代裁剪 Linux 的可能。新的产品很有可能毫无建树,如果年轻人真的对底层开发感兴趣,那么他们最明智的方向还是去学习 Linux,并且将他们未来几十年的职业生涯寄托在这些老牌软件上。

显然具备这样热情的年轻人是有限的,他们天生敢闯敢拼的冒险家心态决定了多数人不愿意去维护前人花了数十年,累计几千万行的作业。如果不能将老东西们推翻重来,他们宁愿去开辟新的领域,以此作为属于自己的一片天地,正巧当今的商业资本对此也是喜闻乐见,一直鼓励他们这么干。这就导致了那些愿意留下来并心甘情愿默默为传统付出年华的人们得到的报酬总是不如前人那样多——干得好了那是前辈的功劳,干不好就需要勇于承担责任,包括被 Linus 为首的老家伙们训斥。当然细细追究起来,大多数情况下,这些训斥是正确的也是应该的,但是这显示了一个先兆,那些基础软件的补丁质量在逐渐下降,以至于老人们都看不下去了。

我们不能否认先辈们在软件工程上长年累月孜孜不倦的投入,取得的功绩以及累积的高水平,但是这种优良传统正在逐渐被侵蚀。年轻人不愿意再往底层投入,不在乎那些过时的成绩,对源码细节的探索也不再充满热情,他们不愿意去做“平行世界的守护者”。这并不意味着年轻人不具有高水平,而是他们追求自我,所谓“自我实现的价值”。很不幸,这些东西与现存的软件工程有着不可调和的矛盾。年轻人意识到如果他们留下来,也不太可能取得 Linus Torvalds、Jeff Dean 这些人当初的成就,这个世界已经太拥挤了。对于留下来的人来说,对于报酬的考虑似乎更加现实与理智。

我有时候也不免想象再过十年,Linus 等开源世界的群雄从决策者退下来之后,他们留下来的庞然大物会往什么方向发展。也许这根本不需要我操心,如今编程教育日趋完善,人才的供给源源不断,整个软件产业虽不能说饱和,起码也是相当成熟了。披荆斩棘的草莽英雄多已安然退居幕后,精力旺盛的新生代们乐此不疲地开着自家小汽车在柏油路上狂飙。丰富的资产仍然需要有人修桥补路,平行世界仍然需要守护者担当大任,但是这些人未来应该不会受到太多的关注,这意味着他们的付出可能得不到期望的激励。二十年前最优秀的人才都在指针和指令上绞尽脑汁,如今新来的人可能不再关注这些细节,毕竟这些承载着成千上万小汽车的老破柏油路不属于自己的产品,他们只想解决那些头痛的 bug,尽快交付过去,有时候就难免显得急功近利。他们提交的补丁受到老家伙们种种不待见,后者痛心地斥责前者的玩世不恭,前者内心却为后者傲慢的脾气深感憋屈。于是矛盾不可避免,日益升级,爆发冲突,直到拂袖而去,熟悉的一幕幕在邮件列表中日复一日地上演,留下的是源代码中不断增加的千疮百孔。

还记得经济学里“破窗效应”,就是不良现象的放任导致更多的破坏,这在软件工程中同样存在。我以为万物都会有自己的生命周期,但对于基础设施而言,这个周期几乎就是无限的,只不过内部将会越来越破败。这固然可以归咎于管理不善维护不周等人为因素,但对于自然规律,任何软件都逃不掉因果——除非自身不再进化,或者一直到人们实在无法忍受的那一天。幸运的是,无论开源软件还是商业世界,总有替代品,不过时机未到而已。人们不必担心有朝一日自己的生活受到毁灭性打击,平行世界的守护者们将会永远驻留。

深夜搁笔。
11458 次点击
所在节点    程序员
59 条回复
privil
2018-01-23 23:35:30 +08:00
我觉得还是不对的,可能还是在部分大公司会有更多的底层工作,业务性小公司当然只能捡点边角料了,基础设施的需求还在存在的,进步还会有,举个例子,dcoker 等容器化技术带来的对网络及文件系统方面的需求带来了进步,高频交易等创造了对网络硬件设备的颠覆。
CatCode
2018-01-23 23:37:18 +08:00
不敢说这种是好是坏。
但个人感觉:大家都说不要自己造轮子,可是有些时候,自己为了实现一个特定的功能,导入了一个巨大的包,整个程序看起来就臃肿了。但自己实现,要耗费太多精力、安全性可用性又是否能保障,很困扰
linux40
2018-01-24 00:17:22 +08:00
不要一杆子打死,我就想投入底层。要是 2 月初出考研成绩,我考得不错就好了。不然的话,出来工作,底层的机会确实不多,现实如此。。。
begeekmyfriend
2018-01-24 00:30:58 +08:00
@linux40 做一个守护者很不容易,建议你先仔细考虑一下自己的衣食住行。
flyingheart
2018-01-24 00:40:30 +08:00
当旧的基础设施无法满足新时代的需求时候,才会有人去建造新的基础设施,既然 Linux 已经能够满足目前的需求,那么盲目去造一个新的轮子真的能带来什么好处吗?
IRIS GL 移植性很差,为了解决这个问题,OpenGL 出现了
用显卡可以加速科学计算程序,但是调用图形 API 来计算太不方便了,于是 CUDA 出现了
就连 C 语言也是 Ken Thompson 与 Dennis Ritchie 为了开发 Unix V3 而发明的
mason961125
2018-01-24 00:45:50 +08:00
我非常同意你说的。举个目前很现实的例子吧,由于现在竞争这么激烈,市场对产品的研发和迭代周期要求越来越短,也就出现了各种各样方便开发的技术,以 Electron 为例,确实可以对不同平台编写同样的代码达到同样的效果,即使是不同平台的特定功能,也只需要少量额外的特定代码就可以实现。诚然,时间上的花费确实少了很多,但是在使用体验上或者说性能上,就比不上用每个平台的原生 API 开发出来的了。从 Atom 到 Slack,性能问题备受诟病也不是一天两天了。要知道,在没有装配固态硬盘和高主频 CPU 的电脑上,大量的加载文件以及启动 Chromium,都是十分缓慢的,内存占用也会相当的高。但是又能怎么办呢?市场要求你如此,你要赚钱养着家里的人,有的时候不得不妥协。我认为比较理想的状态是,在研发初期,用这种类似“万金油”的技术也不是不可取,毕竟缩短了时间;但是考虑到后期的用户体验以及性能,还是要沉下心来,好好的用最好的技术,来完成整个产品。
HangoX
2018-01-24 00:45:59 +08:00
你说的 fuchsia 已经可以装到 chromebook 上了
mason961125
2018-01-24 00:49:10 +08:00
可能我以上说的还是不太够底层,但是现在写 Windows 程序的人里面,越来越少直接使用 Win32 API 的了,毕竟没有.NET 或者 Web 那一套来得快。想想当年初中啃 Win32 API 的时候,确实十分的煎熬,每个 HWND 都要通过 WndProc 来处理,那个 switch 写的人生不如死。那么再更深一步,到了操作系统级的开发,能够沉下心做的人真的更少了。但是这也是市场决定的,毕竟现在大方向是互联网,并不需要那么多人能够开发操作系统相关的,比如驱动之类的开发。
twor
2018-01-24 00:50:16 +08:00
没有人了会提高市场价格,自然再会人多
Andiry
2018-01-24 01:17:43 +08:00
底层也没有什么高大上的,比方说驱动开发除了 debug 比较麻烦以外,难度比应用程序低得多
jccg90
2018-01-24 01:32:49 +08:00
低风险低收益,在这里是说的通的。。。底层开发技术稳定风险低,一个方向可以搞很多年,都有稳定的收入。。。


上层应用开发的风险就大很多,虽然短期收入高,但是随时可能会被新人新技术替代,被替代之后收入会很不稳定
noli
2018-01-24 01:34:11 +08:00
如果你认为底层开发就是 C 语言、汇编这样的工具,那当然性价比低。
拿着铁镐铁锤建摩天大厦,那确实很难。
tyrealgray
2018-01-24 01:38:19 +08:00
很明显是需求决定将来,架子搭好了就开始用了。如果架子不够好才需要重新起一锅
rogwan
2018-01-24 07:59:57 +08:00
想想塞班系统,如果跟不上变化,分分钟被历史抛弃。当然这种变革不常发生,就像发明了火车需要铺铁轨一样,该铺的时候全世界都会发力去铺的,Linux 这些基础设施是不完善,只是目前看起来还没有那么不堪,真到了全世界都唾弃的时候,新生力量自然会选择新的轨道。对于个人而言,确实会出现付出短期看不到回报的情况,历史上这样的伟大科学家也不少,只能靠情怀和天才支撑了
seers
2018-01-24 08:29:50 +08:00
现在已经过了 30 年前野蛮发展时代了,越到后期对底层维护的人会转变成各种巨头而不是个人。
tktk
2018-01-24 08:47:48 +08:00
我觉得并不会。
DiamondY
2018-01-24 08:53:58 +08:00
虽然有理有据,但这种想法倒还是悲观了些许。只要人类不灭,技术就不会止步,至于方向往哪边走就难以预料了
scipio
2018-01-24 08:56:48 +08:00
我倒是觉得: 商用基础软件将无利可图,最终基础软件都将走向开源社区化运营的模式。
rogerchen
2018-01-24 09:00:29 +08:00
这是历史发展的必然啊。

学术界和工业界的重心早就不在操作系统上了,这一块已经没有什么大鱼可以钓了,还用那么多人力去搞就是浪费。这么多年大家已经把各类 tradeoff 想得很清楚了,很多问题也就是内核编译的一个开关。做 OS 的热点早就已经迁移到分布式系统上了。以前单机硬件性能一路提升,业务量也就那样,没钱上小型机,有钱上大型机。现在单机硬件性能发展平稳,互联网业务又那么大,能线性扩展的分布式系统明显是符合历史进程的产物。
话说回来,哪个大公司没有搞内核,TCP 栈的团队,几十万台机器上提 5% 的性能能省多少钱人家算得很清楚,每年四大毕业那么多博士难道都回家待业。楼主也就知道 Linus, Jeff Dean。Robert Love 不是年轻人么?不在这个圈子里就随意臧否人物,小视天下英雄,还是算了吧。
zjsxwc
2018-01-24 09:06:43 +08:00
难道不是因为需求越来越少、底层开发提供的岗位稀少吗?应届生找不到底层相关工作还能怎样,这个行业就是这样。

越往上业务需求越多,岗位也越多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/425391

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX