王俊煜
7月初我回了趟廣東,參加高中畢業(yè)20周年的同學(xué)聚會(是的,我有這么大年紀(jì)了)。按之前的想法,從廣東回來,就應(yīng)該恢復(fù)閱覽室的工作了。
工作意外暫停了一段時間,當(dāng)然不算什么好事。但樂觀地想,也可以看成一次打破之前僵局的機會。所以,與其一下子回到閱覽室的日常工作,不如利用這次重啟,先跳出之前的思路,看看有沒有什么不同的路徑,可以另辟蹊徑實現(xiàn)“認真閱讀”。
如果你讀過過去幾期的本專欄,應(yīng)該也不難猜到,我們想探索一些“認真閱讀”和AI的結(jié)合。
這幾個月我雖然沒有在全職工作,但腦子沒有停下來,積累了不少“認真閱讀”和AI結(jié)合的主意。這些想法不敢說有多創(chuàng)新,甚至我自己都覺得有些淺顯,但的確都是市場上目前還沒有別人做出來的,也就無從體驗??湛跓o憑、眼見為實,人類的想象力是很有限的。對于不存在的東西,即使是你自己創(chuàng)造的,等你看到它、體驗它的時候,也會發(fā)現(xiàn)和自己的想象很不一樣。
所以,第一步還是要做出來我們自己可以體驗的原型產(chǎn)品,看看能不能“眼前一亮”。
怎么做出原型呢?我打算自己來寫代碼。
一方面是,過去幾個月一直在研究這個領(lǐng)域,對這些主意在技術(shù)上如何實現(xiàn),心里大致有數(shù)。再加上對自己的代碼能力有一些不切實際的高估,覺得自己應(yīng)該沒有問題。工作啟動的第一天,兩個小時我就做出來能用的第一個版本了,更讓人誤以為自己是天才。
另一方面,其實對于這些主意來說,原型制作可以被認為是產(chǎn)品設(shè)計過程的一部分,而不是開發(fā)過程的一部分。上期提到,創(chuàng)新必須同時滿足商業(yè)可持續(xù)性、人的渴求和技術(shù)可行性,簡單粗暴地理解成產(chǎn)品經(jīng)理、設(shè)計師和工程師各自對應(yīng)的角色的話,在傳統(tǒng)的開發(fā)流程中,產(chǎn)品經(jīng)理先做好產(chǎn)品規(guī)劃,確定產(chǎn)品要解決什么業(yè)務(wù)問題;評審?fù)ㄟ^后再由設(shè)計師完成用戶體驗設(shè)計和界面設(shè)計;設(shè)計稿確定后,才交給工程師開發(fā)上線。這樣的一個流程倒過來看,相當(dāng)于是預(yù)設(shè),技術(shù)上的可行性是無法影響設(shè)計決策的,設(shè)計也無法影響商業(yè)決策。
互聯(lián)網(wǎng)行業(yè)已經(jīng)非常成熟,大多數(shù)時候上面這個預(yù)設(shè)是對的。很多團隊中,對工程師的最高評價簡單說來是“有求必應(yīng)”,能很好地實現(xiàn)前序流程的要求,不需要也無法影響前序決策。
但AI近半年的發(fā)展給產(chǎn)品的技術(shù)可行性帶來了翻天覆地的變化。很多以前“不可行”的事情,現(xiàn)在一瞬間就變得“可行”了。而且,以目前的發(fā)展速度,即使這周還不可行,說不定下周就可行了?!翱尚行浴弊兂闪苏麄€環(huán)節(jié)中最大的變量。即使只考慮設(shè)計和工程,這也意味著兩者會變成一個相互影響糾纏的過程,在目前這個階段中沒有誰先誰后的區(qū)別。
工作意外暫停了一段時間,當(dāng)然不算什么好事。但樂觀地想,也可以看成一次打破之前僵局的機會。
比如,設(shè)計師原本想實現(xiàn)的體驗,可能工程師會發(fā)現(xiàn)做不出來。但工程師在探索過程中發(fā)現(xiàn)的新的可行性,說不定又會被設(shè)計師慧眼識珠,放到新的場景和交互中。這樣子往前不斷迭代。摸索的感覺就像在沙灘上撿貝殼一樣,無法預(yù)先規(guī)劃。
如果沿用傳統(tǒng)的工作方式,思路很容易被過去對可行性的認識局限住?,F(xiàn)階段想在AI產(chǎn)品上做出創(chuàng)新和突破,應(yīng)該使用更激進的方式。
當(dāng)然,這對團隊要求很高,需要設(shè)計師、工程師和產(chǎn)品經(jīng)理非常緊密地溝通。什么樣的溝通成本最低呢?不管人和人之間的溝通效率有多高,都沒有自己和自己的溝通效率高。所以我想試試自己來寫代碼搭建原型,之后要進入開發(fā)階段的時候,再請真正的工程師來加入。
我本科畢業(yè)后加入Google的用戶體驗團隊,名片上印的頭銜是“用戶體驗開發(fā)工程師”,是我自己給自己寫的??雌饋砗孟窈軈柡?,但其實是藏拙了。
有機會加入Google本來就是一件運氣非常好的事情。我本科學(xué)物理,除了大一的《計算概論》和《算法與數(shù)據(jù)結(jié)構(gòu)》兩門入門課程,學(xué)的和軟件工程沒有什么關(guān)系,和設(shè)計更不沾邊。只是因為一直對媒體、互聯(lián)網(wǎng)感興趣,本科期間花了不少課余時間設(shè)計制作網(wǎng)站,也因此對如何開發(fā)編寫網(wǎng)頁比較熟悉。那是2006年前后,“用戶體驗設(shè)計”這個概念國內(nèi)剛剛開始接觸到。我印象很深刻,我在Google大堂等面試的時候,還在用大堂的電腦瀏覽白鴉的blog,他是最早的布道者之一。
雖然我經(jīng)常自稱設(shè)計師,但我猜想我當(dāng)時單憑設(shè)計能力還是無法加入Google的。至于寫代碼,這里稍作解釋,雖然看起來都是在黑漆漆的界面上敲字母,但“寫網(wǎng)頁”其實和“編程”沒有什么關(guān)系,更像是一個手藝活兒,是一種創(chuàng)作方式。感謝當(dāng)時領(lǐng)導(dǎo)Google中國的開復(fù)和美國總部的設(shè)計團隊,能為個例來定制職位。當(dāng)時的設(shè)想,就是我這樣一個角色加入團隊,可以幫助其他設(shè)計師或者獨立完成一些需要制作原型的設(shè)計任務(wù)。
當(dāng)時Google的用戶體驗設(shè)計團隊屬于工程部,其實大部分總部的設(shè)計師同事也是工程背景的,經(jīng)常在設(shè)計評審上看到的“設(shè)計稿”,都已經(jīng)是可以交互的原型了,而不是靜態(tài)的設(shè)計圖。我后來自己負責(zé)的設(shè)計項目大多數(shù)也是用這種方式。
比如,當(dāng)我設(shè)計Google拼音輸入法某個功能的時候,想設(shè)計一種其他輸入法都沒有做過的、新的交互(和現(xiàn)在許多有AI加持的編輯器做自動補全的體驗有些像)。傳統(tǒng)的設(shè)計方法要交付的是流程圖:用戶在鍵盤上敲某個鍵,下一步會發(fā)生什么,一步一步畫出來。但對于一個輸入法而言,鍵盤的鍵那么多,流程的可能分叉數(shù)不勝數(shù),都畫在一張圖上過于復(fù)雜不說,對于其他同事來說,看著這樣的一張圖其實也沒有辦法想象用戶最后的感受。
輸入法的開發(fā)成本很高。我后來的做法,就是在網(wǎng)頁上做了一個“假”輸入法,大致實現(xiàn)了輸入法的基本功能,也將我想要的體驗做了出來。對于評估的同事來說,這個原型可以幫助他們直接感受到用戶的最終體驗。對于工程師同事來說,對著這個去開發(fā)“真的輸入法”,也更直觀一些。當(dāng)然,這個“假”輸入法的所有代碼,質(zhì)量是很差的。它只是設(shè)計過程的一部分,用完即棄。
我對于探索新的交互形式特別感興趣,也是喜歡這種工作方式能帶來的創(chuàng)新。
回到我們的“計劃”:7月的每一周我們都要做一個不同的原型,實現(xiàn)一個不同的主意。這樣到月底的時候我們就有了4個原型,可以決定挑其中的哪些去進入真正的開發(fā)過程。
有了AI工具的幫助,寫代碼的過程比過去簡單多了。所謂熟能生巧,但對于我們這種三腳貓功夫的程序員來說,隔幾個月甚至一兩年才寫一個小項目,每次都需要花不少時間重新熱身,阻礙工作進度的都是一些特別初級的問題。比如說,我打算用Python來寫這幾個原型,那么我寫完了一段Python程序,到底應(yīng)該怎么讓它運轉(zhuǎn)起來呢?安裝、調(diào)試各種配套工具的時間,可能都比寫代碼的時間多得多。再比如,作為一門編程語言,Python有規(guī)定的語法,而我對此并不完全熟悉。只要有一些寫不對,就會出錯,就要花時間學(xué)習(xí)理解,到底哪里錯 了。
有了AI編程助手以后,可以向AI用自然語言描述我想做什么,由AI直接生成對應(yīng)的代碼。在代碼編輯器里面敲幾個字母,AI也很容易根據(jù)上下文猜出我想做什么,直接自動續(xù)寫一整段代碼。代碼運行報錯,也可以直接把報錯信息貼給AI,讓AI直接告訴我到底哪里出錯了、為什么。
其實和學(xué)外語還是有一點像的,都是用不同的語言來表達自己的想法,只是寫代碼不是向人表達,而是向機器表達。AI加入后的寫代碼體驗,無疑減少了許多表達的阻力,讓整個工作更容易進入所謂的“心流”,順暢地將自己腦子里面的東西持續(xù)地寫出來。聯(lián)想起我和AI用英語聊天的體驗其實也類似,由于完全不需要講究語法或者句式是否優(yōu)美,亂七八糟連比帶劃地敲出去,反而降低了表達的門檻。
而且,和其他工作比,寫代碼這個工作中的每個小任務(wù)的預(yù)期產(chǎn)出都非常明確,就像解題一樣,還挺容易沉迷其中的。復(fù)工恢復(fù)狀態(tài)下,我花在這上面的時間比較多,也總?cè)菀紫肫饎偖厴I(yè)時的工作。那是我目前職場生涯中唯一的兩年“打工”生涯,還是挺簡單、挺純粹 的。
不過,原本打算一周做完的原型,最后還是花了一個半月。第一天覺得自己是天才,等到第30天的時候,開始想,要不還是找個人幫忙算了……
如果說AI能幫忙解決90%的問題,那就是剩下這10%的問題,占用了太多時間。如果是一位熟練的工程師,解決我遇到的問題,應(yīng)該會比我快很多。AI輔助編程是這一代大語言模型中最早商用的應(yīng)用,即使這樣,也還是有很大改進空間的。
通用大語言模型的一些問題,在AI輔助編程中同樣存在。比如,AI的數(shù)據(jù)更新不及時;很多時候AI只能提供一些建議,很少能直接替我完成一項任務(wù);對于特定領(lǐng)域的知識AI并不了解,但又無法去查閱對應(yīng)資料,等等。
目前AI輔助編程,主要也是通過聊天和編輯器中自動補全的形式來實現(xiàn),經(jīng)常需要到處復(fù)制粘貼,也并不方便。因此,我還是不覺得聊天就是AI的終極交互形態(tài)。
等第一個原型做出來,把我們覺得重要的功能都實現(xiàn),讓我們自己能體驗到,已經(jīng)是8月中旬了?,F(xiàn)在是8月下旬,做了兩個原型,還差兩個。
我們的目標(biāo)是做出自己每天都想用的產(chǎn)品,這樣子對原型的完整度要求高一些,是需要真的日常使用的。的確,在第一個原型的制作過程中,我們自己每天使用這個原型,根據(jù)使用體驗不斷調(diào)整它的設(shè)計,有意料之外的驚喜,也有失望。一個半月過去,雖然核心想法沒有變,整個想法和最初相比已經(jīng)做了很多調(diào)整 了。
這兩個原型我們還沒有準(zhǔn)備好公之于眾,現(xiàn)在只是定向邀請我們覺得可能有需求的朋友們來使用。它們都和“認真閱讀”有關(guān),只是在特定場景下,換了一些不同的方式。不管是幫助自己回想起曾經(jīng)閱讀的片段、提升查找效率,還是發(fā)現(xiàn)不曾想到的角度,甚至提供一些情感支持,都有一些我們之前沒有想到的體 驗。
希望可以盡快和大家見面。