前言:
工作一陣子了,內容姑且不論,光是形式,就和學生時代有很大的不同。
對我而言,最大的差別是:「與別人合作」的頻率大幅增加。
學生時代的程式作業,即使是小組,頂多是三、四個組員分工了事,而且內容各自獨立,各人造業各人擔。上班則是,一大堆人做同一個專案,每人負責一個功能,功能間可能交互影響、產生新的問題。必須互相包容、互相揪錯。
這陣子下來,覺得……找自己的盲點難,找別人的盲點,也很難。
(我也產生過很多很無言的錯誤,感謝同事包容)
只能說大家腦迴路不同,遇到很多bug,有基本款,也有刁鑽古怪的。
便想了一些因應措施,就來記錄一下吧。
---
(一) 熟悉使用的工具軟體(尤其是debug功能)
看起來挺廢話的,但請捫心自問:
你真的很了解你用的工具(複數)嗎?
很多時候,人都會懶惰,覺得只要能把東西做出來就好,而沒想過有沒有更好、更快、更方便、更嚴謹的方法。
……這種方法,往往是存在的。
你遇到的問題,肯定也有其它受害者,軟體公司可能已經預料到,而做出對應解法。
只需要你動一動手指,看一下工具軟體的說明書,
或是用關鍵字google,或是去論壇發問。
這就像……用一把力量被封印的神劍,打倒史萊姆。
雖然史萊姆已經陣亡,但為了未來著想(誰知道下一個敵人有多強大?)還是要把封印解除、發揮神劍百分百的威力。
大概是這樣。
(二) 勤於備份「環境」
可說是使用 Windows 的必要動作。
自從官方停止支援 XP 的安全性更新之後,可用環境就剩下 Win7/8/10 三種版本。
……然而,算上後續的安全性更新、Hotfix、Driver,可產生各種排列組合。
真的很麻煩。
尤其是和OS/權限/driver相關的功能,有時更新到最新版,反而不能用。
(然而基於安全考量,安全性更新還是盡量裝吧)
如果像我一樣不太看安全性更新的內容,最保險方法,就是將可以跑的環境,完整備份到另一個硬碟,以便日後還原。
最好寫個筆記,記下自己裝了什麼、做了什麼。
同理,瀏覽器、編譯器等軟體的版本更新,也是類似,找個穩定版備份。
搞環境真的太花時間,一次就夠了,日後就靠備份吧。
附帶一提,最好趁著硬碟「全盛時期」備份,如果這顆硬碟已經動不動就藍屏、關機關不掉什麼的,就算了吧。
(三) 高度懷疑自己與他人
在多人合作的場合,遇到一個bug,責任歸屬很複雜。
原因可能來自:環境的錯,自己的錯,別人的錯,或是自己與別人的流程分開跑都是正常的,同時跑就衝突了。
內心一定要對自己與他人保持「同樣高度的懷疑」。
性格自信的人會覺得都別人錯,性格謙虛的人會覺得都自己錯。
其實「是誰的錯」不重要,只要能盡快找出原因,解決掉就好。
最快的方法,就是找人討論,清楚表達情況,將嫌疑人(包括自己)齊聚一堂,對著屍體一起推理。
也許有人糾結面子問題,但只要態度得體,就是同事間的愉快合作、互相學習、友好交流。
如果真拉不下臉,或是同事都很忙,也是有保險作法(較花時間)。
就是幫測。
別人上傳的檔案,載下來後,先別急著加上自己的更改,而是:
幫他測試。
尤其是,測試內容牽涉到環境因素(比如軟硬體版本、線路老舊、電磁干擾)或隨機因素(用到rand),就有可能出現「別人跑得過,就你跑不過」的情況。
……這就是,被全宇宙聯合起來衝康的感覺吧。
為了避免被衝康,就用自己環境幫他測試。
出了錯,就叫他來解決,手一攤說:「沒辦法,誰叫我環境比較刻苦呢?」
邪惡(保險)一點,可以添加極端測項,比如,讓變數overflow或underflow;刻意踩記憶體邊界;或是一個連續的流程,故意手動中斷(模仿隨機延遲),再繼續,看是否能順利進行。
諸如此類的,請不必保留,盡情發揮創意吧!
一方面能提升程式的嚴謹度,另一方面,可保自身權益,省下debug時間!
---
這篇只寫三條,已經超過兩千字,就先這樣了。
會成為一個每篇兩千字左右,常常更新的系列。
(馬的我初稿列了十一條)
因為bug是生不完的,思考的盲區,是掃不乾淨的。
一個人能產生很多bug,多人合作,解決了一些,但能產生更多更多bug!
更別說還有一堆鬼因素,火上澆油。
簡直是在錯誤的汪洋裡,孤舟漂流。
風暴、雷雨、驚淘駭浪。
即使如此……
還是要一腳踏上船頭,食指朝前,(含淚)大喊:
「讓我們前進吧!」