腾讯暑期夏令营之旅
2013.8.22 — 8.24 三天时间,我参加了腾讯暑期夏令营。这几天里腾讯为同学们准备了一系列的讲座和实践活动,收获很大。不仅腾讯的几个主营业务都有所涉及,而且讲座的水平也很高,所传达的信息很丰富,为我们从内部视角了解腾讯建立了一个渠道。
首先是腾讯 TEG(技术工程事业群)的 BOSS 王巨宏的总体介绍。第一,他传达了一种「以人为本」的核心设计理念。他说,要做产品,就要做到最好,互联网产品只有第一没有第二,我们要把产品做到自己感动得哭。同时,市场上许多产品的功能和用途都是类似的,如何防止被模仿?答案是:把产品做到极致。第二,毫无疑问,未来 IT 业发展的方向是移动互联网。第三,腾讯之所以把产品线做得很广,是希望占领市场,增加用户黏度,因为公司的产品不形成闭环,就容易受损。例如,腾讯的电商部门是赔钱的,但是腾讯坚决要做,就是处于这种原因。用王老师的比喻就是,自己的钱不经过自己的手进入自己的口袋,怎么能安心呢?
在接下来的几天时间里,我还分别听取了关于基础架构、游戏、微云和社交网络以及创新思维和微信方面的报告。
基础架构
介绍基础架构(Cloud Foundation)的专家是庄泗华。他简单介绍了腾讯「内部云」的必要性和原理。现在腾讯的产品线非常长,也非常复杂。许多产品有一些代码都是完全相似或者相同的,因此可以提取这些逻辑的共同点,简化开发流程,避免重复劳动。同时,借助腾讯的内部云,很多工作不再需要开发人员手工完成,开发、调度、修改的的成本也会大大降低,有助于提高开发效率,节省人力成本。
游戏
介绍游戏的专家是互动娱乐研发部的总经理聂志明。他以《深入浅出谈游戏》为题,简要介绍了开发一款游戏所面临的挑战和要解决的问题。实际上,一款游戏的运营除了表面的游戏内容以外,还有许多其他至关重要的因素,比如稳定性、性能、防外挂考虑等。
第一,为了保证稳定性,我们需要使用良好、易扩展的程序结构、尽量使用多线程,同时配备重建数据、恢复信息的能力。
第二,为了保证性能,我们需要同时提高客户端、服务器、数据库以及网络同步的能力;而这其中就涉及了减少阻塞调用(采取异步方式)、过载保护(排队系统)、减少内存拷贝、使用合适的架构等多种问题和技术。
第三,对于外挂,国内外挂有时可以决定产品命运,因此必须特别采取措施。比如,让大部分游戏逻辑在服务器端判断,客户端只是呈现,或者同步逻辑里加入对累计时间误差的控制,等等。
微云
接下来是欧阳老师关于微云的介绍。现在云存储还是一个很新兴的市场,虽然技术已经比较成熟,但是数据显示,国内使用云存储的用户只有不到 9%,因此还有很大的拓展空间。也正是因为这一点,各大厂商都在绞尽脑汁地开发和互相借鉴各种功能,导致云存储服务同质化比较严重。目前许多厂商都在「拼容量」,例如 360 推出了一个 360G 的盘,百度又推出了一个 T 盘(1T 容量),形势瞬息万变。
但是,腾讯对于盲目扩增容量是谨慎的。欧阳老师主要探讨的就是,云的容量到底有多重要;如果盲目扩大容量,可能影响其他正常使用的用户的体验。然而,用户对云服务的忠诚度是很低的,这又迫使服务提供商想办法去增加用户粘性,吸引用户。实际上并非单纯免费、容量大就可以抓住用户,我们需要做的是挖掘用户的实际诉求。
社交网络
然后是腾讯的专家研究员岳亚丁,来和我们探讨关于社交网络。他的报告分类简单,问题突出,短时间内使我们对社交网络相关的算法,以及面临的挑战有了一个初步认识,把该抛出的问题都抛出了,说的靠谱。
社交网络的分析向来是最复杂的一个部分,涉及到许多技术点,比如社区发现,LBSN,个性推荐,大数据处理等。充分应用这些技术,可以预测用户场景和行为,计算用户的社会属性;同时还可以识别滥用和恶意注册(虽然行为容易伪造,但是社会关系和沟通不易伪造)。同时,这一领域也存在许多挑战,例如用于大数据的高扩展性算法、数据预处理、如何构建特征(select feature)等等,这些都是机器学习领域的难题。因为时间关系不可能说的特别详细,但是起到了一个很好的启蒙作用,为我们的继续研究和学习提供了一个基础。
微信背后的故事
最后在广州,我们听取了微信产品部助理总经理刘乐君带给我们的主题演讲《微信背后的故事》。他为我们完整地展现了一个产品的研发流程:从最初的 15 人团队、历经 2 个月做出产品,到 1 年发布了 44 个版本、433 天获得一亿用户,再到两亿用户、100 人团队,呈现出了一个奋斗、发展、学习转变的路程。
一个团队包含很多个角色,比如产品经理、程序经理,还有交互设计师、视觉设计师,以及架构师、开发、运维、测试工程师等等。这些人员典型的日常行为,以及如何配合,他都从产品开发的角度进行了详细的介绍。最后,刘老师从团队的高度,和我们分享了提高团队效率的方法和技巧。
学长学姐谈经验
此外,22日下午腾讯还邀请了入职一段时间的「学长学姐」,来和我们交流工作经验。大家提问非常积极踊跃,从实习到工作,从经验到技巧,无一不包。给我印象最深刻的有如下几点:
第一,要想得到赏识,就要超过预期。腾讯的技术人员是分等级的,比如 T1, T2 等。刚入职的一般是 T1-1,但是有的毕业生一来就能达到 T1-2,这就是因为他们在实习的时候表现突出,超出了领导的期望。
第二,面对竞争,要学会扬长避短。每个职位和工作对于各种能力的要求都是有偏向的,要主动地发挥自己的长处。
第三,对于一份工作,不要先下结论自己喜欢不喜欢,要先试着去爱。先认真做过再确定自己是不是热爱。也不要羡慕他人有多牛,多么有成就,该有的都会有的,做好自己就行了。年轻的时候要多多尝试,年轻不怕失败,建立自己的核心竞争力。
第四,腾讯的工作氛围是比较轻松的,内部转部门也相对比较容易,言论相对也比较自由一些(据说有的公司员工经常在年终评中「企业文化理解」部分被莫名其妙地扣分Orz)。
模拟产品研发
除了讲座,我们还开展了一些其他有意思的活动,其中收获最大的就是模拟产品研发流程。
在活动开始,负责人先给我们讲清了活动的任务和目标:每个团队有 15 人,需要在一小时时间内给 QQ 邮箱开发一个新功能,并且完成功能说明、开发进度、人员分配等计划。过程中有 QQ 邮箱的产品研发团队进行观察(和少量指导),汇报时由他们和其他同学进行提问。活动进行时,大家的热情和参与度都非常高。
我们队的做法是,首先头脑风暴,集思广益,每个人都说一说自己对于 QQ 邮箱的改进建议。然后,我们把这些建议汇总起来,再分别讨论每个功能建议的可行性,选出最有代表性的一个,再针对这个功能制定详细的方案。整个过程井井有条,分工明确,有专门负责计时的同学和记录的同学,同时每个人都会发表自己的观点。评委对于这种高效、积极的合作和井井有条的思考方式给予了肯定和表扬。虽然只有一个小时,不过瘾,但是大家体验了一把产品经理的感觉,对于以后的工作和学习增添了一丝向往之情。
当然,主要的收获还是来自评委点评,这个环节类似于一次群面。
第一,活动重在过程,而非结果。得出新奇的观点必然很好,但是这并不容易。我们更需要把握的是切入点,如何切中要害,切入用户的痛点,这是关键。
第二,需要精准的定位分析。开发一个新功能,必须很好地抓准目标用户,涉及的功能最好是用户的强需求,这样才能有力地促使他们去使用。不一定要考虑大而全,不能为了创新而去创新。
第三,表达的艺术。都说,善于表达的程序员才可能成为伟大的程序员,有想法固然重要,但是把它清晰地表述出来才能让你的想法成为现实。这要求团队内成员观点一致,起码不要互相打断。此外,在讨论的时候,不能盲目地为了反驳而反驳,产品功能的讨论不是辩论会或者市场推销,要先去考虑对方观点的合理性。
第四,团队,既然是团队合作,每个同学都必须发表自己的意见,参与讨论和思考。一个团队最忌讳的就是有些成员随波逐流,只做事不表态。这类成员称为团队的「鸡肋」——虽然有一些用处,但对团队攻克问题并没有任何好处。