程序员最害怕什么?按照我的排名,第三位是上班、虚耗生命;第二位是年终、一年白干;排名第一自然是自己倾注了大量心血研习的技术突然被淘汰了。还有更糟的吗?!有,就是那时候你已经过了35岁。
我,恰好遇见了最糟糕的情况。而那带我爬出深坑的绳子,叫做“开源”。
唯技术论的坑年,我北大毕业加入宇宙行的数据中心,成为了一名支持大半个中国区核心系统的数据库工程师。我那时接触的技术平台,自然是“高端”的IBM大型机Db2数据库集群。给高端打上引号并非是反义或者嘲讽,而是为了强调IBM大型机一贯的两个标签:技术先进、价格昂贵。那时的我信奉技术至上,相信更先进的技术未来必有一席之地。
不过,我很快发现宇宙行的大型机团队规模增速远不及小/微型机团队。也许这是因为甲方部门的发展空间有限?没关系,我可以去到乙方服务整个中国银行业。于是我加入IBM,成为大型机数据库售前工程师。到了年左右,生意真是越来越难做了,市场上到处都在喊“去IOE”。也许这是中国国情所致?没关系,东边不亮西边亮,我还可以加入美国的银行呀。于是我加入了大摩的IT部门,这下总能安稳做技术了吧。
可惜美好的时光是短暂的。安稳日子没过5年,连美国的银行都开始将核心系统下移到X86服务器,甚至尝试使用开源数据库,你们也去IOE,这是什么道理?技术至上的逻辑出了什么问题吗?
IT产业的逻辑虽然没有哪一个开源数据库敢说自己打败了Oracle与Db2,但不妨碍开源数据库以及开源软件得到越来越广泛的应用。在很多行业,开源软件开始侵蚀传统闭源软件的市场份额。从技术角度来看,这似乎是一种“逆向淘汰”。“免费的往往是最贵的”,很多人这么嘲笑开源软件用户只是贪图便宜。
但要探寻技术至上逻辑的漏洞,首先得放下成见。我问自己,“技术至上”究竟是IT产业的逻辑,还是我的一厢情愿?技术上的“逆向淘汰”在IT产业一而再、再而三地重复上演。比如,小型机在很多领域替代了大型机,而微型机几乎已经彻底淘汰了小型机。从技术角度看,这实在是反直觉。但如果换个角度来看,我们就会有不一样的答案——IT能力的普及。
IT产业的逻辑链里不单有技术因素,还有经济因素。在小型机代替大型机、X86服务器代替数据库集群等大趋势成型的临界点上,往往不是我们有了更先进的新技术,而是我们有了能大幅度降低成本且够用的新技术。简而言之,存在这样一个趋势:强大、复杂又昂贵的技术很有可能会被够用、简单、低成本的技术所取代。虽然X86和智能手机已经把IT能力普及到了个人,但接下来还有物联网设备、自主机器人等等,只要IT能力的普及还未结束,这个趋势不会轻易停止。
可能的出路想明白了这个道理,我开始探究是否存在这样一种可能——再也不用担心技术大方向更迭对程序员的职业生涯产生较大影响,通过参与开源软件社区来开拓出路。
当然,我所指的开源软件不是光光用了开源许可证的软件。
我所说的开源软件是一群人(贡献者),出于一个特定的主题(项目愿景),基于设定的规则(社区章程),共同开发的(开放协作)、使用开源许可证的软件产品。这为外部人员的参与提供了可能性。外部程序员如果能够深度参与一个开源项目,那么自然便可以对其施加一定的影响,他的投入就会更有保障。反之如果是闭源软件,或者封闭社区的产物,外部人员所花费的心力随时可能因为项目方修改技术路线而打水漂。所以,谨慎选择造神型的开源社区。
除此以外,在选择开源社区时,还需要考虑这个开源软件是否符合前文提到的技术趋势。提供足够功能这一点自不必说,我想提醒大家