在QQ邮箱工作的这四年

恍惚间已经工作了四年有余,很幸运刚毕业就遇到一个很好的锻炼机会,05年7月份刚成立的腾讯广州研发中心,主要负责腾讯的邮箱业务,我是在06年2月份加入到这个团队,也算是见证了QQ邮箱的整段发展经历。有些记忆隔的太久,可能时间和细节上不太准确,尽量去回忆吧。

写这个系列的文章也是对自己过去四年工作的一次回顾和总结,我会结合自己的经历和感受来写,视角不会太开阔,用平铺直叙的方式吧,就像讲故事,我是一个没有太多故事 但却喜欢讲故事的人:)

也许大家都听说过腾讯做邮箱的那段往事吧,创业团队太自信了,觉得把邮箱放到客户端上依赖QQ巨大的用户 量自然就会成功,但是结果却恰恰相反,纠正错误认识,在04年紧急做了QQ邮箱的web版,也就是QQMail2.0版本,这个版本明显过于仓促,和网易 等其他邮箱应用相比,差距很大。腾讯在05年中旬收购了foxmail及其团队,成立了广州研发团队,主要负责QQ邮箱的开发和运营。很明显,公司非常重 视邮件这一块,也基本承认了之前的判断错误,所以打算下大力气做好邮箱业务,这为之后QQ邮箱能够取得优异成绩奠定了政策基调。

在 计算机软件领域,一款成功的产品背后一般都会有一个明星人物,QQ邮箱也不例外。QQ邮箱的这个关键人物大家应该也都知道,他就是foxmail的作者张 小龙。09年赖勇浩同学在一次技术交流中谈过他心目中的几个国内顶尖程序员和其成功的软件作品,有求伯君和wps,有鲍岳桥和ucdos3,有王江民和 kv100,有梁肇新和超级解霸3,有张小龙和foxmail,有侯延堂和flashget等等。小龙被认为是国内第二代程序员中的领军人物,他曾经是国 内顶尖的程序员,然而他在QQ邮箱的整个发展过程中不是以技术人员的身份在指导,如果要用一个最合适的身份来形容他,我觉得是产品经理。小龙曾经在内部发 表过一篇文章,这篇文章讲述了他对互联网团队管理的一些观点,他认为互联网团队中的管理不是管人,而是管理产品体验,以产品体验为核心,产品设计和开发人 员与产品共同提升,共同进步。小龙之于QQ邮箱的影响正如乔布斯之于苹果的影响。

QQ邮箱3.0版应该是广研自主研发的第一款邮 箱产品,2.3版是从总部继承过来的,3.0版的后台很多代码也是从2.3版继承过来的。3.0版的UI有点像hotmail和outlook的综合体, 思路很明显,把邮件客户端做到web上面,做一个富客户端的邮件应用服务。当时国内的邮件应用第一梯队是网易和雅虎中国(中国雅虎是之后的事情),第二梯 队的是新浪、搜狐、tom在线、21cn等门户,第三梯队是一些独立的邮件服务商。当时大家经常上艾瑞网看排名,QQ邮箱当时排名在12左右,还进入不了 前三梯队,市占率低到可以忽略。当时的目标是在一两年内进入第二梯队,我想,如果当时确定目标是超越网易成为国内第一,估计是没人相信的,包括我们自己。

3.0 版是广研的处女作,投入了全部的人力物力,采用了当时业界最先进的技术方案和最好的UI设计,并且创新的采用outlook的三栏结构,很像邮件客户端, 这是一次软件服务化的尝试。

我是06年2月份加入广研,当时3.0已经渡过了最繁忙的开发阶段,进入了小范围的公测阶段,用户可 以在2.3版和3.0版之间切换。3.0版的集中开发大概是半年多时间,05年中旬广研招兵买马的时候,大部分人没有邮箱产品的相关开发经验,当时是在摸 索中前进。然而,当时的团队却采用了业界最先进的ajax技术架构,当时的javascript代码有很重的面向对象的味道,用传统的软件工程思想构建了 整个web框架,从软件的开发流程来说,这并没有什么问题,但是产品却有很大的问题出现了–慢,不是一般的慢,当时除了较快的电信网用户可以登陆进邮箱 之外,其他的用户基本上都被卡在登陆上。06年的大部分时间,整个团队都在解决速度慢的问题,尝试了很多方法,把js容量压缩掉了一半,js混淆之后又压 缩了很多,js文件分开为多个,但始终没有根本的转变,速度的提升仍然不能被用户接受。现在回过头分析这个问题,我觉得物理上的压缩和分割js文件之所以 解决不了问题是因为问题的根本在于js的逻辑架构上,当时的js有明显的基类和继承类结构体系,这种结构并不适合物理上的分割,即使分割开,渲染消耗的时 间是节省不下来的。

