滴滴程序员真会玩:代码变音乐,动听有旋律
欢迎参加首届程序员好声音
娅宁 发自 凹非寺
量子位 报道 | 公众号 QbitAI
毫不夸张,这是我听过「最动听」的程序员故事。
今天,1024,程序员节。
一个小程序悄然上线,然后迅速在圈内引起波澜,大家争相上传自己的代码,看看一行行敲下的字符,究竟有多优雅。
口罩检测是明快的,失物找回有固定明确的击打节奏,疲劳提醒雄浑之中透着温暖,行程分享更像是冬日暖阳拍打在你背上……
算了,或许这只是我的感觉,因为虽然是同一段代码,但一千个观众有一千个莫扎特。
程序是理性的,但没想到,有程序员实现了「解码」。
现在每一段代码,都是感性十足的音乐节奏。
这是4个滴滴程序员三天内的业余时间之作。
创作之初:“听起来很酷,那就试试”
北京平常的一天。
滴滴程序员于留宝,接到同事辛老师的消息,问他有没有兴趣创作一段程序员自己的音乐。
于留宝很意外,自己虽喜欢听歌,在音乐上却是外行,最多在团队聚餐时唱唱,搞创作,实在是不可能。
辛老师说,为什么不能把代码变成音乐?
辛老师来自滴滴客户服务团队,也是滴滴内部出了名的音乐才子,在公司组了乐队,业余时间写歌,创作,玩音乐。
“觉得很有意思,这是我第一次做这样的事情。”于留宝答应了。自己每天和代码打交道,现在要让它流动起来,成为一支曲子,让别人听到。
这听起来很酷,那就试试。
就这样,从辛老师的一个点子,一条消息,一个小项目开始了。于留宝所在的业务部门首先有一些感兴趣的同学加入进来,后来,因为涉及到乐理知识,团队开始寻求外援,AI labs语音相关的同学,还有服务端、前端的同学,都纷纷加入。代码音乐的小程序开发团队,就这样成立。
这是一个项目团队,但更像是兴趣小组,准确说,是两者的结合。
“知道大家喜欢编程,没想到公司这么多人喜欢音乐。”
迭代优化:编程与音乐的共鸣
把代码转换成音乐,采用什么映射逻辑,这是摆在一开始的问题。
数字一定是中间物。代码是一串字符,字符都可以通过ACSII码转换成数字。而1234567对应do re mi fa so la xi,这样就能生成音乐。
如何将复杂的代码用简单的数字来表示,于留宝想了很多种方式,比如,用一个复杂的公式映射,对每一行代码进行编码。
但他发现,这样做的逻辑性和可解释性不强。“我们希望做出来的东西是有共鸣的,能让别人理解。不光听到音符,而且感知到代码。”
囿于复杂的公式、逻辑,想要呈现得通俗简单,不容易。于留宝陷入了困顿。
一天,于留宝盯着屏幕上一行行长短不一的代码,整齐却错落有致。
灵感在一瞬间闪现。“把代码横过来,像不像音乐播放器里跳跃的音浪?”
代码的长度本身就构成一种韵律,代码和音乐在这个维度相通。
这不需要复杂的映射。原理每个人都可以懂,而且,这个映射不拘泥于特定的代码,所有的代码都有长度,都能以音乐的形式表达。
于留宝把这个点子跟团队成员分享。一拍即合。
这是第一次迭代,抛弃了之前的很多复杂公式,用一种比较简单的逻辑呈现代码,让大众可以感知。
确定了思路后,于留宝回归本职,做了一个算法工程师擅长的事——数字映射。他的技术能力已经在滴滴日常的业务中千锤百炼,把这个想法用算法实现并不难。
以代码长度为基础,再将不同的功能块、关键词、条件语句等代码元素融入到映射逻辑中,代码就变成了数字,后边接一个时序预估模型,生成不同的节拍。
音乐的骨架有了,但听起来总缺点什么。如何让它丰满,有血有肉,有美感,于留宝知道,自己的力量已经不够了。
滴滴有近6000名工程师,一定会有志同道合的朋友。AI labs里做语音相关的同学,很快加入进来。懂乐理知识的同学,结合代码特点,对音乐做了一些微调。
项目发起人辛老师对不同功能的代码进行了不同风格的编曲。
这是又一次迭代。由粗到精,从一个功能的简单实现,到完善优化,终于将代码变成了音乐。
第一次听到demo,超出于留宝的预期。“音乐的灵性在那一瞬间打动我,真实地感受到业务代码可以这么美。”
这些代码来自滴滴App内的五个代表性功能,分别是发单、行程分享、物品遗失找回、疲劳驾驶提醒、口罩佩戴识别,每个功能抽取一段代码,谱写了五段曲子。
音乐中展示的代码,在滴滴庞大的技术系统中,是九牛一毛。
八年来,滴滴的程序员累计编写了超10亿行代码。技术积累不是一首曲子能代表,但曲子是一个缩影,让外界的人看到滴滴的技术内核。
代码转音乐团队的工程师们常常提到四个字“迭代优化”。
于留宝说,这是程序员的工作惯性,已经融入他们内心深处、个人气质中。
迭代无处不在。
这次音乐项目的迭代用了两个星期,但滴滴平台迭代优化的历程,已经走过八年。
最能诠释“迭代”二字、也最能承载滴滴技术积淀的,是滴滴的核心业务之一——派单。
乘客每次发单,背后都需要借助大规模分布式计算最优匹配、最佳路径、最短时间,并且,匹配要做到动态、实时。
早期,平台派单算法是每1.5-2s做一次供需的计算匹配,在确保乘客接驾体验的基础上最大化成交率,让更多的用户能被司机应答,更多的人能快速出发。
从2016年开始,滴滴开始思考,算法能不能做到在更长时间维度的优化?
他们想到AlphaGo,“强化学习”。
技术迭代按下快进键。
2017年,滴滴开发了一套基于强化学习的智能派单匹配系统,把目标从2秒钟最优改成了1天最优。这个系统上线后,成效显著。
但平台对优化的思考没有止步。成交率虽大幅提升,但那时的系统,只能模拟简单的时间空间,不能模拟动态的复杂信息(如天气),如何把这些信息都包括进来?
2018年,滴滴开发了一套基于深度强化学习的方法V-Net,把所有潜在有价值的信息都包含起来,对网约车派单问题进行半马尔可夫过程建模,提出基于强化学习的泛化决策迭代框架,创新有效地结合了深度强化学习,时间差学习和传统组合优化方法,在确保乘客出行体验的同时进一步提升司机的收入。结合了深度强化学习、时间差学习和传统组合优化方法。
这一次,不仅考虑到了乘客出行体验,而且,滴滴平台上的数千万车主和司机的收入因技术而提高了。
多年技术积累也得到外界肯定。2019年,滴滴网约车派单解决方案获瓦格纳运筹学杰出实践奖(Daniel H. Wagner Prize)。这也是瓦格纳运筹学杰出实践奖创建22年以来,中国公司第一次被授予该奖项。
成立八年,尽管早已走过了市场输赢的战争,滴滴的技术变革无时无刻不在发生。深耕AI和大数据技术,纪录不断被刷新。计算永不止息,每秒峰值处理4000万次数据,每日新增轨迹原始数据超106TB,相当于21400部5GB大小的蓝光电影。
从小项目到大平台,如程序员们说的,迭代优化,早已成为惯性。
但这个代码变音乐的程序,每一次迭代都有另类的兴奋感。
开放与开源:与所有程序员共享快乐
Demo 出来后,项目群里立刻沸腾。大家沉浸其中,“很有成就感”。
团队里有人提出,效果这么好,我们为什么不做一个小程序出来呢?
把映射逻辑做成一个小程序,让更多的程序员参与进来,让更多代码能够转换成跳动的音符被听到,而不局限于滴滴的业务代码。
“这是为程序员开发的小程序,我们想把这份快乐和所有的程序员一起分享。”于留宝说。
意见一致,大家又有了新的目标——开发一个小程序。
更多的人加入进来了,产品经理、开发、服务端、前端、UI,开始了一场小程序开发的头脑风暴。
目标只有一个:
在程序员节这一天,让所有的程序员都能听到自己写的代码,共享快乐。
开源是真程序员的信仰,而且滴滴程序员们曾因开源而受益。
在这次的曲子中,有一段就是根据开源代码完成的。这是滴滴今年上线的口罩佩戴识别项目。
1月22日,疫情进入紧急状态。滴滴成立了AI口罩紧急项目组,基于 DFS 人脸检测算法,结合积累的人脸属性识别算法研发了口罩佩戴识别技术。
只用了23小时,这项“黑科技”就成功上线。开源开放,虽然时间紧迫,滴滴的技术人员们却将产品优化与迭代了将近20次。
当然,滴滴自己也爱对外开源。
2017年,滴滴首个开源项目VirtualAPK发布。这是滴滴开源的起点。
开源三年多,滴滴已经发布了40多个项目,涵盖人工智能、小程序、智慧交通、中间价与架构、移动开发、研发测试、前端、系统工具、大数据、运维监控等领域。
在Github上获得了 6.8万star,目前排名全球89,国内第5,仅在BAT华为之后,已经超过很多从13年就开始做开源的其他互联网公司。
为什么要投入精力做开源?
滴滴高级副总裁、开源委员会主席章文嵩博士这样说:“滴滴受益于开源,也要回馈于开源。”
滴滴的技术文化,是开放协作的。大量的应用开源软件加上自主开发的软件,共同构建了这个全世界规模最大的出行平台。
滴滴方面还透露,滴滴还在积极推动内部开源,提升内部工程师开放、协同的能力。
目前已经有包括平台化项目、工具、架构、SDK库等370多个项目实现内部开源。
内部开源可以打破部门壁垒,避免“重复造轮子”,已经有1/5的滴滴工程师参与进来。
团队文化:因为年轻,物以类聚
10月22日夜里十一点半,距离小程序上线还有两天。
1024代码音乐开发小分队的群里,成员们还在讨论“设计稿”“转换动画”的呈现效果,团队很有默契——“原来大家都在加班,想把这个事情做到完美”。
从有一个想法,到曲子demo出来,再到小程序完成,团队很多人的心血都投入于此。
“这是第一次,我们为了自己去开发一个功能,而不是为了服务用户。”于留宝说。
这对大家来说意义重大,团队也因此更有激情。它不是一项任务,这是一群有共同热爱的人自发聚集,用自己的创造力,做的一件好玩、有意义的事。
这不是一个严格的项目,大家没有放下日常的工作,而是在业余时间支撑起这个项目。
“有时间的时候随时在线上沟通,下班以后才聚在一起讨论,很多同事不在同一个办公点,拉个Zoom就能开会。”一个团队成员介绍。
过程中每一步优化和迭代,都启发出滴滴工程师们更多的想法和创意,创造出对这个特殊产品更高的期待,也吸引着越来越多的同学加入。
于留宝喜欢大家“拧成一股绳”的感觉。并肩作战的两个星期,于留宝重新认识了身边这些程序员们,这像是个“挖掘宝藏”的过程。
平时沉稳低调的同事原来这么潮,他可能是个隐藏的贝斯手、作曲人,有人散发着文艺气息,有人有着与生俱来的幽默,“甚至,你会突然发现某个人长得这么帅。”
习惯了追求把代码写好的程序员们,有着自己的浪漫和审美,才华和个性。
为什么加入滴滴写代码?
他们中的不少人曾给过不平凡的答案。
作为出行为核心的公司,滴滴打通线上线下,并且因为打车叫车是实时行为,还是空间和时间叠加的挑战,拿物理领域来说,就是原子和量子世界的交融,前无古人,是真正的无人之境。
“我不知道上帝用什么创造世界,但程序员用代码改变世界。”
但也有更加平凡和现实的回答。
这里年轻人多,不仅因为滴滴作为高速成长公司,吸引年轻人。而且年轻人在这里也容易有机会出头上位。
年轻人聚集,思想活,技术活,文化氛围也就利于各种点子野蛮生长。
爱音乐的程序员这次把代码变成音乐,而上一次爱吐槽的其他年轻人则把“吐槽大会”开到了公司。
这次是爱音乐的年轻程序员搞的,之前滴滴也是最早把“吐槽大会”开到公司的企业。
所以代码变音乐,虽然只是滴滴程序员的业余项目,但每一个音符背后,都是滴滴技术和文化的声响。
如果细听,和弦的编排,的确融入了程序员们的个人特质,躁动的、冷酷的、张扬的、舒缓的……团队里的每个人不一样,但都是可爱的。
小程序上线,一段开心忙碌的旅程结束了。
说到程序员节想怎么过,于留宝又变回了严谨低调的工程师。他的愿望:
“最好的庆祝就是线上服务稳定,没有bug。”
- 一零后重返海淀黄庄2020-10-21
- 马云养的蚂蚁太疯狂:每小时盈利500万,用余额宝和花呗的你都有功劳2020-08-26
- 报道称苹果加入反对微信禁令行列2020-08-14
- Strategy Analytics:预计小度智能音箱第二季度出货量排名国内第一2020-08-14