App上架前一個月,承遠的生活被切成更小的碎片。
早上六點半,他起床準備早餐;八點進公司;白天開會、追進度、解決別人的問題;晚上陪孩子寫作業;十一點以後,才輪到TripTales。
公司同時準備一個跨國產品發表。周總監原本打算讓承遠帶整個專案,這是他等了很久的機會。會議邀請已經寄出,團隊名單上他的名字排在第一個。
「這三個月會很硬。」周總監說,「你有容量嗎?」
承遠看著那個熟悉的問題。
他沒有說自己每天凌晨還在修另一個產品,也沒有說家裡的餐桌上放著兩本剛印好的故事書。
「有。」他回答。
同一週,學校通知暑假作業發表日期。子衡和子澄要在全班面前分享北海道旅行,時間正好落在App預定上架與公司發表準備的同一個星期。
「你會來吧?」子澄問。
「當然。」
「不要像上次家長日一樣,坐到一半出去接電話。」
「那次是工作。」
「所以這次不是工作?」
承遠看了看電腦上的TripTales畫面。
「這次我會坐完。」
第一次送審,App被退回。原因不是重大錯誤,只是一段說明不夠清楚、一道流程仍需調整。
承遠盯著審核信,心裡卻像被人從最後一階樓梯往下推了一步。他知道這不是災難,甚至是所有開發者都會遇到的普通程序,但他的身體仍然把它理解成:還沒有完成,還不能停。
他花了三晚修正。
第四晚,畫面跳出那句由他親手寫下的提示:已經留下了。現在,把手機放下。
承遠看了一眼,按下「繼續編輯」。
第二次送審後,他決定把舊網頁裡四十三個測試家庭的資料搬進App。朋友提醒他可以等上架後再做,承遠卻覺得讓大家重新開始太不負責。
「他們已經寫過一次。」他說,「不能叫人家再寫一次。」
搬移資料像把四十三個家庭的紙箱從一間房搬到另一間房。照片、日期、孩子的話、沒有說完的語音,每一樣都要放回正確的位置。
他做了備份,又替備份做了一份清單。
上架前一天晚上,App通過審核。
合作的朋友在群組裡傳了一排煙火,接著問:「明早九點,按發布?」
客廳裡,子衡正照著老師的格式練習:「北海道風景優美,交通便利,文化豐富……」
承遠聽了兩句,皺起眉頭。
「這是你寫的?」
「網路上都有。」
「你自己記得什麼?」
子衡想了想:「螃蟹很好吃。」
子澄從旁邊說:「還有爸爸在便利商店外面哭。」
「我沒有哭。」
「你眼睛很紅。」
「那是跑太快。」
「你聲音也怪怪的。」
以晴看著承遠:「這段比較像旅行心得。」
承遠拿出第一本故事書,放在兩個孩子中間。
「不要寫老師想看的。」他說,「寫你真的記得的。」
「那會不會很短?」子衡問。
「短沒有關係。」
「會不會不完整?」
承遠看著那本邊角已經磨白的故事書。
「真的,比完整重要。」
他答應隔天八點二十分前到教室,還在家庭群組裡打了一個勾。
發表日早上七點十二分,承遠的手機開始連續震動。
第一個訊息來自測試者:故事書打開後只剩封面。
第二個人說,孩子寫過的文字全部空白。
第三個人傳來一張截圖。畫面上還有旅行日期、城市和照片數量,內頁卻像一本被人抽走所有紙張的書。
承遠從床上坐起來,睡意在一秒內消失。
後台顯示十七個家庭受到影響。
朋友在線上說:「先不要發布。我們查搬移紀錄。」
「多久?」
「不知道。可能只是索引沒對到,也可能真的有資料沒寫進去。」
承遠聽見浴室的水聲、廚房的烤麵包機,以及孩子在客廳確認故事書順序的聲音。這些聲音離他只有一道門,螢幕裡卻有十七個家庭正在等答案。
以晴站在書房門口,已經換好外出的衣服。
「七點五十分要出門。」她說。
「我知道。」
「你現在的『知道』,是會一起出門的意思嗎?」
「我先確認資料還在。二十分鐘。」
以晴沒有叫他立刻關電腦,也沒有替他決定。
「我不會再問你要選哪一邊。」她說,「你自己選,然後不要假裝沒有代價。」
七點五十分,兩個孩子背著故事書站在玄關。
子澄往書房裡看了一眼:「爸?」
承遠盯著畫面上反覆失敗的搬移紀錄。
「你們先去。我修好就來。」
子衡問:「幾點?」
「很快。」
「很快是幾點?」
承遠答不出一個可以保證的時間。
門關上後,家裡突然安靜得像所有人都搬走了。
螢幕上的十七本空白故事書仍在等他。
教室最後一排那張替他留的椅子,也在等他。