北京十年
十年前的今天,也就是2006年的最后一天,我来到北京。翻出了我十年前的一篇博客《在北京找不到北》是这样记录的:
记得刚到北京时,正好遇到北京冬天的第一场雪。我懵懵懂懂,不知道从西站的哪个门里出来了,应该是最烂的一个门。我站在门外,开始打量这个陌生的城市。门外的雪化了,被搅拌成肮脏的雪水,浸湿了我的鞋子。给同学打电话,让他来接我。他问我在哪个门,我说不知道。天上一颗星星都没有,我怎么找着北?
记得当时略狼狈,来北京前丢了钱包以及身份证和所有的卡,借了朋友1000块钱。好在当时买火车票不需要身份证,也要庆幸孙志刚事件导致强制收容制度的废除,否则我当时可能被拉去昌平筛沙子。
第二天元旦,接到我五叔电话,被狠批了半小时,说好好的法学不搞,不务正业去搞计算机了。记得当时自己满心委屈,但也说不出理由来说服五叔,说实话心理也没底坚信自己这个选择是正确的。因为自己既不是编程世家出生,也不是天资过人。大学才算接触电脑,自己网上摸索,旁听信息院的课程,捣鼓两年,好歹能算写点程序,正好网上论坛认识了一个朋友,让我去他公司实习写程序,我就这样来到了北京。
转眼间,十年已过。
十年前北京只有三条地铁,十年后已经遍地开花了。
十年前北京经常沙尘暴,我还写过一篇沙尘暴的文章和老家的沙尘暴比较,现在没有沙尘暴了,雾霾来了。
十年里,换过几个工作,也参与过创业,自认为也算成长为一个温伯格(GeraldM.Weinberg)笔下的专业程序员了,不会像刚开始时那样老担心自己这种野路子出来的比不上正规军。
十年里,我也逐渐一定程度能理解上一辈的想法了,对程序员这个行业也有了更深刻的认识,所以这里简单的做一个总结,作为对当时选择的一种解答吧。
程序员,我们一般自称码农,按照职称叫软件工程师,按照阶级论应该属于工人阶级,类似于高级技术工人或者手艺人。但和其他技术工人最大的区别倒不在于它主要是脑力劳动,而是工程师的作品—软件,可以低成本复制。这个是传统的工程师和手艺人都很难企及的,建筑工程师建好了一个房子,如果还需要一个一模一样的,只能重新再来一遍,而软件工程师复制粘贴一下就好了。
历史上只有一个职业能做到这样,那就是作家。再后来随着留声机,录音录像电视技术成熟,艺人群体崛起,光芒甚至盖过了作家,因为他们的作品受众范围更广。但文艺工作者本身从事的不是直接的生产力工作,而软件工程师是第一种具有了作品复制能力的生产力工种。这种复制能力,可以让作品同时服务于千万人,每人只需付给很少的费用(甚至不用付费,通过广告等其他方式),就可以让生产者获取很大的收益。所以从这个角度来看,互联网软件行业爆发,软件工程师群体的崛起是必然的。
这个道理这个行业的从业者听着像是废话,但其他行业的人不一定能理解。记得我还在微博的时候,一个朋友一次告诉我,她见我经常加班,所以她的同学想注册微博的时候都被她拦住了,说怕给我增加工作量。我听了哭笑不得。于是告诉她对软件工程师来说,系统开发出来后,一个人用和很多人用区别不大,工程师最大的希望就是自己做的东西越多人用越好。
但软件工程师的群体最后是否会像艺人那样,少部分顶尖的艺人占据了大部分市场?那天微博上还在讨论这个问题,为什么顶尖的码农收入不及顶尖的娱乐明星?个人认为这也是不可能的。软件本身是一个工业产品,不是艺术产品,实现同样功能的情况下,你写的软件和我写的软件对用户来说没太大区别,但艺术产品就不一样了,同样一首歌,刘德华唱和我唱就差别大了。
因为这个特征,软件可以多人协作完成,产品经理,软件工程师,设计师分工协同。软件工程团队一般擅长创造软件,实现从0到1,但只有将软件推广给很多人和企业,才能发挥出复用价值,于是又需要运营和销售市场的协助。再加上软件的生命周期要短于文艺作品,虽然软件也是按照著作权来保护的,但五十年前的音乐还能听,50年前的代码估计就是废品了。所以软件行业的马太效应比文艺领域要弱许多,这个职业的各层次成员的位置是一个梯形结构,两极分化没有文艺圈那么严重,而这种结构的职业比较适合个人努力,天赋和运气的差距一定程度上可以通过努力弥补。这个行业你永远都能遇到让你望其项背的大牛,但也总能找到自己的位置,实在不行还可以转去做产品经理么?:)。
既然软件工程师最大的『魔法』是作品的可复制性,软件行业内部的资源和人才也是向能最大能发挥这个特性的领域流动,前十年这个领域就是互联网。十年前互联网公司的地位还有现在这样如日中天,当时计算机毕业的同学首选的一般是软件公司,互联网公司搞软件那时候感觉总没那么专业。我当时也被J2EE洗了脑,老觉得互联网搞的不是真正的企业级应用。没想到十年后,互联网公司基本上将基础设施重构了一遍。
现在看来互联网模式的优势在于将最普遍的需求抽象成通用的标准化产品,然后依托标准化的分发渠道,最大化的实现了软件产品的复用性目标。2010年以前,web和浏览器承担了分发渠道的角色,而2010年后,随着移动互联网逐渐普及,手机设备的标准化,iOS和Android的应用市场成为了新的标准化分发渠道。
记得十年前,毕业离校前和一个同学聊天,谈到设想下十年后自己在干啥。我当时说自己应该在中关村穿着拖鞋,留着长发,背着笔记本电脑写代码(那是自己还没笔记本电脑)。当时的一个大胆假设是十年后至少城市的电脑应该普及了吧。但从来没敢想,十年后连农村老家都用上了掌上电脑—智能手机,接上互联网了。
互联网软件技术发展到这个程度,大多数人都已经成了网民,是不是已经到的顶峰了?这个要看软件的复用效率是否还有提高的余地,覆盖的领域是否还可以扩大。最近几年兴起的云,容器,SaaS都是在试图构建标准化的企业应用,让企业应用也充分发挥出复用价值。而今年火爆的AI,本质上其实是在解决软件复用导致的标准化和个性化场景化需求之间的矛盾。从这个角度看,互联网软件行业距离顶峰还很遥远,企业应用和互联网应用之间的沟壑也逐渐没有那么明显,变革这才刚刚开始。
如果这样说,是不是软件行业的人都可以安枕无忧了?但实际上不是,软件工程师是焦虑感最强的行业,至少是之一吧。记得从刚入行开始,软件工程师群体里就流传着这样一个说法,『搞软件是吃青春饭的,过了三十就写不动程序了,要尽早考虑转行』。转眼间,我已经三十多了,才发现像我这种天赋和经历的,30岁前写程序基本还是懵懵懂懂,被需求和业务压力追着跑。30岁后才慢慢看的更远一些,理解也更深刻一些,看一些问题有种顿悟的感觉。我也在思考这种说法的来源,那天GIAC的大会上也聊到老程序员的话题,左耳朵耗子也写了一篇文章谈这个问题。我觉得关键在于软件工程师是一个没有『门槛』的行业。
这里的没有门槛不是说没有难度,而是很少有外界设置的准入门槛,市场化程度比较高。比如律师要有律师资格证,连开个快车,政府都要求有北京户口,没听过写程序需要北京户口吧?再比如你去摆个摊,还得办各种证,否则被城管追,但你写个程序放应用市场卖,没人要你办什么证件吧?同时由于技术发展太快,所有的试图设立壁垒的认证很快就被市场抛弃了。比如软件工程师认证,架构师认证,在我就业面试,或者面试别人的经历中,没有一个认证会被要求,甚至简历上写了都不会注意到,大学时候被培训老师忽悠考的几个证,一个都没用上。
技术的更新速度导致的另外一个结果就是低层次的行业经验和技能很容易被淘汰,如果工程师不能从已有实践经验中总结出更高层次的抽象,不能将经验转化成学习能力,很容易在新一轮的技术变革中落伍,然后和其他新入行的工程师站在同一个起跑线上。而这时候精力赶不上新人,加班抗不过新人,学习效率如果也不如新人,要的薪资还比人家高,拿什么和人家竞争?而其他行业中,准入证制度是一种保护从业者的手段,等级资质认证是一种保护老从业者的手段,所以对年龄的焦虑程度要比工程师低的多。
但反过来想,正是这种完全的市场化机制,才促进了行业的发展。软件工程师群体是我了解过的最喜欢学习的群体,一年那么多技术大会,meetup,还多是在节假日,几乎场场爆满。没有统计过,但我也敢说技术类书籍应该是行业书籍里卖的最好的。其他行业说学习很多就是指如何应付考试。
从这个角度看软件工程师的职业模式是更先进的一种模式,市场化的要求就是打破各种壁垒,包括职业壁垒。同时,软件工程师也在帮助其他行业打破壁垒,比如没有互联网的时候,作家在中国还是需要认证的,而现在『国家一级作家』这种头衔放微博上绝对被人嘲笑。也就是说,其他行业随着技术的进步,也逐渐会向这个方向发展,只是工程师这个群体跑在前面了而已,提前经受了如何应对行业变化的磨练。
我们的上一辈对职业的期望是稳定,希望能有一个稳定的职业路线图,希望职业赋予自己一个身份,归属一个确定的团体,比如xxx单位。但我们这一代人的想法不一样了,对未来稳定的预期带来的问题就是无聊,而我们如此的惧怕无聊,所以选择了变化。但当所属的公司在变,团队成员在变,从事的技术在变,住的地方可能也在变,房价也天天在变,于是就会开始焦虑。『北漂』的这个『漂』字准确的形容了这种无根无锚,无处攀附的状态。
这个时候我们需要找到一个坐标,可能对某种技术的理念,也可能是对解决某个行业领域问题的信念,再或者是某种责任,通俗的说就是一种可以称之为自己事业的东西。而这个坐标,同时也是面对选择的时候的参照物。变化同时带来的就是选择的多样,要不要学这种新的技术,要不要去创业,要不要去加入某个公司。都说『选择大于努力』,但如果没有这个参照物,我们做选择的时候就会斤斤计较,犹豫徘徊,再次陷入焦虑,既然未来是不可预测的,那就应该选择一个错了也不后悔的方向。
啰啰嗦嗦写到这里,最后总结下,十年里,在北京结交了几个朋友,认识了一些在各领域深入钻研的同行,组建了一个家庭,大的成就没有,运气不算太坏,几个公司遇到的领导都让我收获许多,还在以写代码为乐。感谢互联网。十年前在北京找不到北,现在不敢说找到了,但多了一些信心,少了一些彷徨。
相关链接