V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
begeekmyfriend
V2EX  ›  程序员

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

  •  6
     
  •   begeekmyfriend ·
    begeekmyfriend · 2018-01-23 23:25:49 +08:00 · 11667 次点击
    这是一个创建于 2500 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这是我的一个预言,前半句是当前事实,后半句是基于事实推断未来无可避免的事情。

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

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

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

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

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

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


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

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

    越往上业务需求越多,岗位也越多
    chenhui7373
        21
    chenhui7373  
       2018-01-24 09:13:57 +08:00 via iPhone
    底层可能还有物理
    nicevar
        22
    nicevar  
       2018-01-24 09:20:50 +08:00
    历史发展就这样,有进步有所失,计算机技术的东西实在分布太广,隔几代很多东西传承不下去,老一辈退下之后,有些技术就渐渐被人遗忘了,然后后辈们重复的造轮子,这一点在最近几年的 js 上挺明显的,一些人写的新奇东西其实以前早就有了,只不过后来的人学习过程中接触不到认为很独特
    现在的软件确实炫酷多了,不过性能和内存泄露问题就比较常见了,与十年前相比,在主流硬件配置上,现在的软件虽然易用并且设计合理,但运行体验普遍要差,因为现在软件开发普遍采用内存自动回收机制,早期的时候打 Java 口水战,内存方面一直都是喷点,后来 windows 开发也转向了 c#,mac 开始用 arc,好处就是开发速度快,问题就是运行缓慢内存泄漏严重,win vista 和 mac 10.5.7 就是分割点,进入靠硬件弥补性能的时代,特别是 mac,近几年软件内存泄漏已经不像话了,不泄个 10 来 G 内存都没人管的,所以在现在硬件条件支撑下是允许底层变差的,你看 google 自己的各种库内存泄露都不是什么大不了的事,别说第三方的应用软件了,所以 android 系统跑一段时间就跑不动了大家也习惯了,好几个 G 的内存呢,随便漏!这要是以前硬件资源有限的年代,分分钟就把系统搞趴下了,一个 xp 也就占用 100M 内存
    qiukong
        23
    qiukong  
       2018-01-24 09:20:59 +08:00
    这年头确实没啥公司注重底层,像您那几千万条数据,一般起步公司也达不到,所以从来不注重效率优化问题。
    begeekmyfriend
        24
    begeekmyfriend  
    OP
       2018-01-24 09:35:23 +08:00
    @nicevar 由俭入奢易,由奢入俭难啊
    begeekmyfriend
        25
    begeekmyfriend  
    OP
       2018-01-24 09:39:18 +08:00   ❤️ 2
    @rogerchen 我没有小视任何人啊,包括年轻人,我的意思是说,当年轻人对这些基础软件没有归属感的时候,你如何期望他们兢兢业业打好补丁?老家伙是不一样的,这些软件是他们亲手打造,自然愿意用生命来守护啊
    kyotrue
        26
    kyotrue  
       2018-01-24 09:46:25 +08:00 via Android
    因为已经够用了,多的那点特性也可以其他方式解决,一点点性能损失问题并不大。
    你要知道这是个生态系统,不是你想动就随便大动的,那么多业务在跑、那么多从业人员的培训。
    就拿大家熟悉点的 Java 来说,虽然性能令人诟病,但是用得太多了,就算有个更好用性能很好的语言也不可能在很长一段时间内替换它了,所以 CPU 直接为 Java 做优化,就是这个道理
    berretta
        27
    berretta  
       2018-01-24 09:47:25 +08:00
    你在这里说没有用,这里很多互联网行业的受益者,屁股决定脑袋
    junwuhui
        28
    junwuhui  
       2018-01-24 09:51:01 +08:00 via Android
    只不过是这个时代的底层变了,现在的底层可能主要是一些云平台
    402124773
        29
    402124773  
       2018-01-24 09:57:36 +08:00
    我个人的观点是由于经济原因决定的。
    底层工作工作机会比较少,很难去量化工作量,去展现工作上的贡献,自然会被忽视。
    工作机会少,工资不如意,已有的人才也会转向其他方向,新手不会入坑。导致恶性循环。
    毕竟国内很多年轻人都在为了房贷而奋斗。面向工资编程。
    KgM4gLtF0shViDH3
        30
    KgM4gLtF0shViDH3  
       2018-01-24 10:11:55 +08:00   ❤️ 1
    内容不说,感觉你的文笔太好了。
    wizardoz
        31
    wizardoz  
       2018-01-24 11:27:17 +08:00
    多虑了,市场决定一切。
    要是软件的质量不够用了,自然有人出钱买质量够用的软件。有人出钱就有人去搞。高质量的软件就出来了。
    rustkeyboard
        32
    rustkeyboard  
       2018-01-24 11:48:37 +08:00
    LZ 有点悲观了,要涉及到底层开发,必须是当业内目前成熟的架构已经满足不了需求的情况下才会去考虑的。比如淘宝每年的双十一高峰期,巨大的用户流量和订单需求对系统的稳定性和安全性提出的超高的要求。淘宝团队因此而对架构做出的一系列变革和创新,从"两地三中心"到"同城双活",再到最终的"异地多活"。这些过程中,绝对有对底层的深入研究、再造和创新。
    ryd994
        33
    ryd994  
       2018-01-24 11:59:34 +08:00 via Android
    底层本就很冷门,很少人学,很少岗位。但是只有基础知识最扎实的开发者才能做。硬件、算法、操作系统,都要非常了解,才敢动手。
    如果你没读过 linux 源码,那你说这话不合适。
    zhujiulin
        34
    zhujiulin  
       2018-01-24 12:02:23 +08:00
    底层并不少, 国内不知道, 反正国外年轻人基础扎实的很多
    janus77
        35
    janus77  
       2018-01-24 12:24:36 +08:00 via Android
    个人观点,做项目本来就是个工程化的东西,很多时候是需要考虑成本收益得失的,而不只是单一的做到极致。如果说单目标那是学术界的事,一旦大规模应用于工程界,必须考虑多种因素,甚至于为劣币妥协。这才是现实社会,不是纯粹理想的乌托邦
    co3site
        36
    co3site  
       2018-01-24 12:45:24 +08:00 via Android
    长远的眼光来看,这应该是个旋回。十年河东,十年河西
    ae86
        37
    ae86  
       2018-01-24 12:47:16 +08:00
    文笔不错!
    htfy96
        38
    htfy96  
       2018-01-24 12:48:37 +08:00
    infra 不好做 学了那么多东西,校招按 R&D 招和 CRUD 一个价,整体比算法低了一档,还不如速成一下 ML 当调参侠
    jejer
        39
    jejer  
       2018-01-24 13:02:00 +08:00
    有趣, 想想好像的确如此
    pezy
        40
    pezy  
       2018-01-24 13:10:36 +08:00
    杞人忧天,据我所知,那些真正奋斗在一线做底层工作的年轻人,基本和老人们保留了同样的习惯:不在互联网上瞎咋呼,基本是透明人。(但不代表他们不存在啊。。。)
    winglight2016
        41
    winglight2016  
       2018-01-24 13:26:53 +08:00
    歪个楼:破窗效应并不是定论,甚至并没有可靠的实验论证,类似恐怖谷理论这种都“仅仅”是一种理论
    fortitudeZDY
        42
    fortitudeZDY  
       2018-01-24 13:31:47 +08:00
    部分认同观点,最近在所在的领域也看到了类似的势头,比如数据中心交换机操作系统,公有云、大规模互联网公司那帮人可以自己从头写一个,过程中又不断发现需求改造,甚至可以不用 c 语言;而传统设备商则慢慢退到普通的组网需求,这样我想对那些搞传统设备研发和维护的老人,随着营收的变化以及市场的变化,应该会面临选择,我想这并非说他们不想专注,而是很可能要面临生存问题。
    firefox12
        43
    firefox12  
       2018-01-24 13:45:52 +08:00 via iPhone
    4 个字总结 工匠精神

    但是工匠要吃饭,所以要先活命。活糙点就糙点吧
    wizardforcel
        44
    wizardforcel  
       2018-01-24 14:00:30 +08:00 via Android
    老家伙们一生只钻研一个领域的做法,明显不适合这个行业了。

    既然需求决定市场,等需求多了,搞的人自然会多。

    另外底层并不难,只是搞的人少略显神秘。底层已经高度固化,几十年没发展了。一个人如果想搞,只需要复现前人的设计。只要他不笨,花一些时间总能学会。
    simpx
        45
    simpx  
       2018-01-24 14:26:48 +08:00   ❤️ 1
    底层开发在大公司里还是非常重要的,决定核心价值

    如果对系统底层技术有兴趣,可以来阿里云,我们不仅要求 bugfree,性能上也需要指令级优化

    可以内推,lingjun.zlj@alibaba-inc.com
    standin000
        46
    standin000  
       2018-01-24 16:09:15 +08:00
    参考 cobra 的维护了
    shapimai
        47
    shapimai  
       2018-01-24 16:15:59 +08:00
    在国内做架构性的 原创性的东西的人毕竟还是少 绝大部分都是拿来主义而已 体会不到
    v2lf
        48
    v2lf  
       2018-01-24 16:36:08 +08:00
    我怎么老好见到作者疑似,很是嘲讽 linus··· 每次有他的事件出现,我就看到你··· 在下面嘲讽他,骂人,脾气暴躁···看不懂···
    zhoubug
        49
    zhoubug  
       2018-01-24 16:44:51 +08:00
    老板忙着裁老码农,新码农忙着嘲笑老码农。搞基础开发只存在自己的 side project 啦~兴趣吧。 自己无法做主的项目就快进快出吧。一半生存一半生活~
    begeekmyfriend
        50
    begeekmyfriend  
    OP
       2018-01-24 17:07:29 +08:00
    @v2lf 你认错人了吧?我可是一度吹捧 Linus 的
    yagnqionggo
        51
    yagnqionggo  
       2018-01-24 17:17:35 +08:00
    万一之后量子计算机成熟了,底层的是不是要全新造一遍
    MiguelValentine
        52
    MiguelValentine  
       2018-01-24 17:22:11 +08:00
    非常同意,我有一阶段只写汇编,非工作基本是 C,三方库能不用就不用,=w =。
    ryd994
        53
    ryd994  
       2018-01-24 21:49:02 +08:00 via Android
    @pezy 并不是说底层的人透明,而是他们多少斤两,外人根本看不懂。楼主说的不赚钱,是以区区三五年的积累而言,做底层肯定没做热点技术赚。
    要看到的是,在 ml 没热之前,也有做 ml 的人,他们那时的收入,也没多夸张。
    十几年乃至几十年的老工程师,无论任何领域都很值钱。

    恕我直言,今天初学 ml 的人,做的以低端工作为主,不出几年就会被淘汰。事实上,美国今年的应届校招,已经有这样迹象了。拿到好 offer 的人,终究还是基础扎实,坚持学习的人。底层能力强的人,就算底层不赚,转其他方向也是十拿九稳。
    yqrm
        54
    yqrm  
       2018-01-24 23:13:46 +08:00
    文笔不错,但真到那时候时候会有新的“路”造出来的,就像很多高速公路都是在原来的省道旁新建的
    scriptB0y
        55
    scriptB0y  
       2018-01-25 00:08:35 +08:00
    这个情况阿西莫夫的《银河帝国》里面就有,里面讲整个宇宙实现了大部分统一,非常繁荣,成为一个大帝国。但是这繁荣之后有潜在的危机,却很少有人看出来。

    新科技是建立在以前的科技上的,科技越来越复杂,以至于没有人完全懂得其中的原理。帝国的机器已经无法维修,如果坏了只好重新生产一个新的。
    fengdra
        56
    fengdra  
       2018-01-25 08:56:44 +08:00 via Android
    每个时代都会产生新的底层,现在连 tensorflow 都被各种封装呢
    suspended
        57
    suspended  
       2018-01-25 14:33:40 +08:00
    @mason961125 不至于,裸写 WinProc 需要处理的窗口消息也没多少。再说要是看不上 MFC 的话干嘛不用 WTL 这种轻量框架?没啥性能损失。
    suspended
        58
    suspended  
       2018-01-25 14:35:48 +08:00
    @rogerchen Robert Love 都快 37 了,算不上年轻人吧。
    ptrees
        59
    ptrees  
       2018-01-25 17:09:05 +08:00
    说点我的看法,我觉得楼盖好了是要住人的,路铺好了还得有车来跑,不可能永远在造楼,铺路,IT 可能也是一样的道理吧.基础设施建好了,性能差不多够用了以后,就要关注内容的东西了.至于基础设施当然还是要有人来维护的,但可能不需要那么多人了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3302 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 12:23 · PVG 20:23 · LAX 04:23 · JFK 07:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.