3.0版的后台基本上是继承的代码和开源代码的综合。最重要的邮件投递模块采用的是当时最好的投递引擎 postfix,web端采用的是apache。邮件存储是简单的单文件存储方式,用户数据存储也是比较简单的,帐号和邮件列表是合并存储在一起的。这个 架构对于支撑当时的用户规模是足够的。

06年之前广研在做QQ邮箱开发和运营的人数是比较少的,所以06年吸纳了不少的毕业生, 我就是第一批广研接收毕业生中的一员,当时3.0版的主要开发人员集中在两个小组:QQMail小组和系统架构组,从名字上看,应该是QQMail小组负 责产品层面的开发,系统架构组负责后台架构的研究和开发,不过我当时感觉两个组差别并不大,都是在做产品开发,都同时做前台后台,可能是人手紧张的缘故 吧。QQMail小组除了做产品开发之外,还负责产品的运营工作,人数上稍微多一些。我加入的是QQMail小组,最初是以实习生身份参与到3.0的开发 中,工作任务比较杂,写一些cgi,做一些内部系统和统计的工作,其余的大部分时间是在读代码,也就是上面提到的那些js代码,后台代码和cgi的代码。 这近三个月时间是我有史以来精力最旺盛的一个阶段了,把所有的代码梳理了一次,写了好几本笔记,现在回忆起来觉得真是太不可思议了。

QQMail 小组当时的组长是ted,系统架构组的组长是harvey,两位老大对我的影响都很大,我后来分别在两位老大麾下做了两年,从两位老大身上学到很多东西, 他们也给了我很多锻炼的机会。

ted老大当时主要负责QQ邮箱的产品开发运营方面的管理,在我进组之后,当时的3.0已经过了集 中开发阶段,开始进入优化阶段,对运营质量提出了更高的要求,当时整个QQ邮箱的运营只有一个粗糙的数据统计系统和一个nagios系统,数据的收集和统 计的方法比较简单,cgi写日志然后收集起来之后再运用shell统计入库,甚至数据的页面表现也是shell做的。ted安排aoger为我的导师,我 跟着aoger边熟悉系统边做一些数据统计方面的尝试,偶尔也会写一些产品cgi。aoger是一位相当有耐心的导师,尤其是面对我这种打破沙锅问到底类 型的学生,aoger在最初给了我最多的帮助,没有aoger的帮助,我不太可能在3个月理清整个QQ邮箱的架构。aoger解答不了的问题,他会推荐更 合适的同事给我,不过我比较取巧,遇到这种情况一般就去问ted老大了:)也正是在这些和ted老大的问答过程中,增加了彼此的了解,这为以后ted能够 不失时机的给我最恰当的尝试机会奠定了基础,不过最重要的还是ted的信任。

跟着aoger先后做了运营监控系统和一些相关的统 计系统之后,ted给了我第一个机会独立完成一个系统,那就是广研的业务数据系统,这个系统包括数据的收集、整理分析、报表展示和数据波动报警等功能,这 个系统至今仍然在使用,后台架构也基本没有什么改变,我在做这个系统的过程中,熟练掌握了两门新的语言:shell和python,熟练的程度足够我运用 任何一门语言做整一个系统。在shell编程方面,很感谢felix的帮助,在python方面,很感谢vincent的推荐和帮助。两位都是领域内的高 手,对编程语言的运用驾轻就熟。shell帮我在数据收集的自动化方面做到炉火纯青,收集、纠错和报警一条龙,而且代码相当干净,值得反复阅读(请允许我 陶醉一下);python是一门我非常喜欢的编程语言,让我痴迷了2年,甚至在去年还阅读了一些剖析python源码的书籍,我主要用python做内部 系统的表现网站,报表、图标、趋势图无所不能,而我最满意的是用python设计实现了一个轻量的模板语言,这个语言帮助我通过简单的配置就可以做出一个 统计页面的表现和数据提取,非常方便,现在还有同事在使用这个模板语言,代码也是相当干净(我又陶醉了)。

