今天下班的時候感到非常沮喪,原因是因為 bug 又 de 不出來了。
自己看了老半天,檢查了許多東西還是沒有什麼頭緒,終於鼓起勇氣去問別人,沒想到別人看著 code 就看出了一個我沒注意到的設定。
從唸資工系到現在出社會,我有時候會覺得我的學習曲線比其他同學慢。
也許是別人比較聰明,或是有比較多經驗,但我覺得我就是少了一點debug 的「靈感」。
不可否認的,debug 是很吃經驗的。當一件事情接觸過很多次,一定就可以比較有 sense。
就好像國高中在練習數學的時候,如果這個題目只做過兩三次,甚至幾個月才做一次,那肯定比不上那些每天做題目的同學。
所以讓自己對這件事或是這類問題感到熟悉是很重要的,因此要找時間多多接觸,也要把握機會練習。
不過說得簡單,做起來難,特別是心態上的調整更難!
對於自己感到失望,有時候還會問一些愚蠢問題,害怕去打擾到前輩等等,可能都會讓自己產生一些負面情緒。
但失落是難免的,總要想辦法克服,還是要盡量讓自己保持樂觀,保有成長型思維,才能不斷的追求進步,除非不想當工程師了。
以下就來分享幾個 debug 的方法,希望給自己一點鼓勵,也希望對你有幫助。
Debug 方法一:保持心情愉悅
debug 是需要一點靈感的,如果讓自己一直處於低落的情緒,反而很容易讓思考僵化。
因此讓自己放鬆,頭腦保持清醒才有助於想到解法。
所以才會說,如果今天想不出來,或是狀況不佳,那就先回家睡覺!
睡飽了才會有精神繼續看問題。
Debug 方法二:暫時轉移注意力
日常生活中也會常常遇到想要說什麼,但是卻一直想不起來那個東西叫什麼的狀況,但不去想它之後卻在某個瞬間突然想起來了!
其實 debug 也是一樣的,如果一直鑽牛角尖在問題上,有時候反而會忽略了其他東西。
所以我建議如果想不出來的時候,可以站起來走一走(一直久坐也不是好事對吧!),上個廁所、喝個水,甚至去散步,暫時轉移注意力,可能就會靈光乍現了!
Debug 方法三:把想法或問題說出來
不管是和別人聊天,或是自己自言自語,其實都是把思考邏輯說出來的一種方法。
藉由把思考邏輯說出來的方式,重新整理自己的思緒,可能就會發現一些盲點。
和別人講述自己的問題時,也會有同樣的效果,好處是別人在聽你描述問題的時候,可能就會點出你的盲點,或是你沒有注意到的事情。
自言自語的話,倒是比較容易進入思考盲點的無窮迴圈。
也許很多工程師桌上會擺很多公仔或玩偶,也是想要在必要的時候能夠跟他們對話吧!(笑)
Debug 方法四:重新思考問題
遇到問題第一件事情是去看「能不能復現」,要找出可以複製這個問題的方法,才能開始 debug。(否則你怎麼知道你的解法對不對呢?)
接著可以用「夾」的把問題核心「夾」出來。
什麼意思呢?
想像一下今天有一串燈泡,當電流通過這串燈泡的時候,有幾個燈就是不會亮!所以你要做的就是,用「夾擊」的方式,找出到底是哪顆燈泡不亮,再仔細研究一下這個燈泡附近到底發生什麼事。
夾問題的時候也要特別小心,因為有時候可能會誤以為那是問題的核心,但事實上可能不是,就會讓整個 debug 方向走歪。
又或者有些問題和 timing 有關,可能你多了幾個步驟就打不中了,也是屬於比較棘手的問題。
因此當發現一個問題不論怎麼修復懷疑的點都無法解決的時候,可能要停下來想想看,是不是根本就搞錯了?