滴滴程序員真會玩:代碼變音樂,動聽有旋律
歡迎參加首屆程序員好聲音
婭寧 發自 凹非寺
量子位 報道 | 公眾號 QbitAI
毫不夸張,這是我聽過「最動聽」的程序員故事。
今天,1024,程序員節。
一個小程序悄然上線,然后迅速在圈內引起波瀾,大家爭相上傳自己的代碼,看看一行行敲下的字符,究竟有多優雅。
口罩檢測是明快的,失物找回有固定明確的擊打節奏,疲勞提醒雄渾之中透著溫暖,行程分享更像是冬日暖陽拍打在你背上……
算了,或許這只是我的感覺,因為雖然是同一段代碼,但一千個觀眾有一千個莫扎特。
程序是理性的,但沒想到,有程序員實現了「解碼」。
現在每一段代碼,都是感性十足的音樂節奏。
這是4個滴滴程序員三天內的業余時間之作。
創作之初:“聽起來很酷,那就試試”
北京平常的一天。
滴滴程序員于留寶,接到同事辛老師的消息,問他有沒有興趣創作一段程序員自己的音樂。
于留寶很意外,自己雖喜歡聽歌,在音樂上卻是外行,最多在團隊聚餐時唱唱,搞創作,實在是不可能。
辛老師說,為什么不能把代碼變成音樂?
辛老師來自滴滴客戶服務團隊,也是滴滴內部出了名的音樂才子,在公司組了樂隊,業余時間寫歌,創作,玩音樂。
“覺得很有意思,這是我第一次做這樣的事情?!庇诹魧毚饝?。自己每天和代碼打交道,現在要讓它流動起來,成為一支曲子,讓別人聽到。
這聽起來很酷,那就試試。
就這樣,從辛老師的一個點子,一條消息,一個小項目開始了。于留寶所在的業務部門首先有一些感興趣的同學加入進來,后來,因為涉及到樂理知識,團隊開始尋求外援,AI labs語音相關的同學,還有服務端、前端的同學,都紛紛加入。代碼音樂的小程序開發團隊,就這樣成立。
這是一個項目團隊,但更像是興趣小組,準確說,是兩者的結合。
“知道大家喜歡編程,沒想到公司這么多人喜歡音樂?!?/p>
迭代優化:編程與音樂的共鳴
把代碼轉換成音樂,采用什么映射邏輯,這是擺在一開始的問題。
數字一定是中間物。代碼是一串字符,字符都可以通過ACSII碼轉換成數字。而1234567對應do re mi fa so la xi,這樣就能生成音樂。
如何將復雜的代碼用簡單的數字來表示,于留寶想了很多種方式,比如,用一個復雜的公式映射,對每一行代碼進行編碼。
但他發現,這樣做的邏輯性和可解釋性不強。“我們希望做出來的東西是有共鳴的,能讓別人理解。不光聽到音符,而且感知到代碼。”
囿于復雜的公式、邏輯,想要呈現得通俗簡單,不容易。于留寶陷入了困頓。
一天,于留寶盯著屏幕上一行行長短不一的代碼,整齊卻錯落有致。
靈感在一瞬間閃現?!鞍汛a橫過來,像不像音樂播放器里跳躍的音浪?”
代碼的長度本身就構成一種韻律,代碼和音樂在這個維度相通。
這不需要復雜的映射。原理每個人都可以懂,而且,這個映射不拘泥于特定的代碼,所有的代碼都有長度,都能以音樂的形式表達。
于留寶把這個點子跟團隊成員分享。一拍即合。
這是第一次迭代,拋棄了之前的很多復雜公式,用一種比較簡單的邏輯呈現代碼,讓大眾可以感知。
確定了思路后,于留寶回歸本職,做了一個算法工程師擅長的事——數字映射。他的技術能力已經在滴滴日常的業務中千錘百煉,把這個想法用算法實現并不難。
以代碼長度為基礎,再將不同的功能塊、關鍵詞、條件語句等代碼元素融入到映射邏輯中,代碼就變成了數字,后邊接一個時序預估模型,生成不同的節拍。
音樂的骨架有了,但聽起來總缺點什么。如何讓它豐滿,有血有肉,有美感,于留寶知道,自己的力量已經不夠了。
滴滴有近6000名工程師,一定會有志同道合的朋友。AI labs里做語音相關的同學,很快加入進來。懂樂理知識的同學,結合代碼特點,對音樂做了一些微調。
項目發起人辛老師對不同功能的代碼進行了不同風格的編曲。
這是又一次迭代。由粗到精,從一個功能的簡單實現,到完善優化,終于將代碼變成了音樂。
第一次聽到demo,超出于留寶的預期?!耙魳返撵`性在那一瞬間打動我,真實地感受到業務代碼可以這么美?!?/p>
這些代碼來自滴滴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 出來后,項目群里立刻沸騰。大家沉浸其中,“很有成就感”。
團隊里有人提出,效果這么好,我們為什么不做一個小程序出來呢?
把映射邏輯做成一個小程序,讓更多的程序員參與進來,讓更多代碼能夠轉換成跳動的音符被聽到,而不局限于滴滴的業務代碼。
“這是為程序員開發的小程序,我們想把這份快樂和所有的程序員一起分享?!庇诹魧氄f。
意見一致,大家又有了新的目標——開發一個小程序。
更多的人加入進來了,產品經理、開發、服務端、前端、UI,開始了一場小程序開發的頭腦風暴。
目標只有一個:
在程序員節這一天,讓所有的程序員都能聽到自己寫的代碼,共享快樂。
開源是真程序員的信仰,而且滴滴程序員們曾因開源而受益。
在這次的曲子中,有一段就是根據開源代碼完成的。這是滴滴今年上線的口罩佩戴識別項目。
1月22日,疫情進入緊急狀態。滴滴成立了AI口罩緊急項目組,基于 DFS 人臉檢測算法,結合積累的人臉屬性識別算法研發了口罩佩戴識別技術。
只用了23小時,這項“黑科技”就成功上線。開源開放,雖然時間緊迫,滴滴的技術人員們卻將產品優化與迭代了將近20次。
當然,滴滴自己也愛對外開源。
2017年,滴滴首個開源項目VirtualAPK發布。這是滴滴開源的起點。
開源三年多,滴滴已經發布了40多個項目,涵蓋人工智能、小程序、智慧交通、中間價與架構、移動開發、研發測試、前端、系統工具、大數據、運維監控等領域。
在Github上獲得了 6.8萬star,目前排名全球89,國內第5,僅在BAT華為之后,已經超過很多從13年就開始做開源的其他互聯網公司。
為什么要投入精力做開源?
滴滴高級副總裁、開源委員會主席章文嵩博士這樣說:“滴滴受益于開源,也要回饋于開源?!?/p>
滴滴的技術文化,是開放協作的。大量的應用開源軟件加上自主開發的軟件,共同構建了這個全世界規模最大的出行平臺。
滴滴方面還透露,滴滴還在積極推動內部開源,提升內部工程師開放、協同的能力。
目前已經有包括平臺化項目、工具、架構、SDK庫等370多個項目實現內部開源。
內部開源可以打破部門壁壘,避免“重復造輪子”,已經有1/5的滴滴工程師參與進來。
團隊文化:因為年輕,物以類聚
10月22日夜里十一點半,距離小程序上線還有兩天。
1024代碼音樂開發小分隊的群里,成員們還在討論“設計稿”“轉換動畫”的呈現效果,團隊很有默契——“原來大家都在加班,想把這個事情做到完美”。
從有一個想法,到曲子demo出來,再到小程序完成,團隊很多人的心血都投入于此。
“這是第一次,我們為了自己去開發一個功能,而不是為了服務用戶?!庇诹魧氄f。
這對大家來說意義重大,團隊也因此更有激情。它不是一項任務,這是一群有共同熱愛的人自發聚集,用自己的創造力,做的一件好玩、有意義的事。
這不是一個嚴格的項目,大家沒有放下日常的工作,而是在業余時間支撐起這個項目。
“有時間的時候隨時在線上溝通,下班以后才聚在一起討論,很多同事不在同一個辦公點,拉個Zoom就能開會。”一個團隊成員介紹。
過程中每一步優化和迭代,都啟發出滴滴工程師們更多的想法和創意,創造出對這個特殊產品更高的期待,也吸引著越來越多的同學加入。
于留寶喜歡大家“擰成一股繩”的感覺。并肩作戰的兩個星期,于留寶重新認識了身邊這些程序員們,這像是個“挖掘寶藏”的過程。
平時沉穩低調的同事原來這么潮,他可能是個隱藏的貝斯手、作曲人,有人散發著文藝氣息,有人有著與生俱來的幽默,“甚至,你會突然發現某個人長得這么帥?!?/p>
習慣了追求把代碼寫好的程序員們,有著自己的浪漫和審美,才華和個性。
為什么加入滴滴寫代碼?
他們中的不少人曾給過不平凡的答案。
作為出行為核心的公司,滴滴打通線上線下,并且因為打車叫車是實時行為,還是空間和時間疊加的挑戰,拿物理領域來說,就是原子和量子世界的交融,前無古人,是真正的無人之境。
“我不知道上帝用什么創造世界,但程序員用代碼改變世界?!?/p>
但也有更加平凡和現實的回答。
這里年輕人多,不僅因為滴滴作為高速成長公司,吸引年輕人。而且年輕人在這里也容易有機會出頭上位。
年輕人聚集,思想活,技術活,文化氛圍也就利于各種點子野蠻生長。
愛音樂的程序員這次把代碼變成音樂,而上一次愛吐槽的其他年輕人則把“吐槽大會”開到了公司。
這次是愛音樂的年輕程序員搞的,之前滴滴也是最早把“吐槽大會”開到公司的企業。
所以代碼變音樂,雖然只是滴滴程序員的業余項目,但每一個音符背后,都是滴滴技術和文化的聲響。
如果細聽,和弦的編排,的確融入了程序員們的個人特質,躁動的、冷酷的、張揚的、舒緩的……團隊里的每個人不一樣,但都是可愛的。
小程序上線,一段開心忙碌的旅程結束了。
說到程序員節想怎么過,于留寶又變回了嚴謹低調的工程師。他的愿望:
“最好的慶祝就是線上服務穩定,沒有bug?!?/p>
- 一零后重返海淀黃莊2020-10-21
- 馬云養的螞蟻太瘋狂:每小時盈利500萬,用余額寶和花唄的你都有功勞2020-08-26
- 報道稱蘋果加入反對微信禁令行列2020-08-14
- Strategy Analytics:預計小度智能音箱第二季度出貨量排名國內第一2020-08-14




