《沉淀》是云栖社区展示专家风采的人物栏目。它呈现每个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。我们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。”
如果你想了解这些云栖专家更多分享时,请点击云栖专家频道,当然我们也欢迎你往前走一步,成为我们的云栖专家(https://yq.aliyun.com/expert),与技术大牛一起“煮酒论英雄”。
1.
如果人生可以重新来过一次,你会怎么做?
相信很多人都会列好一大堆计划和想法,而李睿博却和云栖社区的同学讲了一个往事:
“小时候一帮小朋友一起玩,弄坏了邻居的财物,大家一哄而散,只有我觉得这么跑掉是不对的,愣是站在原地没动,最后责任都成了我一个人的。”
讲完后,他说:“人生如果能重新来过,还会是一样。我其实是个挺执拗的人,会坚持做自己认为对的事情,即使有时候明知道会吃亏。”
从功能机时代做网络中间件到做搜索,从做移动开发到做分布式计算平台……细看,转型跨度都挺大,而每一步李睿博都无怨无悔。
抽丝剥茧后,你会发现,这是爱,是对代码的爱。
2.
李睿博认为,路走对了,才不怕远;走对路,比走的远更重要。
李睿博,花名艺卓,他是阿里集团计算平台事业部生态与输出部门的负责人。对于自己的工作,他概括地说:“MaxCompute 上直接接触用户的那部分,很多都是我部门的工作。”这些工作包括 MaxCompute 的 REST API、SDK、Console、JDBC驱动,以及PyODPS 及其配套的 DataFrame。除此之外,李睿博的工作也包括跟各种社区、生态的对接。
回到李睿博工作生涯的起点——2006年北航研究生毕业后,他因为面试流程Geek,以及有游戏背景,任性的找了一家特殊的日企,并在一年后,又随这家公司到东京工作了两年。这是家做网络中间件的公司,核心产品是用一套SDK完成Linux/Windows/Solaris server side 以及PSP/NDS/wii 等 Client Side 的网络通信代码编写,客户主要是游戏公司。在这个过程中,他实现了在 128k 内存 128x128 的屏幕上实现伪网游的效果,这个在——GPRS、手机还是NoKia的时代是一件非常具有挑战的事情。
2009年,李睿博加入阿里云做搜索(现在的“神马”)。在搜索的时候,他发现,当时团队的模块发布用的是RPM包,而RPM/YUM的改变是系统级的,多人共用一台机器会互相干扰,于是就写了一个Abxp(Abuildxp 的缩写)的工具,用来在编译代码之前构建依赖库环境用的。这个编译工具直到最近这几天,都还有 IDST 的同学遇到问题找到李睿博。对于写出长命的Code,这位不断跨领域的技术人也挺吃惊的。但大家觉得好用、喜欢用,他也非常高兴。
2013年,李睿博跟随集团无线 All In 战略做了一年的创业项目。在无线的一年,他带领一个测试开发底子的团队转安卓开发,并在不到一年时间把App做到百万日活。尽管这个App最终没能活下来,但李睿博还是挺骄傲的。自豪之外,他也有反思和收获,一定要给用户带来价值。他在回复中表示:“无论技术层面执行的多么到位,带不来价值的应用活不下来很正常。阿里土话说‘路走对了,就不怕远’,我觉得应该叫‘路走对了,才不怕远’ 。”他强调,走对路,比走的远更重要。
由于移动应用业务属性太强,做安卓开发一年后,李睿博来到阿里集团计算平台事业部生态与输出部门,潜心于技术。尽管这个领域不懂的东西太多,但只要能重新沉醉于代码中,他觉得哪怕“被虐”也是值得的。“好几次都是靠‘自己选的路,跪着也要走完’的信念才走到今天。”他表示,在大数据平台学到最多、挑战最大,不过后来居然越做越有感觉了。
到今天他做MaxCompute已不知不觉有三年。问及最终目标是什么,他说,就当下工作而言,有两个:一个是通过PyODPS直接赋予数据科学家操作大数据的能力;第二个是通过生态与输出,让大家可以将开源所学直接用在 MaxCompute 上。“如果要论终极目标。”他毫不犹豫地说:“那就是将大数据计算能力普惠给用户。”
对于分布式计算平台的趋势,李睿博认为会越来越往准实时、实时方向靠拢,“离线和实时分布式系统之间的界限会越来越模糊,两边都会尝试侵占对方的地盘。”
沟通中,也问起他的花名为什么起“艺卓”,李睿博一脸遗憾,他说:“本来想取‘睿博’。”他戏称,毕竟向后兼容还是很重要的。但后来他发现,这个花名不可用,只好取了“艺卓”。之所以取它,李睿博称,有两个原因:第一,和“睿博”读音有点靠;第二,这个名字是专业显示设备的品牌,他比较喜欢这个牌子,并且也希望像这个品牌一样在自己的领域里做专业。
3.
从搜索到安卓再到分布式计算平台开发,在外人看来这几次转型跨度都挺大的,回顾历程,李睿博也惊讶自己这么能折腾。
“那如果给一次选择的机会,你会怎么做?”折腾太累,大多数人都不喜欢折腾,所以云栖社区抛出这个问题,是希望李睿博能给出一个完美的技术进阶路线。然而,答案似乎并不像云栖社区期待的那样。
“如果真能选择的话,还是会去买套房吧。”他开了一个玩笑后,开始言规正传——人生如果能重新来过,还会是一样。
是什么原因让他来生还愿意这么折腾,云栖社区并没有进一步去探究。因为在另外一个回答中,可以找到答案:“我是真的爱写代码,从小学就开始爱,到现在快三十年了也还爱。”
如果这个答案还不够直接,那么你可以看李睿博这一句:“做自己喜欢做的事情,还有钱赚,这么奢侈的事情,我已经很知足了。”
以下是更为精彩的内容:
云栖社区:“艺卓”的花名给人总有一种手艺人的工匠精神在里面。你入职那时,取花名还是件很容易的事,能谈谈为什么没有取武侠风的花名,而是取了“艺卓”?
李睿博:我 2009 年入职阿里,其实直到 2013 年去无线才有的花名。阿里云早期并不流行花名文化。
等到真想要花名的时候系统提示“睿博”不可用(毕竟向后兼容还是很重要的嘛),结果到今天也没看到集团里谁的花名叫“睿博”,有点遗憾。
取“艺卓”这个名字,一个是因为读音跟睿博还有点靠,另一个是这个名字本身是个做专业显示设备的品牌,我个人也比较喜欢,也很希望能够像这个品牌一样在自己的领域里做专业。
云栖社区:你第一份工作是Port 日本的 Doja 手游到国内的 J2ME,在那个年代,能在 128k 内存 128x128 的屏幕上实现伪网游的效果是一种挑战,你是如何解决这个问题的?
李睿博:在资源极度受限的设备上做开发,有点像把一大堆东西塞到一个小手提箱里。一个是东西本身要经过很好的折叠,比如图片、音乐这些资源大户,要经过良好的剪裁和压缩。
另一个是要做很精细的安排,空间本来就有限,哪里放什么要规划的非常仔细。日本工程师在这方面其实做的已经很好了。移植到 J2ME 因为机器配置更低所以要做的更激进一些。
网游对战这块,那个年代的流量还很贵,而且 GRPS 也不足以支撑实时网络对战,所以我们当时的做法是和另一个玩家的历史记录对战(赛车类)。
云栖社区:你在搜索部门时开发了一款编译工具,直到今天都有人在用,并找你咨询问题,能否介绍下这是什么样的一款编译工具?当初出于什么原因去写它?
李睿博:是个叫 Abxp(Abuildxp 的缩写)的工具,用来在编译代码之前构建依赖库环境用的。
做这个工具的原因有两个,一是当时团队的模块发布用的是RPM包,二是当时团队的工作习惯是一台开发机多人共用。
既然用了RPM,那么最直接的办法就是RPM来构造开发所需的依赖环境。但是 RPM/YUM的改变是系统级的,多人共用一台机器会互相干扰。
因此就有了Abxp这个工具,利用现成的RPM体系,构建个人的开发环境,互不干扰,甚至一个人的几套代码不同目录之间都可以用不同的依赖环境,给开发工程师提供便利。
云栖社区:后来去做安卓开发,是早有准备,还是现学现卖?另外,也说一说学习安卓开发的过程吧。
李睿博:基本是现学现卖。虽然早年也做过J2ME开发,不过跟直接在 Canvas 上做各种图形绘制比起来,安卓抽象了 Activity、Service、Intent 等一系列概念,组织了 Fragment、ViewPager 等一系列组件,能够用好这些东西需要积累和时间。
之前的经验唯一的好处是有助于理解一些设计的出发点。当然,因为做的App 的特殊性,其实用到不少跟系统相关,行为定义的没那么清楚的 API,这个就真的是要摸着石头过河了。
云栖社区:在不到一年的时间里,把App做到日活百万,从技术角度来看,这段经历有哪些成功或独到之处?其次,对于这款App没能最终活下来,你有哪些认识和思考?
李睿博:做App 是要满足用户真实的需求的。无线All In 那一年,我们做锁屏软件,动机其实是“抢入口“。
我们在锁屏界面上做壁纸,跟虾米合作做音乐播放,跟蚂蚁合作做余额宝增值曲线,跟淘宝合作做快递提醒,跟头条合作做新闻,跟爆漫合作做段子推送,如果再多有一些时间,锁屏会被我们做成一个微型OS。这个臃肿的锁屏软件表达的我们的诉求太多,能够带给用户的价值偏少。
当然也不是没有。今天很多已经集成到 ROM 里的功能,那个时候我们都在锁屏上做过,比如用最少的操作打开手电筒,切换歌曲等等。
于是无论技术层面执行的多么到位,这样的软件活不下来其实并不奇怪。阿里土话说“路走对了,就不怕远”,我觉得应该叫“路走对了,才不怕远”,走对路,比走的远更重要。
云栖社区:为什么在移动开发最火爆的时候,又转型去做分布式计算平台开发?在转型分布式计算平台开发中,都遇到哪些挑战,请详细叙述下。
李睿博:
移动应用的业务属性还是很强,代码写写扔扔(尤其是客户端)简直太正常不过。自己的代码变成快消品还是很难受的。
到分布式计算平台,最大的问题还是初来乍到,整个领域不懂的东西太多。虽然传统的 MapReduce 不难理解,但是一个Query 从进来Compile 成 Plan,到 Optimize 到生成 Runtime code,整个链路很长,而且链路的每个节点都有足够的细节和门槛。
云栖社区:MaxCompute相比Hadoop等开源产品有哪些优势?其次,作为计算平台生态与输出部门的负责人,能否在脱敏的前提下,谈下MaxCompute在生态上的一些规划?
李睿博:优势么,第一个是性能。我们自研的平台在性能上对比开源竞品还是有很大优势。另一个,MaxCompute 是完全托管的大数据服务,用户不需要知道集群,只管跑作业就好。从这个角度说,MaxCompute 跟 IaaS +开源软件完全不同。
MaxCompute 的生态,前几年关注的是连通性,于是我们有了 JDBC/ODBC,有了 Flume/Fluentd/logstash/Sqoop 这样的插件,让数据可以方便进入;现在我们更关注社区,我们的 MaxCompute 2.0 对 Hive SQL的兼容性不断在提升,PyODPS 做的类似 Pandas 的 DataFrame API,直接赋予数据科学家操作大数据的能力。
我们的终极目标是让大家可以将开源所学直接用在 MaxCompute 上。
云栖社区:你对分布式计算平台的中间件、架构以及趋势有哪些看法?
李睿博:
MaxCompute 是离线批量计算平台出身,但是这个平台会越来越往准实时、实时方向靠拢。离线和实时分布式系统之间的界限会越来越模糊,两边都会尝试侵占对方的地盘。
新硬件也给我们的分布式系统提出了更多的挑战,比如 CPU 作业和 GPU 作业混合调度,带宽提升导致的存储和计算的分离成为可能等等。
云栖社区:不论是一开始在日企做网络中间件、阿里云成立之初做搜索,还是跟随集团All In战略做移动开发,乃至当下做大数据的分布式计算平台,你的每次转型跨度都挺大的,而且也都挺成功的,能否谈谈转型心得?其次,众多技术中,你最喜欢哪门技术(语言)?为什么?
李睿博:也不能算成功吧,拼了老命,没有脸着地摔很惨罢了。
整个过程我觉得还是爱最重要。有爱才有勇气才有希望。我是真的爱写代码。从小学就开始爱,到现在快三十年了也还爱。
做自己喜欢做的事情,还有钱赚,这么奢侈的事情,我已经很知足了。
语言写过很多,不过我用的多的似乎最后都消亡了。最喜欢的语言么,Perl 算一个(也式微了,汗),因为实现同样的功能,代码能写的短。
云栖社区:如果给你一个选择的机会,你会继续这样继续不断跨领域,还是会在某个领域持续扎根?为什么?对应着选择(重新来过后),你又会怎么去做?
李睿博:如果真能选择的话,还是会去买套房吧(玩笑)。
重新来过也还会是一样,我其实是个挺执拗的人,会坚持做自己认为对的事情,即使有时候明知道会吃亏——小时候一帮小朋友一起玩,弄坏了邻居的财物,大家一哄而散,只有我觉得这么跑掉是不对的,愣是站在原地没动,最后责任都成了我一个人的。
认知水平、眼界不到的时候,估计我也会非常坚持自己并不成熟的想法,就算是未来的自己去劝也没有用。可能这就叫性格决定命运?
云栖社区:拥有这么多丰富的经历,你有没有想过去创业?请你谈谈对创业的理解。
李睿博:我比较喜欢的两个描述生活状态的词,一个叫随遇而安,一个叫无欲则刚。我这样的性格,除非有个强力发动机型的人拉着我一起,是不太会去独自去创业。
另外,我觉得创业要有足够的冲动,冲动可能来自强烈的价值认同。拉我出去创业的朋友也有过,到目前为止我看到的因为隔行导致盲目乐观以及功利的成分居多。
云栖社区:你平时喜欢做什么?为什么?请分享一个你特别认可的格言或一句话,并叙述下原因。
李睿博:平时追番,打游戏,看书,摄影,偶尔写写博客。因为我读过的人文书籍比较少,所以不太敢说任何或者欣赏格言。只说一个喜欢的吧:“此心光明”,希望能够作为自己的墓志铭。
为什么是此心光明呢?因为我们是处在一个剧烈变革的时代里。我上中学的时候家里装一部固定电话还要交几千块的安装费,我念大学的时候还在用寻呼机。我研究生毕业的时候大家都在炒 Web,然后是移动互联网,然后是大数据,然后是人工智能,眼花缭乱,飞速迭代。
我也经常感叹很多事情自己其实看不懂,看不清楚。年轻的时候,觉得做自己认为对的事情就好。但是在这样的时代里,个体非常容易迷失自我,我做的事情是不是对,并非一目了然,经常是要经过时间检验。在这样的时代里,某个具体时点上,能指引、规范个体行为的,或许只有价值观。Google 憋了半天,搞出来个“don't be evil”,我觉得是同样的表达。工程师可能也就这个文案水平,不如王阳明先生“此心光明”来得积极向上(文/我是主题曲哥哥)。
- 《沉淀》第十一期:【[沉淀]阿里高级专家应答:各种数据在一个统一计算平台上的融合,才能产生更大的价值】阿里巴巴这种超大数据体量上才会遇到的独特挑战,让应答在技术上有了更清晰的认识,一定要夯实分布式系统的基础。“只有把基础夯实了,才能支持上层各种计算场景在大体量上的实现,让各种新的算法在‘阿里体量’上真正发挥潜力。”
- 《沉淀》第十期:【[沉淀]云架构师前(钱)景这么好,我们该如何转型?这有两位阿里云云架构总监多年心得】云架构师任职都有什么要求?他们的日常是什么样的?相关人员如何向云架构转型?就此,云栖社区就此采访了阿里云两位资深专家:阿里云云架构总监Danny Liu和阿里云国际业务部云架构总监王宇德。
- 《沉淀》第九期:【[沉淀]“快的那个,会被慢的拖死”,记不断奔跑、看着阿里云产品管控慢慢长大的那个人——尹书威】传统运维人要从Ops走向DevOps,从项目走向产品,从资源走向应用。