一个合格的程序员不会 满足于做重复的事情,虽然后续接了不少的内部系统开发,本来都是可以简单的拷贝前一个系统修改一下就了事的,不过我把每一个系统都做的不一样,每个系统都 要有至少一个新亮点,ted后来觉得我有点过于埋醉于技术疏于组织方面的锻炼是有证据的。不过ted还是很信任我,陆续又让我参与到产品层面的开发中,这 次我又几乎独立完成了QQ邮箱的自助服务系统,包括faq及其查询、最近登陆记录查询、最近收发信查询和最近删信查询等若干辅助用户查询的功能。这是我首 次做后台服务,后来这个服务相当稳定,其后台就成为了发信状态查询的后台,现在仍然在运转着。也正是由于这个发信状态查询服务的成绩,小龙把我调到了架构 组参与到阅读空间的开发中去,虽然那个服务是我自己认为做的最差的一个服务,但是却有很大的意义。这也验证了互联网开发是结果驱动而非过程驱动的一个实 证。

虽然06年的我得到了很多的锻炼的机会,做出了一些成绩,但是QQ邮箱这个时候仍然徘徊在速度和功能的博弈中,当时公司内部 在进行hummer计划,广研这边除了QQ邮箱之外,要另外做一个hummermail,架构组为此把后台的架构进行了一次彻底的重构,把用户数据存储模 块做成了一个通用性更好的存储服务,事实证明,这个存储服务成为了广研最核心的一个服务,支撑着绝大多数体验的数据存储;把帐号信息独立出来做成一个新的 帐号系统;由于新邮件提醒的重要性,特别为邮件提醒做了一套后台,实现实时稳定的邮件提醒功能。这次重构虽然没能挽救3.0的失败和hummermail 的流产(后话了),但是却成为全新版本QQ邮箱的最核心后台,相当了不起的一次重构,足以载入史册。

至于3.0版的失败,那是一 个更惊心动魄的历程,凤凰涅盘,浴火重生。

来源:249553920.qzone.qq.com/blog/

时间: 2024-11-01 18:26:52

在QQ邮箱工作的这四年的相关文章

让你的QQ邮箱更整洁的小经验

QQ邮箱是越来越大,大量的无用邮件将降低我们使用邮箱的方便性,所以除了定期清理邮箱外,利用邮箱的设置,使其更整洁有序是使我们更方便的一个好方法.下面介绍一下我的经验. 首先解决的是垃圾邮件问题. 看看我的垃圾邮件,这还是过一段时间清理一下的结果呢. 究其原因是因为网络垃圾邮件太多,并且利用QQ号码的顺序性很轻松就能发送垃圾邮件.当然屏蔽这些邮件的第一个防火墙是邮箱的提供者,然后便是收到垃圾邮件之后各位使用者的操作了. 在"收件箱"收到垃圾邮件后,一定不要着急删除,先点开信件,如图红色框

用QQ邮箱快速把日志发到QQ空间上

大家知道Google的Blogger.com可以通过发送邮件功能来写博客.最近笔者发现QQ空间已经支持这样的功能,而且还能对文章分类. 第一步:打开QQ,点击面板上的QQ信封按钮,打开自己的QQ邮箱.如图一所示: 在QQ邮箱中点击"写信"按钮,在通讯录中会看到一个"发表到我的QZone"的最近联系人.如图二所示,点击之后把这个地址放到自己的收件人地址中.其实这个地址就是自己的QQ号加上一个qzone.qq.com地址.即自己的qq号@qzone.qq.com 第二步

QQ邮箱附件预览功能评测

所谓邮件附件预览,即不用下载邮件中的附件,通过web页面,以在线的方式就可读取其中的内容;此功能在很多时候极大的方便了没有安装相应软件的用户,对于异地登录邮箱用户,更是一项不错的服务.不过,谈到邮箱附件预览,在2010年,网易邮箱已经实现,并全面在旗下个人邮箱产品铺开,申请开通即可体验.如今,QQ邮箱亦开放了此项功能,接下来我们就体验一下,QQ邮箱的附件在线预览功能到底如何? 测试文档类型: 从下图可以看出来,在附件区域,与以往相比,多了一个"附件预览"的按钮,并且在每一个附件的下方都

