深夜重構(gòu)代碼時(shí),我在想什么?關(guān)于網(wǎng)站溫度與機(jī)器冷感的思辨
凌晨?jī)牲c(diǎn)十七分,辦公室只剩顯示器的幽光。
我盯著屏幕上那段三年前寫(xiě)的代碼——它運(yùn)行良好,邏輯清晰,注釋規(guī)范,堪稱模范。但我還是毫不猶豫地按下了刪除鍵。
不是因?yàn)樗衎ug。恰恰相反,它太完美了。完美得像個(gè)冰冷的機(jī)器。
一個(gè)按鈕的“人性”
三年前,我為一家獨(dú)立書(shū)店設(shè)計(jì)網(wǎng)站的“加入購(gòu)物車”按鈕。當(dāng)時(shí)的我引以為傲:按鈕會(huì)在用戶懸停0.3秒后優(yōu)雅放大,顏色從墨藍(lán)漸變?yōu)榕?,點(diǎn)擊反饋精確到毫秒級(jí)。
今天再看,卻覺(jué)得哪里不對(duì)勁。
太順滑了。順滑得像流水線上的機(jī)械臂,每一次動(dòng)作都分毫不差。而這家書(shū)店的店主是個(gè)說(shuō)話慢吞吞的老先生,找零錢(qián)時(shí)會(huì)和你聊兩句天氣,包書(shū)皮時(shí)會(huì)問(wèn)你要不要寫(xiě)張卡片。
一個(gè)如此精準(zhǔn)的按鈕,配不上一雙如此溫暖的手。
于是重構(gòu)。我不再追求極致的動(dòng)畫(huà)曲線,而是在點(diǎn)擊后增加了一個(gè)隨機(jī)延遲——0.2到0.5秒之間浮動(dòng),像極了老先生慢悠悠地從柜臺(tái)后探出身來(lái)。
有人會(huì)說(shuō):你這是反優(yōu)化。用戶要的是效率。
可我想要的是:當(dāng)你在凌晨三點(diǎn)下單一本詩(shī)集時(shí),這個(gè)按鈕能讓你恍惚覺(jué)得,真的有個(gè)人在另一端為你打包。
代碼有體溫嗎?
我們這代人,花了太多時(shí)間追求“快”。
頁(yè)面加載要快,交互響應(yīng)要快,轉(zhuǎn)化路徑要快。我們用A/B測(cè)試篩選出點(diǎn)擊率最高的按鈕顏色,用熱力圖砍掉所有“干擾用戶”的設(shè)計(jì)元素,最終得到一個(gè)效率最大化的機(jī)器。
這個(gè)機(jī)器確實(shí)跑得很快。但跑進(jìn)去一看,空無(wú)一人。
我開(kāi)始思考一個(gè)在需求文檔里永遠(yuǎn)不會(huì)出現(xiàn)的問(wèn)題:代碼有體溫嗎?
如果有,37.2℃應(yīng)該是什么樣?
也許是頁(yè)面滾動(dòng)時(shí)那一絲微妙的阻力感,像翻動(dòng)紙質(zhì)書(shū)頁(yè);
也許是表單輸入完成后,一個(gè)小小的煙花彩蛋,盡管只是提交了一個(gè)訂閱請(qǐng)求;
也許是404頁(yè)面里藏著一句“你迷路了嗎?沒(méi)關(guān)系,我也經(jīng)常迷路?!?/p>
這些“多余”的設(shè)計(jì),在KPI面前毫無(wú)價(jià)值。它們甚至?xí)下D(zhuǎn)化率,增加跳出率。
但它們讓一個(gè)網(wǎng)站有了體溫。
機(jī)器冷感的來(lái)源
我們?yōu)槭裁春ε吕洌?/p>
因?yàn)槔湟馕吨辉诤酢?/p>
當(dāng)一個(gè)網(wǎng)站對(duì)你的一切行為都無(wú)動(dòng)于衷——點(diǎn)按鈕就跳轉(zhuǎn),填表單就提交,離開(kāi)也不挽留——它就像一個(gè)面無(wú)表情的柜員,隔著防彈玻璃為你辦理業(yè)務(wù)。
業(yè)務(wù)辦完了,你和它之間沒(méi)有任何關(guān)系。
而一段有溫度的代碼,會(huì)在你第二次訪問(wèn)時(shí)說(shuō)“歡迎回來(lái)”;
會(huì)在你深夜瀏覽時(shí)把亮度自動(dòng)調(diào)低一點(diǎn),不刺眼;
甚至?xí)谀悛q豫是否離開(kāi)時(shí),悄悄彈出一個(gè)不那么商業(yè)化的對(duì)話框:“要走了?要不要聽(tīng)聽(tīng)我今天在聽(tīng)的歌?”
這些都不是技術(shù)難題。難的是,我們是否愿意承認(rèn):網(wǎng)站也是會(huì)“累”的,也是會(huì)“關(guān)心人”的。
凌晨三點(diǎn),我在想什么
寫(xiě)到這里,顯示器右下角彈出一條提醒:新訂單,有人買了一本《夜晚的潛水艇》。
系統(tǒng)自動(dòng)發(fā)送了標(biāo)準(zhǔn)感謝郵件。我突然想手動(dòng)給ta發(fā)一句:這本書(shū)適合在臺(tái)燈下讀,別開(kāi)頂燈。
當(dāng)然我沒(méi)這么做。運(yùn)營(yíng)規(guī)范不允許。
但我在代碼里埋了一個(gè)小小的彩蛋:如果用戶在凌晨0點(diǎn)到5點(diǎn)之間下單,訂單確認(rèn)頁(yè)的背景會(huì)從白色慢慢變成深藍(lán)色,像夜空的顏色。
沒(méi)有人會(huì)因?yàn)檫@個(gè)設(shè)計(jì)多買一本書(shū)。甚至99%的人可能根本注意不到。
但那個(gè)凌晨買書(shū)的人,如果偶然抬頭看了一眼窗外,再低頭看一眼屏幕——兩個(gè)夜空恰好一樣深。ta會(huì)不會(huì)覺(jué)得,這個(gè)網(wǎng)站有那么一點(diǎn)點(diǎn)懂ta?
這就是我理解的“溫度”。不是刻意的討好,不是算法的精準(zhǔn)推送,而是一種若有若無(wú)的陪伴感。
像是在偌大的互聯(lián)網(wǎng)里,有人為你留了一盞燈。
結(jié)尾
凌晨四點(diǎn),重構(gòu)完成。新代碼比原來(lái)少了23行,加載速度還慢了幾十毫秒。
按說(shuō)這是退步。但不知為什么,測(cè)試的時(shí)候,總覺(jué)得那個(gè)購(gòu)物車按鈕按下去的瞬間,微微頓了一下——像在等你確認(rèn)。
也許是我的錯(cuò)覺(jué)。
也許代碼真的有體溫。
窗外天快亮了。那些被刪除的舊代碼,大概正在某個(gè)數(shù)據(jù)廢墟里,懷念它們?cè)珳?zhǔn)運(yùn)行過(guò)的每一個(gè)白天。而新代碼即將迎來(lái)第一個(gè)用戶。
ta會(huì)感覺(jué)到什么嗎?
我不知道。但我想起那位書(shū)店老先生說(shuō)過(guò)的話:
“賣書(shū)嘛,不就是幫人和書(shū)牽個(gè)線。有時(shí)候線牽得慢一點(diǎn),反而能多聊兩句?!?/p>
做網(wǎng)站,大概也是這個(gè)道理。