在推特上看到一些资深程序员回顾过去三十多年编程技术的变迁,非常有借鉴意义。 有人说,在 1988 年看,有三样技能对于程序员来说最重要。C 语言, 图形界面编程, 面向对象编程。 但没有人预测到 1993 年浏览器的出现。 1995 年之后, 市场上对于会用HTML 编程,会维护 apache server, 会写 CGI 程序的需求大增。 实践中 Perl 和 Python 也是最常用的工具。 Perl 实际上比 Python 更流行。 到 1998 年,微软在浏览器上的市场份额越来越大,一类主流观点是, 下面三样技能对于程序员最重要: ActiveX, OLE (object linking and embedding) ,ATL (Active Template Library) 实际操作上,微软的这套技术框架极为复杂繁琐难懂。打个比方,用 ActiveX/ OLE 写程序,好比放一个屁要脱三次裤子。ActiveX 还有安全和兼容问题,慢慢很少有人用, 它原来想要实现的功能,都可以轻松被后来的 html5/javascript 解决。 还有人记得九十年代由十几家公司 (惠普, IBM, Sun Microsystem, Apple, 等等) 不遗余力联合推广的分布式编程标准 CORBA (Common Object Request Broker Architecture) 吗? 2002 年后就慢慢销声匿迹了。分布式计算,理论很丰满,实际很骨感。 2006 年之后, 亚马逊悄悄地开始了云计算的建设和推广。 2008 时,一类主流观点认为, 下面三样技能对于程序员最重要: SOAP (Simple Object Access Protocol) ,Enterprise Service Bus,AJAX with XML 但实践上, AJAX 不适合后来出现的移动编程应用,还有各种安全和兼容问题。 而 JSON 也远比 SOAP 更灵活好用. 到了 2018 年,又有人说,下面三样技能对于程序员最重要: GraphQL, Web Assembly, Web Components. 如果以史为鉴,他很可能又大错特错。 为谋生而作程序员,和为赚大钱而作程序员,是完全不同的概念,二者有时有重叠,更多时候毫无交集。即使 C/Python/数据结构等学得非常好,并不意味着可以找到满意的工作;编程能力一般,遇上供不应求的强劲增长,也可能收入很高。极少数财务上成功的程序员,基本上是误打误撞,而非事先刻意计划为之。 程序员的财务成功,大多来自公司股票,取决于所供职公司的长期增长幅度。但如果真有预测增长的能力,那就更适合去直接做投资了。这里的悲剧之一是,少数靠运气财务成功的程序员,误以为自己有超常的投资能力,因此跑去大手笔做投资;悲剧之二,外面的观察者,以为他们真是因为编程能力强而发财,因此努力学习编程。大家都在拼命追逐自己误解的目标。 程序员相当于把自己的编程能力,置换成等值的投资者的本金。培养编程能力,就是相当于让自己投入的等值的本金数字高一些而已。 从编程技术的演变史看,形而下的工具之淘汰和不连续性的变迁是必然的,其根本原因往往来自于和工具本身毫无关系的,更高一层的计算平台模式的改变。比如从传统 client-server 计算模式变迁到浏览器为基础的计算模式,从内部软件管理到云计算模式; 从 PC 端计算到移动端应用开发。 但长期具体的预测是困难和徒劳的;掌握一两门技术就可以一劳永逸的想法是完全不现实的;不理解变迁背后的底层逻辑,潮流改变时无法跟上, 则可能是致命的。 至于那些鼓吹小孩从幼儿园就要开始学 Python, 机器学习编程,否则就会输在起跑线上的言论?帮帮忙。 (作者简介:王川,投资人,现居加州硅谷。个人微信号 9935070,公众号 investguru ,新浪微博“硅谷王川". 所有 |
|