洪强宁及其技术团队在网站架构、性能、可伸缩性上有着深入研究。他们始终致力于用技术改善人们的文化和生活品质,用自己的技术口味去传播分享更好的技术。
加入豆瓣
2005年初,阿北在啄木鸟社区发出豆瓣网上线的通知,那时洪强宁加入啄木鸟社区,并学习使用Python已经有三年时间了。
与同龄人相比,因为受学计算机的哥哥的影响,洪强宁上小学时就开始接触计算机,并且很早就有写程序的爱好,并确定了做软件研发工作的方向。在清华的开放实验室里(全国最早允许学生访问互联网的地方),洪强宁接触到了大量国外的网站和技术。那是“我技术能力成长最快的时间”,洪强宁说。大四时候,洪强宁开始了解Linux,学习和使用了后来在豆瓣广泛使用的Gentoo,由此对开源软件产生了浓厚的兴趣,并参与到一些开源项目中去。
清华毕业后,洪强宁一直做嵌入式系统。出于对软件开发的喜爱,他在2002年开始接触Python语言,但只是业余时间才用Python做一些东西。进入第二家公司后,洪强宁在负责新的项目技术选型时,完全采用了Python语言,并应用在嵌入式XP系统上。就这样他逐步完成了硬件工程师到软件工程师的转变,也让洪强宁对一种语言在计算机底层如何工作有了深入的理解,从此无论是工作还是业余项目都使用Python。
2004年8月啄木鸟社区开始运营,这是由黄冬发起的Python语言社区,同在社区里活跃的洪强宁,最终被寻找技术伙伴的阿北发现,经过几次沟通,洪强宁成为豆瓣第一位全职员工。
洪强宁评论这次经验时说,选择一种技术,其实也在被技术选择,进入到和自己有相同技术味儿的圈子。他评价之所以会和阿北共事,也是因为两人在技术口味上有相似的地方,比如同样热爱开源,喜欢Python和Gentoo等等。
除了Python以外,工作中还需要应用的其他技术,如数据库、缓存、分布式系统等等,这些都是洪强宁之前很少接触的,全部在工作中一边做一边学起来。
因为参与社区而加入豆瓣的洪强宁,也与社区一同成长,虽然作为话题参与者的机会减少了,但作为社区建设者的比重却在增加。进入豆瓣的员工很多也都是从Python社区而来,豆瓣也支持员工参与社区讨论,并组织了多次啄木鸟社区的线下活动,而且接管了社区服务器,以至在中国提到Python,几乎到了不能不提豆瓣的地步。可以说,豆瓣成为国内互联网使用Python语言的一面旗帜。
到豆瓣做改变
洪强宁来到豆瓣前,阿北已经形成了目前豆瓣整套的服务架构,并考虑了未来规模扩大后的影响。
那么洪强宁来到豆瓣之后将如何做呢?
除了负责系统平台、提供技术设施和保证系统运维外,洪强宁及其领导的团队,将阿北原有的架构体系中的所有部分都改造成分布式的,包括架构、数据库、缓存和应用服务器,并开发工具软件去简化管理和维护的问题。原有的技术选型,也不总是能满足不断增长的性能要求,MySQL对服务的支持存在问题,于是他们自己开发了Beans DB。最早使用的是单机服务器,还没有消息队列的概念,这也是后来才加入的。
就这样,豆瓣的改变一步步得以实现,并和技术创新一起持续着。
2007年11月13日,豆瓣用户达到一百万。洪强宁表示,那时压力的确很大,做技术的只有两三个人,大家总是跟在事件之后跑,还没有时间去考虑技术储备,常常是发生什么问题,就赶紧去查找原因,然后设计解决方案,熬夜成了家常便饭。随着公司的技术人员慢慢增多,特别是将分布式的架构实现后,这种紧张的状况才有了好转,洪强宁开始考虑一些未来的情况,比如用户量到达一定量级时数据库的改进。做Beans DB的想法就是那时提出来的。2008年开始设计、讨论,并在2009年部署到豆瓣的部分产品中了。
当被问到为何不在旧技术上做优化,而要提出新的解决方案时,洪强宁说,技术选型必须能满足需求,否则就是白谈。当若干技术方案都能满足需求时,豆瓣会采用集体决策的方式,大家一起讨论出结论,最后授予某个人去实现。并且在复杂和简单的技术之间,豆瓣倾向于选择后者,哪怕它不完美。Beans DB的作者Davis就是一个典型,他喜欢用极端简单的东西来解决技术问题。
早期架构的分布式转变完成后,洪强宁又遇到了未曾预想的变化。最为典型的是业务模式发生了很大转变,原来是主站,发展到后来包括社区、图书、电影、音乐四个相对分开的站点,导致开发方式也发生了很大的变化,团队面临很多网站需要开发维护的情况。洪强宁坦言,如何把以往的技术积累下来,转变成可适用于多个网站的技术产品,是目前摆在自己面前最核心的问题。
出于对豆瓣整体结构透彻的了解,洪强宁逐步走向技术管理者的岗位。他强调要发挥员工的主观能动性,而不是从上面压任务,让每个员工自己去发现什么是重要的,什么是应该做的,自己则更多担负起协调者的责任,给他们提供资源。正如他所欣赏的Linus Torvolds所言。“努力寻找可以信任的人,然后让他们放手去干……一旦我让某人负责维护某个项目,此人一定会拥有处理好日常事务的能力。”
员工的情况各有不同,如何保证人人都能自觉发挥工作中的能力呢?洪强宁解释说,他们把大量的精力放在招人上面,尽量使招进来的人是靠谱、愿意主动做事的。花大力气在招人上,带来的好处是可以省掉很多管理的琐事,只要让员工了解发展方向是怎样的、目标是怎样的。至于目标怎么完成,他自己会想办法找到最好的路径。
豆瓣气质
采访中,洪强宁提到一个词,“豆瓣气质”。
豆瓣招人的时候,无论笔试、面试,更多在考察这个人,第一技术基础是不是扎实;第二对于问题思考是否敏捷;第三除了职业修养,还包括对生活本身是否有热情,是否有奉献和共享的精神。所有这些都归结成一点,是否具有“豆瓣气质”。
如何描述这样一种气质呢?
洪强宁说,在豆瓣工作的人,不是说为谋生找了一份工作,写段代码拿工资回家吃饭,而要有追求和理想。而他自己无疑是具有豆瓣气质的典型,这正是如此,洪强宁身边聚合一群热爱技术和生活的人,他们始终致力于用技术改善人们的文化和生活品质,用自己的技术口味去传播分享更好的技术,推动中国互联网的发展。
本文选自《程序员》杂志2011年07期,更多精彩内容敬请关注07期杂志