写点什么

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:559392

评论

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

戴尔科技园动力计划,携手中南高科赋能中小企业数字化转型

科技热闻

Rust-Shyper:基于 Rust 语言的高可靠、开源嵌入式 Hypervisor

openEuler

Linux rust 操作系统 虚拟机 嵌入式

如何创造数据资产价值?如何对内赋能业务运营,对外创造市场价值?

星环科技

数据资产 数据要素流通

阿里十年资深码农共享SpringCloud微服务架构实战文档

Java你猿哥

微服务架构 Spring Cloud ssm 架构设计 架构师

分析型数据库:MPP 数据库的概念、技术架构与未来发展方向

星环科技

MPP数据库

python游戏开发-pgzero

AIWeker

Python python小知识 三周年连更

分布式存储技术(下):宽表存储与全文搜索引擎的架构原理、特性、优缺点解析

星环科技

分布式 全文搜索

竞争焦点转向数智底座 用友能否再引领

用友BIP

用友iuap 用友技术大会 升级企业数智化底座

权威学者、企业CFO荟聚上海国家会计学院,共探「智能会计 价值财务」

用友BIP

智能会计 价值财务 用友智能财务 业财融合

度量分析开源社区健康度,助力企业开源生态健康发展——华为开源管理中心王晔晖

开源雨林

开源治理 OSPO OSS Compass CHAOSS

iSulad+Kuasar:管理面资源消耗锐减 99%的新一代统一容器运行时解决方案

openEuler

Linux 容器 云原生 操作系统 Kubernetes Serverless

星环科技自研技术,加速大数据从持久化、统一化、资产化、业务化到生态化

星环科技

大数据

分布式技术剖析

星环科技

分布式

基于公共信箱的全量消息实现

百度Geek说

大数据 即时通讯 企业号 4 月 PK 榜 公共信箱

分布式计算技术(上):经典计算框架MapReduce、Spark 解析

星环科技

分布式计算

分布式存储技术(上):HDFS 与 Ceph的架构原理、特性、优缺点解析

星环科技

hdfs 分布式存储 Ceph

自动化回归测试平台 AREX 0.2.8 版本正式发布!

AREX 中文社区

自动化测试 接口测试 回归测试

从入门到精通,超详细的程序员Java学习路线指南

Java你猿哥

Java 数据库 Web ssm 死磕 Java 基础

SysCare:为您的操作系统保驾护航

openEuler

Linux 操作系统 openEuler 内核 热补丁

Github星标120k!这份阿里独有的高并发实战笔记太强了!

Java redis zookeeper Netty 高并发

分布式计算技术(下):Impala、Apache Flink、星环Slipstream

星环科技

分布式计算 Slipstream

阿里RocketMQ创始人首次分享出这份RocketMQ技术内幕神级架构手册

Java RocketMQ 消息队列 消息中间件

anyRTC快对讲融合通信指挥调度平台

anyRTC开发者

音视频 融合通信 快对讲 视频监控 综合调度

电信及互联网行业数据安全内控审计建设实践 | 盾见

极盾科技

数据安全

这一秒,困扰了程序员 50 年!

Java你猿哥

Java 程序员 ssm 计算机

数栈V6.0全新产品矩阵发布,数据底座 EasyMR 焕新升级

袋鼠云数栈

大数据 基础软件 数字化转型

分布式场景下,Apache YARN、Google Kubernetes 如何解决资源管理问题?

星环科技

资源管理 Apache YARN

代码重构:面向单元测试

阿里技术

AppleParty(苹果派)v3 支持 App Store 新定价机制 - 批量配置自定价格和销售范围

37手游iOS技术运营团队

In App Purchase AppleParty App Store Connect API 批量创建内购IAP app store

宝塔人机识别验证:如何确保人脸识别的安全性?

百度开发者中心

人脸识别 人工智能’

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