为什么大公司的技术这么弱,还不如小公司?
最近好几个大厂的读者不约而同跟我聊到公司采用的技术栈很落后的问题,一个读者还感叹:是不是大厂的领导都是混子?技术这么弱还不如之前呆的小公司。
回复了几个读者朋友之后,这里也想跟大家分享下这个问题:
1.大公司业务极其复杂
毕业第一年在腾讯工作,做QQ 游戏 大厅,当时用的IDE是VS2006,用的版本控制工具,叫 ClearCase(估计用过的人不多),IBM 开发的。
特点是极其严谨、非常强大,但流程极为繁琐,用起来简直让人抓狂,这还是腾讯花了3000万找IBM买的。
而QQGAME这个产品的代码量几十万行,DLL就有几十个,工程编译一次需要20分钟以上。
离开腾讯多年后,问了问前同事,他们居然还在使用VS2006和CleaerCase,原因很简单,更换新版IDE需要解决大量技术问题,而业务又在高速迭代,只好不了了之,更换版本控制工具? 历史 的各种Log就会丢掉,要是出现什么稀奇古怪的突发问题,还得去看CLeaerCase。
业务的复杂性还会导致耦合严重,一旦代码工程产生耦合,改动一个地方就会牵一发而动全身,这种情况下引入任何新技术都会带来极大工作量。
大公司的业务代码,有时候明明感觉有bug,却能运行良好。
这是一个前人留下的屎堆起来的一个克苏鲁缝合怪,看起来摇摇欲坠,有无数的虫子爬来爬去。但勉强堆起了山一样的形体,蠕动着为老板赚钱。
2.大公司技术 历史 包袱重
大公司之所以能成为大公司,一定是找到了稳定持续盈利的业务模式,这些业务对应的产品,动辄横跨几年甚至10年,这些年业界的技术高速发展,但大公司要保证业务的稳定性,即便再落后的技术,只要能给老板赚钱,就是极好的。
你想尝试引入新技术?能带来多少用户价值、商业价值?导致系统崩溃了怎么办?小公司系统出点问题无非是影响几万用户,大公司的产品要来点小问题,就算1/100的几率,拿QQGAME上亿用户来说,那就是100万用户出问题,一下就给公司带来几千万的损失,这么大的锅,谁敢背?
所以大公司的技术leader在引入新技术这方面,一定是趋向于保守的,人都是趋利避害的,用了新技术成功了,并没有肉眼可见的好处,失败了?直接卷铺盖滚蛋吧。
3.大公司新人入职离职频繁
铁打的营盘,流水的兵讲的就是大厂,大厂每年应届招聘动辄数千,社招再来数千,离职也不下几千甚至上万。很多开发的还是外包人员,外包人员的流动性可想而知。
在这种人员流动速度面前,能勉强把旧的技术系统吃透就烧高香了,哪有心情和心思研究新技术,除非真的是遇到了某个技术困难非要迭代进化,否则很难有动力去驱动。
以上三点,是我在大公司工作多年后的一些心得, 但这么说大公司的技术难道就没救了?
当然不是!
大公司在以下几种情况,也会爆发出惊人的技术战斗力:
1.组成攻坚小团队,开疆辟土
这个最经典的就是腾讯的微信团队,2012年马化腾接受张小龙的建议,要杀入移动通讯领域。公司并没有只让QQ团队来研发这个新事物,而是同时启动3个敏捷小团队和QQ团队一起赛马。最后的结果大家也知道了。
微信团队今天取得的成绩不光是用户量,同时也有多端通讯实时同步的领先技术,这项技术在2012年属于绝对领先且碾压的技术。微信团队的前身是foxmail,张小龙创造性的把邮箱的实时同步引入到即时通讯领域。
哪怕到了今天,微信团队从几十人成长到上万人,微信的技术依然保持着高速进化的状态。
2.业务老人走光,无法延续
这种情况比较极端,但也会发生,大公司老团队的业务leader跑路,然后带走骨干,又或者自然流失殆尽,导致旧的系统新人完全无解,或者迭代极为缓慢。
新Leader这种情况下,选择大刀阔斧,直接大规模重构,甚至重写。在腾讯互娱大部门,某一个 游戏 团队就发生过这样的事情,反而让各种新技术充分落地应用。
3.技术密集型的业务,必须不断在技术层面取得突破
哪些是技术密集型的业务?比如谷歌的搜索、微软的操作系统、亚马逊的云计算、华为的5G。这些大公司的业务,你丝毫不用担心技术上有任何落后。
他们事实上已经进入技术无人区,必须依靠企业的内发创造力,不断取得突破。所以他们会大量招募全球最顶尖最聪明的人才。
比如华为会在俄罗斯广泛招募数学天才,微软亚马逊吸引了大量能力智力双高的华人。
最后说下我对大厂的总体看法:并不是大厂员工能力问题导致某些技术落后,完全是业务和商业市场的选择导致。
另外,我认为程序员职场初期(前五年)进大厂是非常必要的,不管是不是最先进的技术,最起码完善的技术培训体系、薪资福利、更人性化的管理、人才密度等等,完全碾压小厂。