网易闪电邮怎么样设置qq邮箱?

  不少网友都在使用网易闪电邮这款邮箱,不过,也有不少网友的日常工作中也使用QQ邮箱,如果可以设置一下,让网易闪电邮也可以接收个发送QQ邮箱的邮件的话,那就方便多了.那么,网易闪电邮怎么样设置qq邮箱?一起来看看今天的教程就知道了! QQ邮箱 首先,必须进入网页版QQ邮箱,开启POP.IMAP服务,如首图,那么,什么是IMAP服务?该如何开启呢? IMAP服务类似于POP:允许别的邮箱关联QQ邮箱,但是在邮件客户端的操作,是反映不到网页上的; 而IMAP可以将邮件客户端的操作,同步到网页上--就

QQ邮箱删除的邮件恢复方法

给各位QQ软件的用户们来详细的解析分享一下QQ邮箱删除的邮件恢复的方法. 方法分享: 步骤一:如果删除了邮件,不管是普通删除还是彻底删除,都可以在几秒钟之内选择撤销操作,这样可以恢复之前的一个误删除的邮件.即在刚删除邮件后,在上方的提示已删除后面点击撤销即可,如果该提示信息没了就无法撤销恢复邮件了.   步骤二:如果是普通的删除,可以在邮箱首页左侧点击"已删除",然后找到想恢复的邮件,在该邮件前面点击勾选框.   步骤三:然后在邮件上面点击移动,选择移动到收件箱.已发送或者其它的文件夹

qq-QQ登录授权第三方应用之后,怎么进入QQ邮箱,用授权的 QQ openid ,不能直接登录邮箱吗

问题描述 QQ登录授权第三方应用之后,怎么进入QQ邮箱,用授权的 QQ openid ,不能直接登录邮箱吗 QQ登录授权第三方应用之后,怎么进入QQ邮箱,用授权的 QQ openid ,不能直接登录邮箱吗 解决方案 只授权给了第三方应用 不能拿来使用邮箱 解决方案二: 我通过授权获取到的QQ open id, 能一键登录与邮箱么 解决方案三: 只授权给了第三方应用 不能拿来使用邮箱 解决方案四: 只授权给了第三方应用 不能拿来使用邮箱 解决方案五: QQ邮箱一键登录呢.

登录 授权 第三方帐号-QQ授权登陆后,网站如何提取QQ号,QQ邮箱信息?

问题描述 QQ授权登陆后,网站如何提取QQ号,QQ邮箱信息? QQ授权登陆后,网站如何提取QQ号,QQ邮箱信息,用来新注册一个帐号 解决方案 这2个获取不到,只能获取"昵称.头像.性别 ",QQ会员的基本信息 ,QQ会员的高级信息,获取用户QQ空间相册列表等信息需要申请. 看这个:http://wiki.open.qq.com/wiki/website/API%E5%88%97%E8%A1%A8 解决方案二: 与这个QQ对应的唯一标识就是openid,你可以再让用户补全其他信息 解决方

图片-HTML 怎么实现类似QQ邮箱中右边 通讯录 下拉条效果..

问题描述 HTML 怎么实现类似QQ邮箱中右边 通讯录 下拉条效果.. 新手提问..就是类似这样有个下拉条的..我想不通DIV标签是怎么实现的 解决方案 这个简单,你直接打开qq邮箱,然后打开IE F12,照着抄就可以了. 解决方案二: 不就是个treeview么......... 解决方案三: ...哦.刚找到了overflow: scroll就可以: - =还是谢谢了 解决方案四: scroll的css

asp.net 使用qq邮箱发邮件,开启smtp多了个授权码应该怎么用

问题描述 以前只需要提供邮件服务主机名称发送人邮箱帐号密码就可以了,现在QQ邮箱开启smtp多了个授权码,应该怎样使用 解决方案 解决方案二:你增加了一个单独的访问密码?解决方案三:引用1楼qianguohua的回复: 你增加了一个单独的访问密码? 没加单独访问密码只是开启smtp的时候多了个授权码解决方案四:没什么影响吧,我的QQ邮箱一直是独立密码解决方案五:QQ邮箱没法用了!一直提示命令顺序不正确.服务器响应为:Error:needEHLOandAUTHfirst!解决方案六:他说的授权码应