腾讯一年感受

前述

在两个星期之前,我收到了 Microsoft 的 offer letter,与总监沟通之后提交了离职申请。自 2015 年八月加入腾讯,到决定离开,我已经在这里呆了一年零三个月。感觉是时候写篇总结了,一方面是对自己经历的总结与反思,另一方面是希望这些信息可以帮助到后来人。

在 2014 年秋季参加完腾讯的实习之后,我顺利地拿到了 return offer,并在 2015 年毕业之后加入信息安全部的某团队中。在腾讯工作期间,我主要的工作是开发某个内部数据分析平台的 RESTful API Service,之后,在最近三个月转组去做 NLP 文本分类的工作。由于签了保密协议,具体工作内容我就不仔细展开了。

以下小节,我将从工程师的角色,总结一下对腾讯的主观感受:

  • 腾讯的优势
  • 腾讯的不足

腾讯的优势

员工关怀

腾讯是一个重视员工关怀的公司,主要体现在福利与职业发展两个方面。

福利方面,有大有小,惊喜与贴心并存。

一个典型的现象是,逢年过节总会有福利到手的腾讯小伙伴在朋友圈刷屏,比如最近鹅厂十八周年司庆,ponyma 给每位员工(包括离职员工)发了个大红包,然后个所有的在职员工发了 300 股纪念股票(总价值约 60k 港元),具体见 如何评价腾讯 18 周年司庆老板宣布给 2 万 7 千员工每人发放 300 腾讯股票? - 知乎

再比如,腾讯提供上下班的免费班车、晚上八点之后刷门禁会有夜宵券、公司内设健身房、内网设有「鹅民公社」福利兑换平台、员工无息房贷等等。

职业发展方面,腾讯是较为重视员工培训的。部门内、BG 内会频率比较高的内部的分享,同时公司也会从外面请一些大牛过来分享。每个季度也有定向的职业发展培训。我在部门这一年来也做过几场分享,每次做分享都是一次仔细梳理知识体系的过程,正所谓 learn by teaching,独乐乐不如众乐乐,而且每次分享还有几百块的讲课补贴拿,快哉!

总体来说,在腾讯工作是较为舒心的事情。

价值观与工作氛围

腾讯的价值观是「正直、进取、合作、创新」,「正直」摆在第一位。就我的 感受,鹅厂同事间的关系是比较简单与开明的,没有什么糟心的办公室政治,大家有什么问题就提出来一起解决。在鹅厂内网里,经常会有同事(大多通过匿名的方式)提出一些尖锐的问题,一般会得到大老板与相关方的关注与解答。部门 GM 也会定期举办茶会,交流近期部门发展方向与回答员工问题。

同行的衬托

腾讯的愿景是成为「最受尊敬的互联网企业」:

通过提升企业地位与品牌形象,使员工具有高度的企业荣誉感和自豪感,赢得员工尊敬;

这一点腾讯是做的十分优秀的,尤其是在与百度与阿里这些同一个梯队的公司作比较的时候,腾讯简直就是业界的一股清流:

  • 百度的狼性文化。
  • 百度的竞价医疗广告。
  • 百度的产品经理不考虑 CS 背景的候选人。
  • 阿里的强势 HRG 政委。
  • 阿里层出不穷的员工纠纷丑闻,如陈皓离职事件与月饼事件。
  • ......

总体来说,从工作环境与文化氛围的角度考虑,腾讯不失为一个「知行合一」的公司。

腾讯的不足

工程师文化缺失

工程师文化是一个很泛的概念。对于从事软件开发的公司来说,我认为工程师文化有如下的含义:

「做这件事情真的有价值吗?」,这句话是我周围同事的口头禅。在腾讯这一年里,我学到最重要的一件事情,就是要去做最有价值、最有影响力的工作。这点是十分好的,在做事情之前最好多问一下自己以下的问题:

  • 在现有资源(时间、人力)的限制下,做这件事情可以产出多大的价值?
  • 有没有更有影响力的方案?
  • 我能否拿到更多的资源?
  • 这个问题我想清楚了吗?决策是正确的吗?是否没有考虑到某些因素?

