我的职业生涯就是和一般程序员反着来的。一毕业就在握有几家大公司offer的情况下被忽悠进了一家不到30人的初创公司,从代码基础几乎为0起步,一步步成为开发团队的骨干,也眼见着公司由黑暗中摸索、碰壁、重新探索新的方向到最后成就一款千万级用户的产品。入职即满两年,感觉小公司做数据挖掘限制太大,一狠心就放弃了期权离职,加入一家二线互联网公司。本来是抱着学习的目的去的,结果却是不经意主导了两个数据挖掘的项目,还因此间接拿到了某一线互联网巨头的股票。又一年过去,我接受另一家一线互联网巨头的邀约,负责一块之前完全没有接触的业务(当中的曲折和心路以后再慢慢道来)。待过小公司、不大不小公司、大公司,我发现很多朋友都希望了解大公司和小公司基层程序员的状态,但无论从大公司去看小公司,从小公司去看大公司,还是从不大不小公司去看两者,都存在一些雾里看花的误区。
这时我想起一件趣事:两三年前当我还在第一家初创公司吭哧吭哧垦地做后台做数据,有一天CTO手舞足蹈闯进来,说是约到了一线互联网巨头X厂的「专家」,拉着我直接打的去到他们住的酒店,说是膜拜X厂在数据技术上的造诣,当天聊的时候我就觉得不对劲,一个说的是电商,一个说的是音频,契合点寥寥。见完面又是送纪念品又是写感谢信的,仿佛进了大庙求神仙一样马虎不得。跳槽之后去了X厂,与当年膜拜过的「专家」共事,低头不见抬头见的,其实他们也就是X厂的普通员工,不过对外印的名片抬头唬人了些,平时做事思考表达也不见得就比小庙出来的高明多少。
大公司的技术体系偏向狭窄而精深,每个人擅长的都是领域内的一亩三分地,让他去解决领域外的问题,反倒是比不上小公司的多面手了。另一方面,中国互联网发展的时间并不长,大公司都是从小公司起家的,除了少数核心团队外,大部分员工其实都是在已有框架的基础上堆砌业务,如果执行者恰好不是一个特别擅长思考的人,很容易会被重复的事务所框住,变成一颗毫无价值的螺丝钉。就好像考试得了九十分,但其中的八十五分是补习班漏题拿的,而要拿一百分就需要付出很多的汗水。其实,这也是许多大公司技术人的困境。而小公司人难招,只好靠内部挖潜,iOS程序员调去扛安卓,数据工程师写后台,CTO早上写通信协议下午写客户端SDK,每个人都得当两三个人使唤,对于新人,技术上的成长(无论能力还是视野)肯定要快于大公司的同龄人。当然,小公司也有小公司的问题,多面手的任务是应急型的,是大干快上,是从零到一,能不能融会贯通,能不能传承迁移,愿不愿意做到从零到一百,要看各人的悟性,也看各人的造化,更看各人对待自我的要求。所以,大公司的技术不一定比小公司要强,相反快速发展的小公司的整体技术实力要高于大公司的平均水平。如果你来自大公司,千万不要轻视小公司程序员的能力;如果你来自小公司,也不要轻易被大公司的光环所蛊惑。
诚然,大部分程序员向往的仍然是到业界的顶尖公司就职,大公司HR往往要面对眼花缭乱的简历海洋,只能先从硬性指标(学历、职业经历)筛掉一批人。这次入职时遇到了一位校友,跟他一起吃饭,席间闲聊起人才这个话题,他认为基本中国最牛逼的人都去了金融业,国际投行都只会从Top2的学校招人,但和我们一起入职的可能没多少Top2的学生。我心想还Top2呢,我第一家初创公司的同事基本就没有Top100高校的毕业生。但反过来想,程序员恐怕是所有职业中成就和学历关联度最低的了,我见过的许多很优秀的程序员都没有很好的学历背景,但并不妨碍他们成为领域内的专家,神挡杀神,佛挡杀佛。而大公司因为硬性指标的限制,不经意把这类野路子程序员大神拒之门外,又或是大神进去了又发现自己不适应大公司的繁琐流程。所以现状是这类人才往往流向了小公司,成为小公司发展前期倚重的,一个人就能扛下所有技术攻坚的传奇。小公司因为组织扁平,反而有更多向这类技术大牛学习和请教的机会(所幸大牛们只是骨骼精奇,或是寡言或是偏激,但总是乐于分享的)。一句话总结,大公司你有机会接触到正路子的技术大牛,小公司你更有机会接触到野路子的技术大牛,他们的人才比起来,不一定是谁优谁劣的问题。而且随着创业融资环境的火爆,现在的小公司越来越有与大公司叫板抢人才的底气。
大公司有规模效应,提供通用服务的人均成本较低(不得不说互联网公司的HR部门确实是真心实意为员工着想的,这点比传统行业强太多),比如健身房、食堂、班车等,从而能全方位照顾到员工的生活。相对而言,小公司在福利方面更多的走新奇特的路线,像住别墅里办公、像一年一次的国外旅游、像前台的妹子特别漂亮。小公司福利的优点也在于船小好掉头,能满足员工个性化的体验。我在第一家初创公司待的时候,集体旅游的满意度要远远好于后来大公司所组织的,虽然不一定去很高大上的地方,但是挑的景点、入住的酒店、组织的活动都是大家所喜欢的,就算是临时起意的项目Boss也一定会自己掏钱让大家体验一把。
大公司体系庞大,推进一个事情可能要涉及到产品、运营、跨组别、跨部门甚至跨事业部的合作,因此除了写好代码,每天花在沟通、邮件和会议上的时间是必不可少的。身边的许多工程师都会用晚上加班无人打扰的时间沉下心来写代码。而小公司组织扁平,一个事情也许一声吆喝就能解决掉,那么多琐事缠身自然有更多精力投入到技术的修炼上。但反过来说,大公司要混出头,对一个人的综合能力要求更高(某种程度上说对于视野的要求甚至强于能力),不光要技术能力强,沟通、表达、人际都不能太弱,对外的时候能够思路清晰逻辑严密表达顺畅,才更容易赢得合作方的尊重。这也反映了大公司小公司做事方式的不同,小公司一切都处在蛮荒状态,方向都是试错试出来的,往往东一枪西一枪,对人的要求也是如此,基层程序员都是要挽起袖子上前线的,执行力强、反馈迅速就是第一要求。
写这篇文章,并不是在给小公司卖广告,只是作为一个过来人,从自己的角度写写大公司小公司,希望能给朋友们还原一个更真实更客观的状态:大公司不应该一昧膜拜,小公司也不应该一昧轻视。无论在大公司小公司,多和其他企业的同行聊一聊,开阔自己的眼界。拿不到大公司offer的也不用气馁,更不要去抱怨你的环境,只要你持续学习,你永远不会被你所在的平台局限住,这个行业从来不会因为出身就拒绝一个真正出色的人。我想无论对大公司还是小公司的技术人,都只需要认真考虑三个问题:你现在所做的事情能超越周围的平均水平吗?离开了你现在的平台你能做什么?有哪些价值是你的创造的,哪些价值是平台赋予你的?
更多精彩内容,敬请关注微信公众号「码农咖啡馆」