昨天老闆和我們分享一個想法: 除錯只能靠Debug Log嗎?
他說到他來公司已經不少年, 可是對於公司的一件事情還是不是很習慣. 那就是engineer要解決一個bug時, 總是要求說要提供debug log給他, 否則他們就無法解這個問題.
對他來說, 這事件很不可思議的事. 因為解決問題的方法很多, 並不是只有看debug log才能解決, 而且這可能是你不肯動腦的藉口, 只想讓人把線所放到你面前. 更糟的事, 這線索可能是不完整或是不正確的.
他舉了一些方法, 例如你可以問使用者所使用的環境, 是使用什麼browser, OS是多少bits, 或是在哪個時間點發現的, 等等. 已就是先釐清使用者環境的問題. 接著你或許可以問到他如何安裝這個系統, 是fresh install還是upgrade或是更換Hot fix等等, 了解一些除了reproduced steps之外的一些系統環境. 或者詢問使用者輸入什麼樣的資料, 同樣是字串, 是否裡面有什麼特別的地方.
有時候在釐清這些問題之後, 事情就就可以更快被解決, 而不一定都要收集debug log才知道問題在哪裡. 畢竟大多數的debug log只反映了程式設計師的程式如何執行, 或是得到的資料是什麼. 但是無法得知環境問題, 或是在bug發生之前所發生的一些事情. 因此光看debug log也只是得到部分資訊.
當然更不用提, 若是debug log 一開始若是設計不當時, 不是資料過多, 要不就是沒有任何有用的線索, 可能還是幫不上任何忙.
前一陣子, 我去參加公司的一個活動: 一日良師, 去call center聽聽客戶在使用我們產品時, 遇到怎樣的問題. 那時我就發現到call center的engineer真的很厲害, 因為他覺大部分的時間都不需要debug log, 有可能他看不懂debug log. 也就是因為如此, 他就會思考如何去問問題, 去釐清一些環境, input data, 使用流程, 使用時間點...等, 想辦法藉由這些訊息, 找出問題癥結所在. 可惜我們在後面的開發產品的工程師便沒有這種思維.
或許可能是我們目前的環境, 過度保護了產品開發的工程師, 讓他們最後只會要debug log. 需知道別人幫你收集debug log, 只是希望能幫助整個除錯工作的進行, 可是我們卻忘記了這可能讓工程師的技能變弱了. 就向父母親過度保護小孩子, 導致小孩子無法獨立自己處理事情一樣.
此外, 這件事情並不是只跟開發人員有關, 其實QA人員更需要這份能力. QA需要懂得問問題來釐清一些狀況, 不只在解問題或是發現問題有用, 像是開發前期, 若是QA被邀請去做review時, 或許QA沒有堅強的開發能力, 但是若是他能就上述角度來檢視設計或需求, 相信能一定能提到很大的幫助.
因此, 不要再拿debug log再當藉口了, 很多方法都能幫你解決問題.

呵..這個觀點不錯。 我一直覺得PDG的RD應該和SEG輪調,甚至要撥一段時間直接去面對客戶, 實際上這對了解客戶需要哪些東西以及出問題的時候要怎麼應付是很有幫助 的。更進一步來說,設計產品的時候會考慮到怎麼樣產生有效率的debug log,這樣其實對RD/公司/客戶都有好處。 只是一般RD好像很討厭幹support工作就是..:p
其實每個人都一樣, 在自己這個角色帶久了, 思想便會受到限制, 常常跳不出自己的框框, 或 許輪調一下, 會讓世界變得更不同. 置於不想去當support一事, 我想應該用成熟一點的角度去看它. 應該想這樣的輪調受益的是 自己, 因為這會讓你的經歷更完整 須知道很多高階經理人要接位時他的老闆都會讓他嘗試不同部門, 可以想想看這是為了什麼?
非常同意. 我以前的老闆會要求要implement counter的概念.(我假定 debug log是詳細的那種detail log), counter是比個比較大概的概念. 不過卻可以幫助你很快了解大概. 而不是 開debuglog, 然後 reproduce!! 不過那個1樓的講PDG/SEG讓我覺得似乎跟我同公司 :P
一部分認同, 大部分RD還是會問QA/Customer repro的方法吧, 只要可以repro, 不需要log也是可以解決 debug log是要輔助很難repro的case吧, 我可沒閒功夫看密密麻麻的 log... 不過更麻煩的事情是, repro 描述不清楚, 或者環境 user 自己也搞不 清楚, 請試著去問問沒有資訊背景的朋友. 怎麼中毒, 上過甚麼網站, 肯 定語嫣不祥
我之所以會寫這篇文章, 是因為我們公司的文化是這樣, 但是可能別家不一定是這樣 但就像你說的解bug有很多方法, debug log不是唯一的, 多問一些, 得到多一點線索, 便有較 多的機會可以解掉問題. 至於repro, 我認為不詳細是正常的, 就像寫design文件一樣, 除了自己以外, 沒人看得懂他 的符號, 所以多問是必要的
這個問題,其實應該是 case by case 的,像我們公司是系統廠,幾乎每 一條 bug 都會要求要有 log,因為 software architecture 沒有那麼單 純,單單用文字描述一個問題,恐怕是不夠的。
我並不是說不用收集debug log. 但是我想強調的事, 不是指每次都 只用拿debug log這招來解問題, 還有別種方式也可以幫忙解決問 題.
你說的都是假設,但客戶要的是真因,不看Log再三確認是難以說服他人,除非能再現問題點。但一般能在現就不需要log了。