在亚马逊工作比较惬意,我们每天早上9点上班,下午5点下班,可以往后浮动一个小时,99%的概率不加班,每个月有一次随时响应工作需求的时间,这还被我们吐槽。在本土公司,大家都懂得,如果你要这样严格打卡上下班,老板会把你列入黑名单。
过去,人们习惯性地说外企把人往螺丝钉方向培养,一切都帮你设计好,只要按部就班地成长就行。我承认这是有的,在亚马逊,你在什么级别就是做什么事,如果级别不到,你的能力达到了,也未必做得了想做的事儿。这一点是小米工作给我最大的好处和回报:只要足够胜任,我的发挥余地很大,可以做很多我有意愿而且能力范围内的事。
一般来说,同一个项目,短期来看,国内公司的开发效率会比国外公司高出很多。是不是国内企业一定比外企更锻炼人呢?我有不同的看法,事实上我在小米有成长,在亚马逊也有成长。
互联网项目一般会采用持续集成或者迭代的开发流程,这种方案的最大优点是反馈快,能及时响应变化,在执行这个流程的时候,国外公司和国内公司区别很大。
比如在亚马逊,为了保证系统开发的可持续性,会引入代码审查、单测、集成测试、ab test这几个环节保证质量,并且为每一开发环节定制出自己的工具,提升程序员的工作效率;在国内公司,理论上也会执行这套流程,但为了速度,往往只留下集成测试这个环节,其它环节会被弱化、被抛弃。这就不难理解,为什么同样一个项目,短期来看,国内公司的开发效率会高很多了。
于是,在国内公司做事,慢慢地,程序员通过不断打补丁的方式解决当下最紧急的问题,导致系统里的补丁多到让所有人都看不懂。一个系统不断补丁的结果就是灾难,国内某号称技术实力最强的公司,就是这么做电子商务平台,最后发现自己的系统,已经没人看得懂,没人能维护了,最后花大价钱从Sun挖来工程师把这个问题解决了。
当然,换一个角度,这也是一个合理的选择,在创业阶段,本土企业的反应速度远比外企快,这是最重要的优势,至于以后的事,公司大了,有钱了,再花大钱去请人来解决问题就好了。
但是,我们应该看到,互联网很多开创性的解决方案基本是美国公司做出来的,比如亚马逊为了解决计算资源过剩的问题,第一个搞了云计算,现在为解决最后一公里的问题,又在搞无人机投递实验;谷歌()就更不用说了,第一个遇到大数据处理的问题,发表了跨时代的三篇大数据处理的论文,现在又在搞机器人、机器学习。国内一些公司开发和运维的基础设施,不过就是拿了国外的开源框架,做点小改动本地化而已。
总而言之,在外企遇到问题,会鼓励大家去做个什么工具来解决这个问题,国内的公司基本靠加班和管理流程解决问题。两种不同模式会培养出什么样的技术人才,一目了然。
当国内公司走到了技术的最前沿的时候,它们的技术方案都是什么人做出来的?大量还是从微软、谷歌、甲骨文这样企业里挖来的人,说到底,国内公司自己培养出来的人很多根本做不了,当然,国内的人次可能更适合创业公司。综合来讲,如果说外企培养人才的方向是“螺丝钉”,那国内公司培养的是“大杂烩”,哪个更好?
目前看起来,大杂烩更受欢迎一些,尤其创业潮中,多面手更受到欢迎,但是,应届生如果向我寻求建议,我还是会建议他们先去外企看看,因为外企会教你如何工作,国内公司是教你如何干活,这其中的区别挺大的。
离开小米的纠结
2016年底,有另外一个跨国公司的工作机会,会对我提升很大,我接受了。离开小米时,我不免考虑自己这两年究竟获得了什么——那两年间亚马逊的股票涨了四倍,虽然当时的股票数量不多,但如果再坚持这两年,把剩下的90%的股票拿到,如今可能也够在北京付个首付——虽然我是不买房主义者,主张投资股票,这样变现快。
再回头看,工作八年,两年一跳。职业生涯感觉整体往上走,是不是每次都在正确的时间做了正确的选择?不一定。