王俊煜
前兩天整理了一下今年春節(jié)之后的工作日志,發(fā)現(xiàn)大部分時(shí)間自己都在做同一件事情:測(cè)試評(píng)估兩個(gè)AI產(chǎn)品在上線測(cè)試過(guò)程中發(fā)現(xiàn)的問(wèn)題。
這兩個(gè)產(chǎn)品所處的階段幾乎一樣,已經(jīng)上線測(cè)試了,有小規(guī)模的真實(shí)用戶在使用。通過(guò)觀測(cè)這些用戶如何使用,我們發(fā)現(xiàn)了一些比較明顯的問(wèn)題。在推向更多用戶之前,必須解決這些問(wèn)題。
舉一個(gè)例子,其中一個(gè)產(chǎn)品主要面向海外用戶,我們只優(yōu)化了英語(yǔ)的體驗(yàn),非英語(yǔ)用戶很容易遇到一個(gè)問(wèn)題,即我們的AI會(huì)錯(cuò)誤地將用戶輸入的文字翻譯成英語(yǔ)后保存。即使我自己的中英文讀寫(xiě)都流暢,多了一次語(yǔ)言切換,還是給腦子增加了很大的額外負(fù)擔(dān)。本來(lái)我們這個(gè)產(chǎn)品追求的一個(gè)體驗(yàn)就是讓用戶在思考中形成心流,這個(gè)問(wèn)題出現(xiàn)時(shí),會(huì)完全破壞這個(gè)體驗(yàn)。
這個(gè)問(wèn)題在產(chǎn)品上線前我們就知道,只是覺(jué)得不會(huì)經(jīng)常遇到,解決起來(lái)應(yīng)該也不難,就沒(méi)有花精力去解決。上線后我們發(fā)現(xiàn),即使只是測(cè)試階段,非英語(yǔ)用戶也占了大多數(shù),有接近一半的用戶在實(shí)際使用中遇到了這個(gè)問(wèn)題。那就變成了一定要解決的問(wèn)題。
還有幾個(gè)這種程度的類(lèi)似問(wèn)題也是在上線測(cè)試后才引起我們注意的,這本身也是上線測(cè)試的價(jià)值。
許多互聯(lián)網(wǎng)產(chǎn)品都會(huì)掛上“ 測(cè)試版”(Beta)的標(biāo)志,上線請(qǐng)用戶幫忙測(cè)試。但其實(shí)除了上線測(cè)試,更直接、也是更傳統(tǒng)的對(duì)產(chǎn)品質(zhì)量的保障,是團(tuán)隊(duì)內(nèi)部研發(fā)過(guò)程中的測(cè)試。一個(gè)產(chǎn)品的研發(fā)流程,大致分為規(guī)劃、設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、上線幾個(gè)階段,其中測(cè)試可能是被關(guān)注得最少的,至少過(guò)去我關(guān)注得不多。不過(guò)這可能也是我做事的一個(gè)特點(diǎn),做初創(chuàng)企業(yè)更關(guān)心在什么事情上可以取得突破,就不太容易關(guān)注保障性的工作。
離開(kāi)豌豆莢后,我的團(tuán)隊(duì)規(guī)模一直很小,我也一直沒(méi)有再招聘全職的測(cè)試工程師,而是將其分散到各個(gè)職能。除了一部分自動(dòng)化測(cè)試,產(chǎn)品功能主要依靠手工測(cè)試。出了幾次事故后,雖然還是沒(méi)有專(zhuān)業(yè)團(tuán)隊(duì),我還是花了一些精力引入了專(zhuān)業(yè)一些的流程。撰寫(xiě)了測(cè)試手冊(cè),里面收錄了幾百個(gè)功能測(cè)試點(diǎn)。每次測(cè)試時(shí)整個(gè)團(tuán)隊(duì)分頭認(rèn)領(lǐng),花兩三個(gè)小時(shí)就可以在不同的系統(tǒng)、機(jī)型上勾完這些測(cè)試點(diǎn),非專(zhuān)業(yè)團(tuán)隊(duì)也可以用專(zhuān)業(yè)流程來(lái)辦事,準(zhǔn)確又高 效。
自從引入專(zhuān)業(yè)流程,產(chǎn)品發(fā)布的時(shí)候我再也不會(huì)提心吊膽了。我自己在這個(gè)事情上還是花了不少時(shí)間的,所以可能也不能說(shuō)我對(duì)保障性的工作關(guān)注得不多。只是我熱衷的是研究行業(yè)的最佳實(shí)踐,然后只要部署到位,就認(rèn)為自己可以高枕無(wú)憂了。英語(yǔ)里有句話叫“trust theprocess”,在這里可以翻譯成“相信流程”,大概就是這個(gè)意思。
但AI產(chǎn)品的測(cè)試方法看起來(lái)不太一樣。這兩個(gè)AI產(chǎn)品本身的邏輯都蠻簡(jiǎn)單的,復(fù)雜的都是大語(yǔ)言模型本身。要解決我上面提到的問(wèn)題,一是涉及對(duì)我們使用的大語(yǔ)言模型更細(xì)致的調(diào)整,二是需要調(diào)整提示詞(Prompt)的設(shè)計(jì)。解決具體問(wèn)題不難,但大語(yǔ)言模型輸出的是開(kāi)放答案,本身有一些隨機(jī)性和不可預(yù)測(cè)性,有時(shí)候?yàn)榱搜a(bǔ)西墻會(huì)不小心拆了東墻,修復(fù)了一個(gè)問(wèn)題,卻帶來(lái)了新的問(wèn)題。這個(gè)產(chǎn)品的測(cè)試,如果也想讓自己高枕無(wú)憂,就不是在過(guò)去的測(cè)試點(diǎn)清單上打勾就可以了。
此外,如果需要不斷提升產(chǎn)品的效果,不僅僅是保證不出現(xiàn)問(wèn)題,也需要對(duì)AI的輸出做定量的評(píng)估。過(guò)去我們也做過(guò)搜索引擎,對(duì)算法的評(píng)估是類(lèi)似的,同一個(gè)功能點(diǎn)需要測(cè)試許多不同的場(chǎng)景。但AI功能的輸出和用戶的交互歷史有關(guān),如果使用純?nèi)斯y(cè)試,意味著需要反復(fù)聊很多次天,這樣子變數(shù)非常多,不像搜索引擎一樣只需要輸入一個(gè)關(guān)鍵詞就可以評(píng)估。
所以,我又開(kāi)始找某種最佳實(shí)踐。
回想了一下,自去年7月恢復(fù)工作以來(lái),我的工作更像是程序員,而不是設(shè)計(jì)師,大部分的時(shí)間都在寫(xiě)代碼。我上一次在工作中需要大量寫(xiě)代碼,還是剛畢業(yè)的時(shí)候,17年前了。
之前在專(zhuān)欄中我也表達(dá)過(guò),有時(shí)候難免會(huì)擔(dān)心,這算不算是職業(yè)生涯的倒退。當(dāng)然,我也會(huì)認(rèn)為,這可以帶給我信心,產(chǎn)品研發(fā)流程中的每個(gè)環(huán)節(jié)我都掌握了。我管自己叫程序員而不是軟件工程師,是覺(jué)得我的三腳貓功夫搭個(gè)草房子還可以,稱(chēng)不上“工程師”。但在AI的幫助下,這半年我的編程水平還是有很大進(jìn)步的,可能慢慢地可以搭一個(gè)木頭房子了。
做產(chǎn)品設(shè)計(jì)需不需要懂技術(shù),是一個(gè)亙古不變的話題。在過(guò)去,我的答案是,如果你要?jiǎng)?chuàng)造新的東西,你還是需要知道面前這塊畫(huà)布的特性的。而在今天這個(gè)AI快速發(fā)展的階段,沒(méi)有人能準(zhǔn)確說(shuō)出AI的能力邊界。要了解這塊畫(huà)布,必須動(dòng)手。
之前介紹過(guò)IDEO的理論:產(chǎn)品創(chuàng)新需要同時(shí)滿足人的渴求、技術(shù)可行性和商業(yè)可持續(xù)性。AI帶來(lái)的是技術(shù)可行性的巨大變化,這是我作為產(chǎn)品設(shè)計(jì)師感到興奮的。挑戰(zhàn)則是,如果說(shuō)設(shè)計(jì)師的工作是創(chuàng)造性地解決用戶的問(wèn)題,由于技術(shù)的不確定性,設(shè)計(jì)方案也必須在研發(fā)過(guò)程中不斷調(diào)整。這時(shí)候,設(shè)計(jì)師多花點(diǎn)時(shí)間寫(xiě)代碼、探索AI的能力邊界是應(yīng)該的,這樣才能創(chuàng)新。
和半年前相比,不管是GP Ts,還是類(lèi)似Coze、Dify這樣的工具,成熟度都有了很大提升。用它們都可以快速搭建出一個(gè)產(chǎn)品的雛形。但這些工具目前也只是照顧到大多數(shù)情況下需要用到的東西,做出一個(gè)60分的演示沒(méi)有太大問(wèn)題,如果要設(shè)計(jì)更創(chuàng)新的體驗(yàn),或者需要提升到80分、90分,眼下還是需要自己寫(xiě)代碼的。代碼,在這里就是一個(gè)設(shè)計(jì)工具。
但我的另外一個(gè)建議是不宜鉆研過(guò)深。如果技術(shù)思維過(guò)強(qiáng),做事情容易過(guò)于從技術(shù)可行性出發(fā),忘記用戶的問(wèn)題是什么。
開(kāi)始寫(xiě)代碼之后的另外一個(gè)好處,是對(duì)產(chǎn)品品質(zhì)可以有更直接的影響。創(chuàng)新和品質(zhì),大概就是我做產(chǎn)品最關(guān)心的兩個(gè)方面。
作為處女座,我做這些事情還是很愉悅的。2007年剛畢業(yè)的時(shí)候我以設(shè)計(jì)師和工程師的雙重身份入職Google,也接受了工程師的入職培訓(xùn)。印象最深的是,導(dǎo)師說(shuō),你作為工程師不能花太多時(shí)間寫(xiě)代碼,最多1/ 3,否則質(zhì)量就會(huì)有問(wèn)題了。剩下1/3要用來(lái)讀別人的代碼,也就是代碼審查,再花1/ 3的時(shí)間做程序的設(shè) 計(jì)。
我的很多工作習(xí)慣都是那時(shí)候養(yǎng)成的。我在Google的第一個(gè)項(xiàng)目是設(shè)計(jì)App Engine的管理后臺(tái),這是Google第一個(gè)面向開(kāi)發(fā)者的托管服務(wù),當(dāng)時(shí)還不流行“云”這個(gè)概念,它可能是Google Cloud最早的雛形。Python之父Guidovan Rossum恰好和我同一天入職,也加入了這個(gè)項(xiàng)目。我是剛寫(xiě)下自己的第一行Python的新手,Guide是Py thon的發(fā)明者,但他也沒(méi)有特殊待遇,和我一樣需要先在入職培訓(xùn)中通過(guò)Google的Python考試,才能持證上崗,有資格提交Python代碼。
Guido通過(guò)考試時(shí)在自己的周報(bào)中特意寫(xiě)下了這件事,在當(dāng)時(shí)傳為笑談。
過(guò)去我自己做的公司,像Google一樣的代碼審查從來(lái)沒(méi)有嚴(yán)格實(shí)施過(guò),多數(shù)是走過(guò)場(chǎng)(“幫我過(guò)一下”)。據(jù)我所知,似乎也沒(méi)有哪個(gè)中國(guó)公司能做到。顯然,認(rèn)真的代碼審查會(huì)讓開(kāi)發(fā)節(jié)奏變慢,但是不是能有效提升質(zhì)量,讓效率更高?今天我自己實(shí)際上手來(lái)做這個(gè)事情,對(duì)工程開(kāi)發(fā)的方法更有體會(huì)了。
這也是和結(jié)果有關(guān)的。我們一直做的產(chǎn)品的定位還是對(duì)質(zhì)量有比較高的要求的,但過(guò)去很多年的一個(gè)困擾,是質(zhì)量無(wú)法達(dá)到理想狀態(tài)。當(dāng)然,坦白說(shuō),我覺(jué)得這個(gè)工作還是應(yīng)該由技術(shù)合伙人或者CTO來(lái)承擔(dān),只是我們現(xiàn)在還太早期了,不一定需要這個(gè)角色。
說(shuō)回如何測(cè)試AI產(chǎn)品,其實(shí)已經(jīng)有很多人發(fā)明了很多輪子。刻薄點(diǎn)說(shuō),可能大家都還不太知道AI能做什么,所以才把精力花在造輪子上了。
細(xì)節(jié)略去不表,總之我額外花了幾周時(shí)間找到一個(gè)看起來(lái)不錯(cuò)的輪子,把它安裝到了我們的產(chǎn)品中。這件事情最終花費(fèi)的時(shí)間大大超出了我的預(yù)期。我永遠(yuǎn)都覺(jué)得“下周可以弄完”。而且,由于這個(gè)過(guò)程中還是有挺多重復(fù)的工作的,盡管當(dāng)中的許多可以由AI協(xié)助完成,還是花費(fèi)了我很多時(shí)間。在這個(gè)過(guò)程中我還是時(shí)常懷疑,這是不是對(duì)自己時(shí)間的有效使 用。
如果再做一次,我相信是可以節(jié)省很多時(shí)間。有了經(jīng)驗(yàn),可能就知道哪些事情可以跳過(guò),這樣可以節(jié)約很多時(shí)間。但是不是一開(kāi)始就可以不選擇這個(gè)方式?如果還是手工測(cè)試后就閉著眼睛上線,效果會(huì)有多大區(qū)別?
我此刻可能還沒(méi)有答案。尤其是我試用過(guò)的很多A I產(chǎn)品,包括大公司做的,其實(shí)都無(wú)法正常工作。這個(gè)月發(fā)貨的“首款人工智能硬件”AI Pin被The Verge稱(chēng)為“可能是現(xiàn)代技術(shù)史上評(píng)價(jià)最差的產(chǎn)品發(fā)布”,我看了幾個(gè)測(cè)評(píng),不需要嚴(yán)謹(jǐn)?shù)臏y(cè)試,簡(jiǎn)單試用你就知道它無(wú)法完成用戶期望它完成的工作。這些當(dāng)然不是好的例子,我們不希望做這樣的產(chǎn)品。
但我們的兩個(gè)AI產(chǎn)品遲遲未能成功上線,每次有這種“失控”的感覺(jué),我就容易變得煩躁起來(lái)。
現(xiàn)在,我的確會(huì)更直觀地理解,為什么研發(fā)項(xiàng)目的時(shí)間很難估算準(zhǔn)確。很多年前我讀過(guò)一篇文章,文中拿從舊金山沿海岸線徒步到洛杉磯舉例,稱(chēng)從地圖上看無(wú)非是四百多英里的距離,簡(jiǎn)單的除法告訴我們,理論上7天可以走完。實(shí)際上呢?我沒(méi)有搜索到很準(zhǔn)確的答案,有人說(shuō)他的一個(gè)退役軍人朋友嘗試過(guò),大概花了6個(gè)月。這當(dāng)中的細(xì)節(jié)、不確定性,都是在地圖上無(wú)法看到的。
所以可能軟件工程的美妙就是要在未知中探索。商業(yè)也是一樣—如果我們不是要解決一個(gè)已知問(wèn)題的話。