曾经翻译了一篇文章 最后埋了个坑,说要写写云时代到来后程序员该何去何从?时间倏一下就过去了两个月,要是再不及时填坑,久了可能就忘了。
变迁
如果云时代如我们今天所设想的那般,云计算如水电气一般成为互联网的基础设施,无所不在般的到来,那这的确又是一个巨大的技术时代变迁,而感觉上一次我所经历的技术变迁是从传统的 IT 到互联网。
和别的行业不同,成为程序员不仅需要持续保持学习,更重要的是保持足够快速的学习和适应能力。IT 技术的变化发展似乎就像一列火车,它按自己的时刻表轰隆隆向前,你只能按它的节奏和速度去乘车,并跟随它向前奔行。
从我个人接触的第一门编程语言 BASIC 算起,差不多有二十年了,我发现我每一次更换主编程语言似乎都对应着技术变迁。BASIC 算是我中学阶段的编程启蒙语言,后来到大学后开始学习 C 语言,但大学快毕业参加实习时,发现市场上需要更多使用类似 PB、Delphi 这类拖拽式集成开发工具来开发企业 C/S 应用,那时正是 C/S 应用的红火年代。
再后来实习完后我没去工作,考了研究生。两年后,进入银行做金融交易类系统,那时用的一种比较特殊的可以嵌入 SQL 语句的 C 语言,好像叫 Pro C(假如没记错的话)来做后端服务程序。不过当时技术的发展变化是 B/S 结构开始逐步取代 C/S 结构的程序,Java 的 J2EE 有些开始侧漏出王霸之气,不断攻城略地,当时另一家国有大行已经开始逐步用 Java 来取代 C 实现交易系统。那时很多技术人员都在怀疑 Java 的性能是否能支持这么大交易量的系统,如今想必大家都不会有类似的顾虑了,而去年双十一支付宝已经登顶全球最高并发的金融交易系统了。
而从进入研究生开始我就一直自学 Java,虽然工作头一年维护和编写了不少 Pro C 的程序。一年后,我跳槽了,换到了电信行业,做运营支撑系统,从此一直使用 Java 作为主编程语言到现在。在此期间为了做 Web 开发也用过 Javascript,几年前移动互联网火起来时,还看过一下 iOS 的 Objective-C,但没多久苹果推出了 Swift,觉得还是专注点好,就放弃了。期间后端语言比较有亮点的是 Google 的 Go 语言,但也就是刚出时了解了一下,一直保持观望。如今却是想明白了,虽然程序语言经常推陈出新,代表了一些技术潮流的趋势,但并不重要,也不需要随时保持跟进。一定时期内你只需要精通一门主流语言,何谓主流去 TIOBE 看看排名就知道了,结合你的实际工作环境需求在一门主流语言上做到精通。
如果云时代到来是否意味着我们编程开发模式的彻底变化?其实我现在已经不畏惧这个了,对于一个跟得上学习节奏要求的程序员来说,任何语言或开发模式的变化未来你都可以快速的学会。有时候我们感觉技术变迁眼花缭乱,似乎跟不上了,一些新东西新名词完全没听说过,这太正常了。环境每天都在变化,虽然我们需要快速的技术变迁适应性,但并不是随时随地的适应性。
有一种动物叫蝾螈,这个物种的历史可够悠久的了,是侏罗纪中期演化的两栖类中的一类。
这种生物适应能力太强了:把它放在没有光线的地方,两天之内它就可能把眼睛退化掉;如果再把它拿到有光线的地方,两天之内它就会长出眼睛;把它扔到水里它就退化掉肺长出鳃,把它捞出来放到陆地上它就退化掉鳃长出肺。
这种生物虽然拥有强大的环境适应能力,从侏罗纪到现在有一两亿年了,但并没因此向更高阶进化,只是在原地变来变去,最终沦为了人类科学家的玩具。所以程序员不需要像蝾螈这样极速非凡的适应变化能力,对环境的变化反应敏感过度。
面对技术变迁,程序员的有效适应性,是有意识的选择与坚持。
价值
云时代,云计算成为了水电气般的基础设施,必然带来程序员的进一步分化。今天我们面临的很多分布式问题,都由基础设施提供的各类服务给解决或屏蔽了。就像今天我们开发程序也利用了很多操作系统提供的能力,而操作系统或虚拟机或容器是现在我们依赖的基础设施。
目前像提供操作系统这类基础设施的公司并不会多,所以很可能未来留存下来的能提供云基础设施的公司也不会多。而大部分的基础技术问题都将由提供云基础设施的公司来解决,所以今天纠结于做纯技术开发还是业务开发的同学,在云时代必然面临明确的选择分化。
云时代的云公司,它们的核心业务和面临的问题就是今天这些纯粹的技术问题,除了要能够解决并封装成服务,还需要不断的降低成本和优化效率,而在云上的降低成本和优化效率这是真正意义上的技术价值的直接体现。亚玛逊能够连续 44 次降价来阻止竞争对手进入,正是技术综合实力的体现,未来必然只有少数云公司能够把提供服务的成本控制在自由市场竞争的价格之下,而一心追求技术之巅的程序员选择进入这样少数的云公司将成为必然。
而另一部分对业务更感兴趣的程序员,更喜欢做业务开发,他们的价值又该如何体现?云公司封装了业务开发面临的核心技术难度,面向云开发已经成为绝大部分初创公司的选择,那么是否意味着面向云的业务开发程序员的价值将会下降?
前段时间看了一篇文章《IT人的巨流河》,这是一条如何向业务证明 IT 工作价值的巨流河。而我现在所能看到的是进入云时代后,业务开发的程序员最大的核心价值恐怕就是需要在这样一条巨流河上建立桥梁。面向业务开发的技术人员需要去看清、理解业务的价值链条,并在这个链条上嵌入展现技术的价值。
如果说,云时代的云公司们提供的基础设施和技术服务将是一辆车的发动机,那么面向业务开发的程序员其实提供的就是变速箱。未来可供选择的发动机可能不多,那么车辆差异化能力的变速箱倒是很关键了。(好吧,其实我对汽车原理并不熟,不知道这么比喻是否恰当)
无能怎样变化,看清并抓紧整个价值链条的一环才能避免彻底的被边缘化。
...
蒸蒸日上的行业或公司,就像一辆刚提的新车,若你不过是在其中干着空滤的活,还没有点危机感么?
写点文字,画点画儿。
微信公众号「瞬息之间」,遇见了不妨就关注看看。