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