晚上七點,蘇念念選的餐廳。
不是什么高檔地方,是他家附近商圈的一家湘菜館,叫“辣得莫法”。
他到的時候,蘇念念已經在靠窗的位置坐著了。
韓路一拉開椅子坐下,抬頭看了她一眼。
上次在Bug Café是下午,陽光從落地窗照進來,蘇念念坐在逆光里,干凈清爽,像一杯溫水。現在是晚上,餐廳暖色的吊燈從上方打下來,她的眉眼輪廓比白天更深,長發散著垂到肩上,淺杏色的針織衫襯得鎖骨那截細鏈格外顯眼,整個人多了一點白天沒有的味道。
“今天真好看。”韓路一坐定了,語氣隨意得像在說今天天氣不錯。
“……哪天不好看了?”
“沒有不好看的時候,上次是上次的好看,今天是今天的好看。”
他說得太順了,順到蘇念念沒辦法判斷這是真心話還是嘴貧,接了像在撒嬌,不接又顯得小氣。
“嘴真貧。”她最后只說了這三個字,轉頭看向窗外,耳朵尖有一點點紅,但燈光昏黃,看不太出來。
她面前擺著一臺打開的蘋果電腦,屏幕上密密麻麻的都是表格。
服務員走過來,蘇念念剛要拿菜單,韓路一已經開口了。
“一個剁椒魚頭、一個小炒黃牛肉、一個虎皮青椒、一個酸辣土豆絲,米飯兩碗,再來一扎酸梅湯。”
蘇念念看著他,手里的菜單舉了一半,沒放下也沒打開。
“……你點這么快?”
“我家就在附近,這家店來過幾次。”韓路一順手接過她手里的菜單遞還給服務員。
等菜的時候,蘇念念把電腦轉過來給他看。
“你說有想法要聊,又不給我劇透,我只好自己猜了,關于代碼審查,我先把賽道摸清楚了。”她抬了抬下巴,“產品經理的基本功。”
屏幕上是一份競品分析表:十七款產品,每一款都列了核心功能、技術路線、定價策略、用戶評價、融資輪次,最右邊一列是她自己標的評分,滿分五分,最高的一款只拿了三分。
“你什么時候做的?”韓路一問。
“上次跟你聊完就開始整理了,本來只是隨手查查,結果越查越多。”蘇念念說得很輕松,像在說一件不值一提的事。
韓路一看了她一眼,她眼下有一層薄薄的遮瑕,蓋住了熬夜的痕跡。
“你給最高分的這款,缺什么?”他指著表格問。
“跟上次我跟你說的一樣,只能做靜態分析,找到了Bug,但不能告訴你這個Bug在真實業務場景里會造成什么影響,程序員需要的不是「你這行代碼有問題」,而是「這行代碼上線后會炸成什么樣」。”
“所以核心痛點是——”
“是「代碼和現實之間的鴻溝」。”蘇念念用手指敲了敲桌面,“你上次的原話,我回去想了好幾天,越想越覺得你說到點子上了。”
剁椒魚頭端上來了,熱氣騰騰的。韓路一拿起公筷,挑了幾塊魚腮邊最嫩的肉放到蘇念念碗里。
“先吃,涼了腥。”
蘇念念低頭看了一眼碗里的魚肉,全是最好的部位。
她沒說謝謝,拿起筷子吃了一口。
“我想做一款工具。”他說,“名字我都想好了,BugKiller。”
“BugKiller?”蘇念念念了一遍,嚼著魚肉,皺了下眉,“名字太geek了,程序員聽著過癮,但以后要做商業化的話不好賣,先當內部代號用吧,回頭再想個正式的。”
“它不只是找Bug,它要做的是——”韓路一在腦子里組織了一下語言,“建立一個Bug模式數據庫,把各種類型Bug的特征、觸發條件、影響范圍、最優修復路徑全部結構化,然后用這些數據訓練AI模型,讓AI學會「看到一段代碼就知道它上線后可能會出什么問題」。”
蘇念念放下筷子,身體前傾。
“等等,你說的Bug模式數據庫,數據從哪來?這是最關鍵的問題。市面上的競品之所以做不好,就是因為訓練數據只有代碼本身,缺乏「代碼在真實場景中的表現」這一層。”
“從我這里來。”
蘇念念眨了兩下眼睛。
韓路一解釋:“我這些年寫了幾十萬行代碼,debug過的系統也少說有幾十個,最近自由接單又修了上百個項目,每一個Bug的特征、觸發條件、修復路徑,我都在記錄。”
這是實話,只不過他省略了視界的部分。
“你的個人經驗當然有價值,但一個人的樣本量不夠啊,”蘇念念皺眉,“AI訓練需要大量數據。”
“對,所以第一步是做最小可用產品,用我現有的模式數據庫做一個原型,先驗證思路能不能跑通。如果跑通了,第二步再想辦法擴大數據源,比如接入開源社區的Bug報告、公開的代碼漏洞庫、技術論壇的問答數據。”
“MVP先行,數據飛輪后做。”蘇念念總結了一句。
“對。”
“那你的MVP打算多長時間做出來?”
“一周。”
蘇念念正在喝酸梅湯,差點嗆了。
“一周?你認真的?”
“我已經開始寫了,今天下午搭了Bug模式數據庫的框架,分類結構都想好了,算法層面我有現成的經驗,模型訓練我也熟,一周出原型不是問題。”
蘇念念看了他三秒鐘,把酸梅湯放下了。
“你知道我在公司推那個AI代碼審查項目,光需求階段就花了兩個月。”
“因為你們有流程,有審批,跨部門協調,領導要拍板。”
蘇念念想了想,笑了:“好吧,卷王你說一周就一周,那我能幫什么?”
“用戶調研和需求文檔。”韓路一說,“你比我了解用戶,你來定義BugKiller應該長什么樣、核心功能優先級怎么排、第一批目標用戶是誰。”
“這我在行。”蘇念念已經開始在電腦上打字了。
兩個人一邊吃一邊聊,越聊越快,蘇念念一手夾菜一手打字,韓路一說到技術方案的時候習慣性用筷子在桌上比劃,被她拍了一下手背,“別拿筷子點桌子,不禮貌。”
剁椒魚頭見底的時候,蘇念念的電腦上已經有了一份完整的MVP需求文檔。
韓路一看了一遍。
“你這需求寫得太清楚了。”他說。
“不然呢?寫需求含糊其辭等著開發罵我?”蘇念念哼了一聲,“而且……”
她停了一下,語氣變輕了一點。
“好久沒碰到這么聊得來的開發了,我在公司跟技術團隊掰扯一個需求能掰扯一個禮拜,你這兒四十分鐘就搞定了。”
“那是因為你需求寫得好。”
蘇念念沒說話,低頭合上了電腦。
燈光從側面照過來,睫毛在她臉上投下一小片陰影。
“一周后你給我看原型,我幫你做用戶測試。”她說。
“你用什么身份做?你還在公司上班呢。”
蘇念念端起酸梅湯喝了一口,視線落在窗外。
“當作朋友幫忙。”她過了兩秒才說,“反正我自己的項目被人拿走了,閑著也是閑著。”
韓路一叫了買單,蘇念念搶了一下沒搶過,瞪了他一眼:“下次我請。”
“行,等BugKiller上線那天你請。”
“成交。”蘇念念收好電腦,又看了他一眼,“對了,回去別又泡面對付,冰箱里多少放點東西。”
“我什么時候泡面對付了?”
“你大學四年有三年的午飯是泡面加火腿腸,別以為我不知道。”
“……那是因為懶,不是因為窮。”
“結果呢?現在也沒改吧。”
韓路一想反駁,但發現自己昨天中午確實吃的泡面,他沒說話。
蘇念念笑了一下。
出了餐廳,夜風有點涼。
“你怎么回去?”韓路一問。
“打車。”蘇念念掏出手機叫車,“你呢?”
“走路,十五分鐘。”
“那你先走吧,別等我了。”
“不急。”韓路一靠在路燈桿上,“等你車來了我再走。”
蘇念念看著手機屏幕,沒抬頭,風把她的長發吹到臉側,她伸手別到耳后。
“韓路一。”
“嗯?”
她好像要說什么,但手機響了,車到了。
“沒事。”蘇念念拉開車門,回頭沖他笑了一下,“回去早點睡,別又寫到凌晨。”
“知道了,媽。”
“……滾。”
車門關上,車開走了。
韓路一站在原地看著尾燈消失在路口,然后往回走。
他打開視界。
街邊的一切立刻有了數據浮層,公共垃圾桶底座的螺絲松了兩顆,便利店的招牌有三個像素的色偏,對面人行道上一個跑步的中年男人左膝半月板有磨損。
整個世界像被掀開了一層皮,露出底下密密麻麻的代碼。
韓路一關掉視界,繼續走。