6

软件产业的夕阳?

 3 years ago
source link: http://mingplusplus.com/other/2016/07/13/sunset/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Zhming

我从很久以前就发现,软件业在自己消灭自己。 今天和好友有了一场简短的聊天,更让我坚定了这个观点。 若要用一种形状来形容软件业,我会用“倒金字塔”来形容。 从软件业的发展史来看,最开始只有很少人有机会能开发软件,也就是那些在卡片上打孔的“先祖程序员”, 就像“倒金字塔”的底部,空间小,容纳不了太多人。 在发展了数十年后,随着技术的发展,通用平台家用PC的普及,开发者的数量大大增加,可供开发的内容也变得五花八门。 先有了各式各样的语言,多种语言用催生各种相应的生态,后来有了互联网,有了各种网站,传统工业开始转向数字化。 在这个阶段,就仿佛很多人住进了“倒金字塔”的中部,而且大家越往上走,发现空间越大。

那么未来是如何的?

在谈未来前,在这里有必要强调一个重要的行业特性,即开发者是倾向于像塔顶走的。 在现实意义上,也就是说开发者更倾向于做应用层的开发,与业务逻辑有更紧密连接。 这种现象一方面是来源于底层开发者培养困难,另一方面也来源于底层技术迅速成熟。 一个简单的例子,现在每个人的设备上都跑着操作系统,然而在这个星球上懂得如何开发一个操作系统的人,估计是屈指可数的。 操作系统的技术,不论是国内国外,都是极少部分人所掌握的技能。 另一个例子就是编译器,虽说世上程序语言各式各样,排除那些host language和解释型语言,像Lua,Clojure,真正的编译型语言并不多。 在这小小的编译语言合集里,有些语言的开发者是同一人,这意味着能掌握核心编译器优化的能力的人,是少之更少。

由于以上的特性,未来是不乐观的,随着底层技术的成熟,顶层开发者的生存空间将会越来越小。 操作系统,个位数的存在,每个都能稳定运行30年。 编译器,个位数的存在,这辈子都未必能出次bug。 服务器软件,几十年都只有两大开源品牌在斗争。 数据库,浏览器,十个手指头就数完了。 简而言之,就是基础设施类的软件开发已经进入了成熟阶段,由蓝海变成了红海。 诚然,软件行业是在变迁的,不过哪怕变迁巨大,涉及核心的开发者群体却非常有限。 拿HTML5的普及作例子,实际上HTML5的普及,对大部分包括我在内的开发者而言,仅仅只是玩具变高级了一点。

近年PaaS,IaaS的发展,更是加剧了程序员往塔顶爬的趋势。 拿我朋友今日的一句话来表达就是 “未来的IT可能就变成了,技术都是水电煤。任何公司都能使用这些技术完成自己的业务。”。 听起来有些夸张,不过却是在现实生活中有迹可循的。 当今开发者招聘市场上对前端程序员的大量需求就可以看出,程序员的意义,已经从“造轮子”渐渐变成了“装饰轮子”。 有很多开发者在2016年,唯一的工作仅仅是把人类表述的“需求”不断地转化成“代码”。 这些所谓种种“需求”中的共同之处,早已被人抽象出来并制作成了CRM,ERP之类的软件,不需要二次开发了, 唯一要做的定制就是外观上的。

所以在这种趋势下,虽然看似“倒金字塔”的塔顶空间很大,然而其是有尽头的,一旦触及了塔顶,生存空间消泯了。 然而纵使将来空间用尽了,上文提及的趋势却不会停止,就连UI开发上都出现了包装精美的Lib,各种各样的UI widget大大减轻了前端程序员的负担。 最后一根稻草,或许就是所谓的,机器人程序员的出现,当前端开发工作抽象化到一个足够的程序,机器人取代人类的可能性也就大大上升了。 在机器人替代了人类后,自然,软件业就基本上被消灭了。

当然要乐观

以上的观点对于开发者的确有些耸人听闻,也许就和的士司机听到自动驾驶时的心情一样。 不过软件行业的夕阳还早呢。 硬件技术和软件标准的不断进步,注定有一部分老软件要以旧换新,这意味着“倒金字塔”中间,还会有空间。 Linux和BSD的monolithic kernel的维护难度正在上升,也许会有新的microkernel取而代之。 老的语言要被新的适应多核环境的语言替代。 新的web标准和新的基础软件使一系列的库和工具成为legacy,甚至Apache Server这种曾经我以为坚不可摧不可替代的东西都有可能被替代。 运维工程师或许的确会被率先消灭于PaaS时代,不过这样也意味公司的成本降低,能够有更多小公司负担起大规模的架构。 这些正在发生的变革,证明软件行业绝对并非夕阳产业。

弄潮儿与墙头草

对于个人开发者而言,在变革中能当一名弄潮儿自然是最好。 然而普通的前端开发者或许并不能改变世界,在这种情况下,最好是成为一名“墙头草”。 紧盯技术的发展,不忽视自己作为一个人类的其他发展,或许不至于在变革来临时深陷泥沼,走投无路。

毕竟在程序员开发者的身份之上,还有个身份叫“人”。 作为个“人”,能在冬夜里坐在暖气前的台灯下成功写出一篇博客,我就已经无比满意了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK