写点什么

QCon 讲师对对碰——洪小军采访梁宇鹏:就是爱 Golang

  • 2015-04-12
  • 本文字数:3182 字

    阅读完需:约 10 分钟

编者按: QCon 北京 2015 将于 4 月 23 日~25 日在北京国际会议中心召开。在大会开始之前,InfoQ 推出了讲师对对碰栏目,邀请一些技术专家相互采访,碰撞出思维的火花。在 QCon 上,美图架构平台部门负责人洪小军将分享《美拍后端技术演进》,环信首席架构师梁宇鹏将分享《指数级增长业务下的服务架构改造》。今天我们推出的是洪小军对梁宇鹏的采访。以下为正文:

洪小军:前段时间你在微博上发表的《自组织是不是团队管理的乌托邦》,反响很大。你们内部已经朝这方面做了么?能不能跟我们分享一下经验?

梁宇鹏:现在也只是摸索,经验还谈不上。主要是跟大家分享一下这个理念,加上我这几年在不同团队中的一些思考和总结。

我们很多时候都说,做程序员最大的乐趣,在于自己的代码有一天可以改变世界。或者说,它们每一天都在改变着这个世界。我相信并且觉得可以做到,我们的精力集中在这个地方,而不是扯皮和争执、懈怠和驱赶上。这些问题很多时候会以大公司病的方式暴露出来,但还是有很多更深层次的问题。我更倾向于认为,这是一个主动性和能动性的问题。自组织看起来是个不错的解决方案。

自组织的一些实践组织和注意事项,在那篇文章已有讨论,这里不再赘述。我想强调的一点是,实现自组织的基础,是我们觉得它可能实现,但只有方向是不够的,我们还要找到一条路。这条路上可能有很多实验,既然是实验,就要有失败的心理准备。这也是我写文章的主要目的。

比起成功的经验,我更担心不成功的实验会造成错误的经验。

洪小军:现在越来越多的团队正在进行或尝试远程协作的工作方式,看你春节假期也在泰国边享受生活边远程办公,你们准备实施这样的计划?

梁宇鹏:我们相信,有能力的人在哪里都可以工作好。进一步说,既然我们希望找到最好的人,那就不应该让地域成为限制。现在越来越多的公司有这样的理念,而且开源社区也一直是这样运行的。

当然不同的公司有不同的情况,而我们又不能做到像开源社区那样悠闲的节奏,至少现在不行。我们的业务正在快速增长,基本上是每月一翻的指数级增长速度,而我们的系统正处在从企业应用向云服务演进的过程,其中要做的事情纷繁复杂。顺便广告一下,这也是在我 QCon 北京上要讲的主题。

从组织角度看,一方面由于团队还在组建,人手紧张;另一方面,还有团队成员的能力适配问题。解决团队成员面对超常压力下的焦虑问题,都需要很多沟通。因为不管怎么组织,团队最终还要形成合力才可以。

正好我假期去泰国玩,就在岛上多待了一段时间,算是一个实验。其实我们平时就经常在家办公,IM 上聊天,紧急事项就电话。有一点必须承认,在 IM 上聊天是容易吵架的。因为文字聊天缺少语音语气,会造成很多沟通问题。在国内的时候还好有事打个电话,到了国外因为资费问题,就没那么容易了。

当然,团队协作的更大问题是工作的配合和交接,而限制是客观存在的。你如何才能把一项工作很好地跟其他人讲清楚,如何能够让其他人清楚你的进度,以便在合适的时候帮助和配合,这些都是问题。好在这方面已经有很多专业工具或服务,还有很多正在创业路上。前段时间一些团队已经在分享,我们也在尝试和整理自己的工具集。现在看来还是比较乐观,整理完了也会拿出来跟大家分享。

洪小军:近几年你一直在即时通讯领域深耕细做,能简要总结一下这几年的发展路线吗?未来的发展方向是什么样子的?

梁宇鹏:一说深耕细作,真是浓浓的老码农既视感。不过我确实一直工作在 IM 领域,摸过的 XMPP 的开源实现也从 Jabberd2(C)、Ejabberd(Erlang)做到 Openfire(Java)。次次还都是深度改造,从 10w、100w、1000w 来一遍,在高可用和伸缩性上投入了很大的精力。

不过在移动互联网下,网络的不稳定性带来了更多的挑战,也让我们不得不在协议层面做一些事情。最近 IM 云服务热起来,大家也都在说。我们最早在 2012 年就已经做过类似的事情,断断续续地也在思考和改进。最近要做的事情就是希望把这个协议通用化,做到在很多对可靠性有较高要求的系统中可以方便应用。

当然我们已经不止是承载能力的追求上了,由于客户分布在全球,我们后续会投入很多精力去改造系统,以支持全球多 IDC 部署和访问,这里面要做的事情还是很多。

洪小军:你一直说自己是多语言编程爱好者,用过 C/C++、Java、Erlang、Golang 等,据我所知现在 Erlang 是你们项目中主要的开发语言,你是怎么看待项目中语言选型的?从你个人角度看,什么样的语言会更符合你的口味?

梁宇鹏:语言问题真是口味问题。符合我口味的必须是 Golang,没有之一。从一开始 Golang 出来就喜欢,当然我是 Rob Pike 粉丝这事我是不会到处说的。除去语言级别并发这些令人愉悦的特性,Golang 让我喜欢的地方还在于语法设计的考究。做什么事情基本上有且只有一种好的方式,这种完美主义让人印象深刻。从工程角度上讲,它让很多事情变得简单,也因此不容易出错。

Erlang 也很好玩,也很不错,是我一直推荐的语言。作为一门典型的函数式语言,它代表了另一种世界观,这跟 C 一类的过程式语言完全不一样。你不一定要用,但值得试试,这是通往另一个世界的大门。

