王川:从编程技术的变迁看程序员的不连续性

本文最初于 2018年11月23日发布于笔者的公众号。


本文是  “王川:美好未来, 注定并不连续” 的续篇。

1/ 在推特上看到一些资深程序员回顾过去三十多年编程技术的变迁,非常有借鉴意义。

2/ 有人说,在 1988年看,有三样技能对于程序员来说最重要。
C 语言, 图形界面编程, 面向对象编程。

3/ 但没有人预测到 1993年浏览器的出现。 1995年之后, 市场上对于会用 HTML编程,会维护 apache server, 会写 CGI 程序的需求大增。 实践中 Perl 和 Python 也是最常用的工具。 Perl 实际上比 Python 更流行。

4/ 到 1998年,微软在浏览器上的市场份额越来越大,一类主流观点是, 下面三样技能对于程序员最重要
ActiveX, OLE (object linking and embedding) ,ATL (Active Template Library)

5/ 实际操作上,微软的这套技术框架极为复杂繁琐难懂。打个比方,用 ActiveX/ OLE 写程序,好比放一个屁要脱三次裤子。 ActiveX 还有安全和兼容问题,慢慢很少有人用, 它原来想要实现的功能,都可以轻松被后来的 html5/javascript 解决。

6/ 还有人记得九十年代由十几家公司 (惠普, IBM, Sun Microsystem, Apple, 等等) 不遗余力联合推广的分布式编程标准
CORBA (Common Object Request Broker Architecture) 吗?
2002 年后就慢慢销声匿迹了。分布式计算,理论很丰满,实际很骨感。

7/ 2006年之后, 亚马逊悄悄地开始了云计算的建设和推广。

8/ 2008时,一类主流观点认为, 下面三样技能对于程序员最重要
SOAP (Simple Object Access Protocol) ,Enterprise Service Bus,AJAX with XML

9/ 但实践上, AJAX 不适合后来出现的移动编程应用,还有各种安全和兼容问题。 而 JSON 也远比 SOAP 更灵活好用.

10/ 到了 2018年,又有人说,下面三样技能对于程序员最重要
GraphQL, Web Assembly, Web Components.

11/ 如果以史为鉴,他很可能又大错特错。

12/ 为谋生而作程序员,和为赚大钱而作程序员,是完全不同的概念,二者有时有重叠,更多时候毫无交集。即使 C/Python/数据结构等学得非常好,并不意味着可以找到满意的工作;编程能力一般,遇上供不应求的强劲增长,也可能收入很高。极少数财务上成功的程序员,基本上是误打误撞,而非事先刻意计划为之。

13/ 程序员的财务成功,大多来自公司股票,取决于所供职公司的长期增长幅度。但如果真有预测增长的能力,那就更适合去直接做投资了。这里的悲剧之一是,少数靠运气财务成功的程序员,误以为自己有超常的投资能力,因此跑去大手笔做投资;悲剧之二,外面的观察者,以为他们真是因为编程能力强而发财,因此努力学习编程。大家都在拼命追逐自己误解的目标。

14/ 程序员相当于把自己的编程能力,置换成等值的投资者的本金。培养编程能力,就是相当于让自己投入的等值的本金数字高一些而已。

15/ 从编程技术的演变史看,形而下的工具之淘汰和不连续性的变迁是必然的,其根本原因往往来自于和工具本身毫无关系的,更高一层的计算平台模式的改变。比如从传统 client-server 计算模式变迁到浏览器为基础的计算模式,从内部软件管理到云计算模式; 从 PC 端计算到移动端应用开发。

16/ 但长期具体的预测是困难和徒劳的;掌握一两门技术就可以一劳永逸的想法是完全不现实的;不理解变迁背后的底层逻辑,潮流改变时无法跟上, 则可能是致命的。

17/ 至于那些鼓吹小孩从幼儿园就要开始学 Python, 机器学习编程,否则就会输在起跑线上的言论?帮帮忙。