去年我的工作計劃之一,是開展對企業質量有關人員的培訓和考核。培訓可以用騰訊課堂或其他會議系統,培訓后的考核卻沒有現成的應用。飛書中有考試模塊,但我希望考試過程中能夠開啟用戶攝像頭,以確保參考者是其本人??荚囘^程中,系統會通過攝像頭抓取畫面傳輸到服務器端。
何不自己動手做一個?回頭看,根據github記錄,我是去年5月份寫下第一行代碼。7月份,在一次和上級的交流我無意中透露了自己在做的工作,領導說我們正在做一個考試系統啊,你再做就是重復勞動了,完全沒有必要。我只好放棄了。
到去年秋天,領導說的系統遲遲沒有上線。我也不時想起那些塵封的代碼,覺得可惜。當初想做這個,工作上用只是原因之一,更主要的時我喜歡這個從零開始,到完成一個完整作品的過程。而且我知道要實現的一些功能會對自己現有的知識帶來挑戰——例如如何在瀏覽器調用用戶攝像頭,如何截圖,又如何傳輸到服務器端,我完全沒有頭緒。但我篤信一點——只要你想,總有辦法能夠實現。寫代碼如此,別的事情同理。
去年10月3日,我帶著筆記本電腦在圖書館泡了一整天,重啟了這個項目。那個國慶假期大部分時間是抱著筆記本度過的。然后整個10月的業余時間基本上也都花在這上面。我又找到了寫代碼的狀態,不斷地遇到難題,不斷地搜索答案,不斷地嘗試,然后一個一個地解決。雖然所有困難終有答案,但尋找答案的過程是備受折磨的,有時整整一周毫無進展。然而樂趣也正在與此,擱下代碼去工作,去散步,一有空閑問題會在腦中盤旋,而且常常答案就突然冒了出來。
項目進展順利,但去年11月上級開發的系統上線了。我有輕微失落,因為這個系統的目的之一不存在了。但系統基本功能已經初具雛形,不能再放棄。之后就斷斷續續地進行。上個周按計劃應該開展第一期培訓。通知如期下發,但那時系統只是在我筆記本上的開發環境里運行,從沒有真正上線在服務器上跑過。說起來真是運氣,2月6日剛剛申請了IBM Linux One三個月的免費試用。上傳到服務器,排除了幾個故障之后,運行得竟如絲般順滑流暢。馬上聯系幾個人注冊測試,反饋都還不錯。
在線培訓上周按時舉辦,培訓結束前發了考核的通知。按照計劃培訓后兩天在系統上模擬考試,之后兩天正式考試。培訓結束當天晚上我出去吃飯,路上本能地掏出手機打開瀏覽器訪問系統——“無法顯示”,刷新幾次仍然如此,我心掉入冰窖,一晚上飯菜無味,已經做好熬夜捉蟲的準備?;丶乙院蟠蜷_電腦,卻又顯示正常,虛驚一場。
今天(注:2022年2月28日)是正式考試的最后一天,到現在為止共有289個用戶注冊,進行了2684次模擬或考試。除個別用戶反饋登錄問題外,系統運轉平穩。若沒有意外,這個項目已完成使命。真是幸運,在基本完全沒有測試的情況下,系統還能跑起來。
按計劃,行業協會正開發一個考試系統,上線后我這個系統會停止使用。雖然我不認為別人開發的系統會比這個更好用,但我也沒有長期維護這個系統的打算——不比創建的過程,繁瑣的修補維護工作是無聊的。到時也許這個系統又像以前的項目那樣塵封起來,也許會在github上公開源碼供別人參考借鑒。
這個項目前端使用React,后端使用Django Rest Framework,技術上沒有多大的難度,充其量也只是又一個實現了CRUD(增刪查改)的web應用。不過我在從無到有的創建過程中得到了極大的享受,獲得了滿足感和成就感。Do something, Make stuff. 是為記。