言归正传,我把语言看成食物,除去口味的不同,我更想说明的一点是,你不要总想着跟它过一辈子。对于跟我一样的做系统研发的人来讲,特别是应用服务,很多时候语言的区别并没有那么大。大多数你要考虑的问题,架构、集群、容错、分布式、伸缩性都远比语言更值得你去费心思。一个人不吃饭不行,但不管吃好吃坏,事情都是要做的。

回头看我有限的工作经历,基本上每次换工作都换语言。有时候是会比之前多一些努力,但其实也没什么大的困难。工作这种事情,更重要的是看挑战和发展。如果你天天工作千篇一律,都用一种语言有什么意义。如果挑战够大工作够有意思,经常换语言又如何。所以在个人角度看来,我坚定支持多语言编程,这样思路会更开阔,机会也会更多。

当然在团队层面,还是会涉及语言选型,这方面我觉得首先要看你能找到什么样的人组队。因为不是所有的人都喜欢多语言,对语言的熟悉程度也不一样。比如 Java 人就会多一些,Erlang 人就少一些,这些是客观事实。其次,看看现有项目工程是什么语言,这对创业团队很重要,因为你很少有时间从头来造一些轮子。最后,业务基本稳定之后,可以再看看新语言,慢慢玩。比如对 Golang 感兴趣,就可以找些小服务来做。这里我基本坚持一个原则,如果你要在线上服务使用新语言,一定要有两个人以上感兴趣而且会才行,主要还是为了防止业务单点。

洪小军:看你的业余生活很丰富,骑马、登山、游泳、跑步等等,但是在工作上的投入又收获满满。整体的节奏羡煞很多人,你是怎么去权衡好工作和生活关系的?

梁宇鹏:只能说自己爱玩的东西太多,忍不住啊,所以才会希望能够边玩边工作(呀,私心!)。我一直坚持一种理念,就是 Work Hard,Play Harder。工作再努力最终还是为了生活不是么?不过说起来,现在感觉还是没有平衡好,玩得太少了。:)

说起来,游泳、跑步应该算是运动。平时我们工作强度很大,需要经常加班甚至熬夜。线上服务 7x24 小时走着,出问题后压力也很大。这些对身体都有些损害的。而且我曾经一度头痛,去医院各种检查都没有用,甚至还尝试过中医(针灸、艾灸、喝各种中药……嗯,是污点)。后来开始跑步就全好了,从那之后就坚持运动了。

我们搞互联网服务或者云服务的,说天天累成狗真不为过。不多运动锻炼,身体是撑不了几年的,总不能只吃青春饭。行业里一直有个笑话,就是嫁人要嫁 IT 男,因为挣得多死得早。我每次用这个提醒自己,也用这个来鼓动同事运动。可以努力,也要生活。

这句话也再送给你,记得之前你在微博的时候,经常熬夜连轴转。以后要注意锻炼,注意休息,担子不能一个人挑呐。

感谢臧秀涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-04-12 07:559204

评论

发布
暂无评论
发现更多内容

融云亮相 2024 ChinaJoy,什么才是游戏迷真正的快乐源泉?

融云 RongCloud

Java 后端已经过时的技术,也是我逝去的青春

源字节1号

开源

迈向更高级的财务规划,助推企业蓬勃发展

智达方通

数字化转型 企业管理 全面预算管理 财务管理 财务规划

微软:云服务大规模宕机因DDoS“防卫过当”

我再BUG界嘎嘎乱杀

黑客 网络安全 信息安全 DDoS

基于51单片机设计的花样流水灯设计

DS小龙哥

8月月更

史上最高!这家企业向勒索软件支付了超5.4亿元赎金

我再BUG界嘎嘎乱杀

黑客 网络安全 安全 网安

从分散到整合,细说比特币发展史

TechubNews

CSS使用渐变实现Chrome标签栏效果

源字节1号

开源

推荐一款好用的刷题工具

阿里巴巴云原生

阿里云 云原生 通义灵码

苏宁易购API接口:商品列表数据获取指南

tbapi

苏宁API接口 苏宁易购商品列表数据接口

再添认可!KaiwuDB 储能行业解决方案入选国家级案例集

KaiwuDB

KaiwuDB 分布式储能 分布式多模数据库 数字能源应用

用二维码进行活动报名,收集汇总信息更高效

草料二维码

草料二维码 报名二维码 活动报名二维码

淘宝商品数据接口实战:自动化监控与竞品分析

tbapi

淘宝API接口 淘宝商品列表数据接口 淘宝商品列表数据采集

Next.js 中为什么 App Router 可能是未来,但 Pages Router 仍然重要?

沉浸式趣谈

router 路由 路由框架 next.js app route

TikTok海外直播专线是什么?有什么用?

Ogcloud

TikTok tiktok运营 tiktok直播 tiktok直播专线 tiktok直播网络

Getty 携手英伟达升级商业文生图 AI 模型;苹果新专利探索「心跳」解锁 iPhone 丨 RTE 开发者日报

声网

重塑客户体验!VoLTE、VoNR引领新时代企业服务变革

中关村科金

音视频 大模型

推荐一款好用的刷题工具

阿里云云效

阿里云 云原生 通义灵码

速卖通商品列表数据接口(标题|主图|销量|价格|店铺)

tbapi

速卖通API接口 速卖通商品列表数据接口 速卖通API

详解 什么是RPC

哦豁完蛋了

RPC

ETL数据集成丨快速将MySQL数据迁移至Doris数据库

RestCloud

MySQL Doris 数据传输 ETL 数据集成平台

QCon讲师对对碰——洪小军采访梁宇鹏:就是爱Golang_QCon_洪小军_InfoQ精选文章