跳转到路径导航栏
跳转到正文内容

豆瓣网解彦博:好钢用在刀刃上

http://www.sina.com.cn  2011年08月01日 14:39  CSDN

  【CSDN报道】7月9日下午,CSDN TUP第十一期“架构师沙龙——互联网研发之道”在中国科学院计算技术研究所一层报告厅举行,本次活动邀请了业内研发实力很强的腾讯和豆瓣的嘉宾来分享互联网产品研发经验,业界超过300名技术管理者来到了现场。腾讯搜索运营部研发管理总监黎娟,腾讯R&D项目总监王晶,腾讯宠物客户端主程序、高级软件工程师黄朝兴,豆瓣网技术总监耿新跃,豆瓣网QA主管解彦博发表了精彩演讲。

豆瓣网QA主管解彦博 豆瓣网QA主管解彦博

  以下是豆瓣网QA主管解彦博的演讲实录(仅供参考):

  感谢大家今天到这里来,首先我先声明一下豆瓣的一些经验,开发经验是自己摸索出来的,我想说的是豆瓣是一个非典型公司尤其在国内,可能有些经验对你们有用,有些没有用。在演讲过程中谁有问题请直接举手提问。

  我今天演讲题目是好钢用在刀刃上,回顾一下豆瓣在这些年发展过程,我觉得我们之所以能够在比较少人气下实现豆瓣所有功能做得相对还算不错,非常重要一个原因是我们一直保持一种创业公司的团队文化、工作方法。所以我今天想跟大家分享的是如何把我们最好的优势以最大的精力放在应该做的事情上。

  开发过程,这个事我也没有真正研究过,我想英国维基百科上,我看了一大废话,软件开发过程是开发软件的过程,我找了中文的说软件开发是根据用户要求建造出软件产品开发的过程, 这两个哪个好一点?豆瓣开发是在有限人力资源下按照网站需要开发的过程,豆瓣一直到现在虽然我们也出了一些手持设备应用,但是从基本上所有应用都需要联在网上,还是一个互联网公司。互联网公司最重要一个特制是快,需求变化也快,上线也快,产品经理天天追你,工程完成没有,今天能不能上,但是豆瓣有另外一个问题,我们人员相对比较少,是因为我们经营一些技术还有说我们一些想法理念,在后面会谈到。

  所以,我们总结了一下,我认为这个豆瓣开发部门文化,创业团队的文化我觉得有两点特别重要,所以我想分享一下一个就是效率,我们非常坚持效率,不管是工作效率还是开发效率,这个是非常重要的,因为会直接影响到你的效率。另外是团队热忱,创业团队,开发一个东西的时候什么时候是最有效率,什么时候产出率生产出来代码好,自己一个人有一个特别好的点子刚想出来熬夜做出来,这个时候你的工作效率是特别高的,最后豆瓣反映在创业团队里面就是热情,如果没有热情不能一直非常高效的开发工作。

  说到效率豆瓣有一些经验是非典型的,比如说第一个我们选择用python这个语言,愿意就是大蟒蛇,这个高级语言对我们来说其实是有利有弊,首先它的语法是类函数式编成混合,很符合开发人员胃口,想这样做就这样做,那样做就那样做,两个都支持,都可以考虑,另外是脚本语言,腾讯说到上线过程中要有专门服务器,我们不需要对准服务器,我们是脚本上去以后我们就可以直接跑了,但是也有一些弊端,是高级语言是动态化,带来一些非常难解决的问题,在运营过程中某些问题才能体现出来,我们发现已经非常常见问题,循环进入,但是当你代码规模越来越大的时候,之间交互关系特别复杂,一旦没有控制好模块,我引用你,你引用我,跑的时候逻辑不是这么简单,涉及三四个模块,人没有发现这个循环,上线跑程序直接就不行了,这个是很要命的,我们也做了一些工作,还没有解决这个也是我们需要解决的问题。中国有一个很活跃的python圈子,python语言用于web是非常好的选择。

  说一些实际例子我们看一看实际怎么用的,这里面一个任务是一个交互式直行页面,python非常大的优势是可以交互式执行,在交互式可以直接用一条,这个文件前面出现第一个提示符做了一大堆工作,把所有豆瓣网站代码都已经启动起来,可以无缝调用代码,做一些调试,运维工作特别重要,因为有些工作比如说我把某一个有问题缓存清理掉,有一个人什么东西丢了,我查一下看看具体后台数据有没有,这些工作是用代码里面的某一行调一下就知道了,这个东西节省我们大量时间。

  MC是我们内部用的一个访问缓存系统标准接口,后面可以把这个页面取出来,这里面也涉及到python另外一个优点,高级语言优势在这儿显示出来。另外一个节省时间python是一个非常有历史语言,出现时间跟Java是一样,这些年发展过程中有第三方人写一些非常好的代码功能,我们是可以直接拿出来用,这个是豆瓣代码里面截取出来,上面三行PL是美国一家公司开发处理图象的一个软件包,我把某个图片调一下透明度,下面可以给某个图片加上一个水印,这两个简单功能有这些第三方工具支持下可以很容易的写出来了。

  另外一个非常重要的高效率的方式我认为也是创业公司,并不是说特别注重我们现在每个团队都是创业团队,我们做任何事情并不是说把这个东西限制死,我现在上线系统启动起来,有一个专门做这个上线事,我们发布一个上线流程,最后大家都来批单子,豆瓣是说有需要上线事物过来跟我说,我们相信内部沟通比烦琐过程更有效,尤其是豆瓣人数并不多的情况下,我不是攻击其他大公司,我相信人数到一定数量的时候有一些必要的流程是要走的。看一下开发流程,对于一个开发者来说基本上这些东西都是每天每个星期都要接触的,要做一个事情,今天我要给图书频道加一个新功能,程序员把程序主干搞出一份作为分支,生出一个新的小芽,这样的话,不管我提交跟其他代码不影响,剩下就是开发,改程序提交,测试,甚至把其他人拉过来,工程师有没有时间帮我测一侧,这些事都做完以后,剩下最没技术含量上线工作。

  但是这个开发流程并不是唯一的流程,我们流程随时是可以拿掉的,可以看一下这个,作为一个很常见情况要预测所有事情有可能出问题,包括硬盘我们觉得用几年没有问题,到机房一百台机器基本上每天都有硬盘坏,比如说紧急上线我出问题,导致上线上人完全不可用,用了以后会有各式各样的问题,这种时候要紧急上线,出了一个问题赶紧修,两分钟修完了,大家看看修的有没有问题,没有问题,马上帮你上这个就是过程,可以说一个例子,星期五有一次紧急上线,这次上线是四分钟,发现问题,到修改,最后所有都完毕,这个能力是非常重要的,因为作为一个互联网公司我们保留一个传统,带来一个问题不可能把所有大的都在前期解决掉,因为现在要维护产品也是非常多的,在所有这些每天都会有代码提交情况下,要保障完全覆盖两个测试中心每个公司都做不到,我们允许出现问题,所以上线的时候大家要在那盯着,一出问题上线工程师直接把上线过程暂停,谁谁出问题了赶紧修,这个是非常好的办法,如果我没计错是从Facebook学来的。

  把上线流程详细说一下,实际上后面还是有正常环节下还是有很多工作要做,比如说开发以后首先代码要复审,在开发过程中每天团队要看看这个代码怎么样,复审过程中图片上看到一大堆人对你的代码指指划划,团队复审是促进团队交流系统越来越大,里面架构,各种需要注意的地方越来越多,这个事情并不是每个人都能意识到,尤其是对于新加入豆瓣的员工,通过代码复审,尤其是新员工入职前保证基础开发知识,代码规范在团队内进行良好沟通,包括团队内部也是每个人做不同事情,做这个产品我之前没有接触,如果没有代码复审团队内部交流,虽然在同一个团队工作对某一些代码是不清楚的。

  测试在豆瓣也有非典型,测试这个活由开发测试时工程师共同复杂,单元测试,web测试,所有这些东西开发工程师必须了解,学习,必须使用,这个过程中为了提过效率有一些自动化系统帮助工程师做这个事情。一个最重要目的就是说测试并不是由软件质量代码质量并不是由测试工程师决定,这个工程师起到事后弥补作用,代码质量源头是开发工程师,没有对测试美的追求的话,可能写不出好的代码,应付一下今天要上,赶紧拷贝粘贴。所以我们希望每个人都有质量意识,有了前面这些东西以后,对于豆瓣来说工具是一个很大程度提高工作效率一种手段,工具包括很多方面,豆瓣我们可以看一下这几个例子,交互式执行,有些东西是不适合我们做,有些东西虽然不是上线给用户用,但是也是一长段代码,tools有大量上百个脚本是以往留下来,这些脚本实际上我认为凝结前人一些智慧知识,比如说我下来要发一些信,考虑我从头写,学习一下豆瓣内部怎么发邮件,有了tools有人会告诉新员工不用,搜一下,搜一下就可以发现很多版本,每个代码是经过很多人验证的,在线上运行很久是经过实践的经验。

上一页 1 2 下一页

> 相关专题:

分享到:

新浪简介About Sina广告服务联系我们招聘信息网站律师SINA English会员注册产品答疑┊Copyright © 1996-2011 SINA Corporation, All Rights Reserved

新浪公司 版权所有