以解决问题为导向 这一点而言,我认为在方法论上,腾讯是很出色的,员工或多或少都知道当前的问题是什么,或是流程上的,或是业务上的。但由于激励机制的偏向性,使得待解决的问题有了不同的优先级。再而,由于资源上的制约,只能选择去解决优先级最高的、短期内价值最大的问题。

而腾讯,是一家以业务为导向的公司。这意味着,对于大多数部门而言,业务问题的优先级通常会高于工作效率、代码质量方面的问题。我认为,这里面更深层次的原因,是解决这两种问题在短期产出与长期产出上的差异:

问题短期产出长期产出
业务显著-
工作效率、代码质量不显著显著

对于大多数非核心部门而言,资源是非常有限的,业务问题都不一定能搞定,自然无法将资源投放在解决工作效率与代码质量的问题上。半年一次的 KPI 考评,促使员工选择去解决最能体现价值的业务问题。长期的收敛结果,是基础设施碎片化、野蛮化生长。

对于小公司而言,基础设施缺失的问题可以通过付费购买其他公司的服务的方式解决,比如代码托管可以上 GitHub、持续集成可以上 Travis CI、PaaS 可以上 AWS、CaaS 可以上 DaoCloud 等等。但是腾讯与小公司有本质的差别,出于信息安全方面的顾虑,无法信任公司外的服务供应商。加上严格的网络访问策略,基础设施的缺失所导致的问题尤为严重。通俗来讲,基本就像是带着脚镣去跳舞、在满是荆棘的路上追求 自由效率,难度可想而知。

具体的现象是:

  • 登录生产环境机器只能通过古老的 SecureCRT 来操作。大多数人使用古老的 sz/rz 程序完成开发环境与生产环境的文件传输。
  • 大多数部门的 DevOps 工具积累基本为零,测试发布基本通过人肉完成,没有持续集成流程。
  • 除了核心项目团队,基本没有人写 testcase,就更不用提 code review 了。
  • 基本不写项目文档,没有 wiki 的概念,知识传承基本靠口口相传。
  • 工作中充斥着大量繁琐的重复性劳动,工作效率低。由于雇主只会为一般劳动时间支付报酬,这意味这工作效率低的问题只能通过加班来解决。

这是一个典型的「elephant in the room」现象:大多数人都知道有这个问题,但基本上没有人会想去解决这个问题。

elephant-in-the-room.jpg

部门间割裂情况较为普遍

在腾讯里,每一个部门都是一个小公司,部门间通常只通过提供 Service 的方式来合作。出于信息安全方面的考虑,源代码是不共享的。这导致了以下的一些问题。

其一,每个部门都有一套自己的轮子,重复造轮子的情况严重。一个典型的例子是,手机 QQ 团队有一整套的持续集成工具链,但是其他部门并不能享受到这批现成的工具链,无奈之下只有自己造。这一点 Google 就做得很好,每种东西只做一件,然后推广全公司使用。

其二,由于文档方面的普遍质量问题,要使用其他部门的服务,通常需要去询问服务负责人了解具体细节。这导致了沟通成本的上升,使用方与服务提供方需要花费大量的时间去确认服务的相关细节。如果服务负责人有其他的优先级,使用方可能需要等待很长时间才能得到答复,或者根本得不到答复。记得有一次我想要试用数据平台部的 Docker 解决方案,按照文档死活走不通,询问相关负责人后就像石沉大海一般,一点动静都没有,无奈之下只能放弃。

其三,信息的不平等会导致信任问题。在腾讯,一个普遍的常识是,不要去信任其他部门提供的服务,永远假定其他部门提供的服务会出问题,做好 Plan B。不能说这种做法有问题,毕竟大家都被坑过,或多或少有一些 PTSD 的问题。

总结

以上的感受仅仅是我的主观感受,可能并不能反映腾讯的真实现状,毕竟部门与部门、组与组之间的差异巨大。

总体来说,腾讯是家好公司,是一家值得加入的公司。感谢同事在工作过程中的言传身教,让我在这一年中积累了一些好的做事方法与工作经验。

P.S. 关于本文的 V2EX 讨论:腾讯一年感受 - V2EX