9月25日
抽獎動畫跑在螢幕上,而辦桌的公信力,早就寫在總舖師的手裡
前端工程師重寫年會抽獎系統的熱議,被我們翻譯成辦桌時帳臺上那本點菜單、總舖師的手路,與一場誰都信得過的辦桌故事。
先說事件。2026 年 9 月 21 日,掘金上一篇技術文章被大量轉發:一位工程師幫公司年會重寫了大螢幕抽獎系統。起因是前一年年會,行政同事拿著網路上下載的抽獎 exe 來問他,能不能「讓某個名字更容易中獎」。他打開開發者工具一看,中獎名單是前端用 Math.random() 當場搖出來的,任何一個會按 F12 的人,都能在抽獎進行中把結果改掉。那場年會最後改用搖號器,靠一顆實體的球,把大家的心安給搖了回來。
後來他自己動手寫了一套,迭代幾個月,核心只有一條鐵律:前端動畫從頭到尾不知道結果是什麼。滾動的名字、翻牌、三度空間的球體,全是表演;真正的抽取在服務器上完成,先寫進資料庫、生成流水號與審計紀錄,再把名單廣播下來。就算有人改了前端,改的只是「看起來誰中了」,帳本上那一條不會動。
讀到這裡,我腦中浮現的卻是廟口辦桌的帳臺。
辦桌的帳臺,就是那個不服務現場的服務器
你如果有機會在辦桌開席前一小時到場,會看到總舖師身邊擺著一張摺疊桌,上面是一本用手寫的菜單和一疊白紙。幾點上冷盤、幾點出紅蟳米糕、那一桌的素食要單獨走,全用鉛筆記得清清楚楚。紅色的塑膠棚布外鞭炮聲一響,內場油鍋轟的一聲起來,師傅手上的勺子開始飛,但那本帳從頭到尾不亂。
外場的熱鬧是表演。師傅甩鍋、火焰竄起、端菜的歐巴桑穿著圍裙在桌縫間小跑步,這些畫面讓賓客覺得精彩。可是真正讓三百個人信服的,是帳臺上那本誰來對都能對的單子。這跟那套抽獎系統是同一個道理:把「表演」和「判定」徹底拆開,滾動的畫面儘管滾,結果早在看不見的地方落了地。
這也讓人想起我們之前寫過的那一鍋只抽成不開店的金黃高湯,好生意跟好辦桌一樣,帳要清楚到別人翻臉也翻不出毛病。
滾動的畫面,像起鍋前那一把大火
工程師在文章裡花了很多篇幅講動畫。十四款效果,滾名字、砸金蛋、旋轉球,用 Canvas 和 WebGL 做,做得讓全場盯著大螢幕屏息。但動畫再炫,也只是滾全體候選人,純視覺效果,誰中獎它自己也不知道。
這像極了熱炒的最後三十秒。蒜頭爆香的氣味剛衝上來,師傅沿著鍋邊淋一圈米酒,火「轟」地竄起半個人高,蔥花撒下去,鍋鏟敲得鐺鐺響。你以為那把火決定了這盤菜的滋味,其實味道早在醃肉、調芡、控制油溫的時候就定了。大火收汁是給人看的,也是必要的,沒有那一聲轟、那一陣鍋氣,這盤炒得再對也少了點意思。
年會抽獎也一樣。如果直接公告名單,沒有滾動、沒有倒數、沒有全場一起倒數十秒的那種心跳,那不叫抽獎,叫公佈人事命令。動畫的功能是讓等待變得好玩,讓結果揭曉的那一秒有重量。師傅的那把火,和螢幕上滾動的名字,做的其實是同一件事。
為什麼大家寧願相信搖號器
文章裡有個細節很有意思:當年那場年會,最後是用實體搖號器搖的。一個透明的壓克力桶、一堆乒乓球,當著所有人的面搖。技術上,那顆球比資料庫原始多了,但現場沒有人懷疑。
你家樓下市場的現撈仔拍賣也是這樣。凌晨的魚市裡,承銷人圍著一簍簍還在跳的白鯧,喊價的聲音此起彼落,誰出手勢、誰眨了眼,全攤在燈光下。沒有人要求看什麼系統紀錄,因為每一雙眼睛就是審計。信任這種東西,有時候靠的不是技術強度,是能不能被看見。
工程師那套系統厲害的地方,是把這種「看得見」搬到了網路世界:每一次抽取都有流水號、有操作人、有時間戳,事後有人質疑,翻審計日誌就有答案。等於把魚市的燈,裝進了資料庫裡。
這種把複雜的事拆乾淨的功夫,我們在那一勺一勺舀出來的湯裡也聊過,急不來,一層一層把順序理對了,端上桌的東西才站得住。
年菜的吉利話,跟抽獎是同一種社會工程
再往深一點想,年會抽獎和年菜其實是同一個文化的兩張臉。為什麼抽獎要在年會抽、紅包要在圍爐時發、魚要留一尾到初一象徵年年有餘?因為這些都是把「不確定的好運」包進一個大家共同見證的儀式裡。儀式感愈足,那份好運被承認得就愈徹底。
所以抽獎系統被質疑的時候,被冒犯的從來不是技術,是儀式。就像圍爐時如果有人發現紅包袋是事先拆封又黏回去的,錢一樣是錢,但那頓飯的味道就變了。工程師願意花幾個月重寫一套,追根究底是想把那份儀式的完整還給同事。
回到你的餐桌
我們大多數人不會去寫抽獎系統,但這則新聞留下來的東西很日常:任何一羣人要一起分一個好東西,規則先講清楚,過程讓大家看得到,事後有得對帳,這三件事做齊了,不管是一尾魚、一鍋湯還是一份年終獎品,喫起來都安心。
下次家族聚會要分伴手禮、抽紅包,別只顧著熱鬧。學那位工程師,把規則先攤在桌上講明白,抽的時候讓每雙手都在視線裡。儀式感這味料,比你想的更能決定一頓飯的後味。
而螢幕上的名字還在滾,總舖師的鍋也還在響。表演歸表演,帳本歸帳本,這兩樣都顧好了,才能賓主盡歡。