作為程式設計師,不可避免地會經歷過下面的情況:
你花費了大量心血辛辛苦苦地編寫了一本程式,結果到了測試人員那裡測試的時候,測試人員測了一陣子之後,提交給你乙份測試報告,並說:「你裡面怎麼會有這麼低階的bug。」或者說:「你的程式裡面的bug好多,到底自己編寫完了之後測沒測試啊?」
或者在國內專案中可能是這樣的,你將辛辛苦苦編寫好的程式拿給客戶試用,客戶用了一會兒之後,告訴你,「你做的東西根本就不是我想要的。」或者直接給你的反饋是「不對,能否做好了之後再給我啊?」
上面的兩種情況都是作為程式設計師的我們不願意遇到的。但是卻又是不可避免的,尤其是在剛剛走上程式設計師崗位的時候(所謂的新手階段,其實這也許是每個程式設計師都需要經歷的乙個階段吧)。我們也都知道,作為程式設計師有時會把自己的程式看成是自己的孩子一樣,有人說自己的孩子不好?第一反應就是:不可能吧?!然後就會和別人爭論,你是不是……
回想自己當初也是這個樣子,很不服別人所指出的錯誤,總覺得自己做的東西是完美的,不可能出錯,問題都出在別人的身上。而且會因為這些錯誤干擾自己的心情。
其實這樣是非常不明智的,當別人指出自己的錯誤的時候,第一反應不應該是去責怪別人,而是應該仔細反省自己,檢查自己所做的工作,是否真的有問題。
為什麼我們可能第一反應會是別人的錯誤,而不是自己的程式出了問題呢?這就是因為我們有時候會比較好面子,特別是對於心中認為知識水平沒有自己高的人指出自己的錯誤的時候,尤其會這樣。心中會非常不服氣:哼!你憑什麼說我做的東西有問題,你做得好你來做試試!並且認為問題不在自己,而是出在他人的身上。但是,如果有過相關的經歷,我們會發現,十有**的情況真的是因為我們自己的原因造成了錯誤。因此正確的做法應該是虛心接受,先仔細檢查自己,然後再和測試人員或者客戶進行溝通。
對於我們自己的程式,我想可以在以下兩個主要的方面進行檢查:
1、我們是否真正理解了使用者的需求,是否從使用者的角度為其設計並開發了程式。
如果當初在編寫程式的時候沒有了解相關的業務,也沒有仔細聽取客戶所提出的需求,那麼很可能我們做出的東西在我們自己測試的時候不會出錯,一切都按照我們自己預想的情況執行。但是一旦到了客戶那裡,由於根本不符合客戶的工作習慣,就會被他們認為是錯誤的。
2、我們是否在編寫了程式之後完成了相關的測試。
這裡的測試不僅僅包括正常資料的測試,而且還會包括非正常資料的測試,邊緣情況的測試,也即是說,已經根據測試的原則選取了比較完備的測試用例。
另外,除了單元測試之後,如果出問題的程式是與其他模組相關的話,還需要做整合測試,否則很可能出現的情況是,自己測試的時候沒有問題,而別人測試的時候就出現了問題。我就曾經遇到過這種情況,修改一本程式,在自己這裡測試已經都沒有問題了,結果交出去之後,在其他環節執行出了相關聯的問題,後果很嚴重。
做了這些檢查之後,多數時候我們會發現可能是因為忽略了某個環節,導致自己的程式出了問題,因為此時你還沒有去指責別人,說那並非自己的錯誤,所以可以很簡單地向他表示感謝,然後糾正自己的錯誤就可以了。
如果做了所有的檢查之後,還是不能夠發現他們所說的問題,那麼接下來就需要與測試人員或者客戶溝通了。
比方說,我們會問測試人員,你用什麼樣的資料進行的測試啊?能否幫忙給我演示一下,如果情況是可以重現的,那麼我們就會很容易地針對具體的情況進行除錯,從而找到錯誤了。
或者我們會問客戶,你說我做的東西不符合你的要求,那麼能否具體地說明是什麼地方不符合呢?你的要求是什麼樣的呢?此時一定要抱著虛心學習的態度和客戶交流,這樣客戶就會耐心地和你講解、說明,可能你還會學習到很多重要的業務知識呢。
需要注意的是,此時我們向測試人員或者客戶想要獲取的資訊必須是具體的,我們需要耐心地和他們說,請不要告訴我不對,也不要告訴我錯誤,我想知道的是你用的是什麼樣的資料,在什麼樣的情況下出的錯,錯誤的表現是什麼樣的,你所想要的結果是什麼樣的等等,只有得到這些具體的資訊之後,我們才能夠做到有的放矢,有目的性地去解決問題。
一旦在所有的情況都檢查過了之後,真的發現時測試人員或者客戶出了問題,我們也不需要大驚小怪,小題大做,比方說,用很不屑的語氣告訴他們:「以後測我的程式小心一點兒,你知不知道我浪費了多少時間。」或者說:「你如果不懂的話就不要亂說!」這樣即便你在這個問題上表面上是勝利了,實際上卻是乙個失敗者,因為你失去了和他們交流,從而成為朋友的機會,你會和測試人員或者客戶成為冤家,以後不管什麼事兒,都不會有任何的轉圜餘地,從而你以後的工作都會很難開展。
最後說一句,這條原則其實不僅僅是做程式設計師所應該知道的,也應該是在生活中的各個方面所要做到的,讓我們一起共勉。
程式設計師應知
作為程式設計師,不可避免地會經歷過下面的情況 你花費了大量心血辛辛苦苦地編寫了一本程式,結果到了測試人員那裡測試的時候,測試人員測了一陣子之後,提交給你乙份測試報告,並說 你裡面怎麼會有這麼低階的bug。或者說 你的程式裡面的bug好多,到底自己編寫完了之後測沒測試啊?或者在國內專案中可能是這樣的,...
程式設計師應知 技術債務
債務這個詞,相信大家已經都對其深有體會了,特別是像我一樣作為 房奴 的人,每個月都要去銀行還錢,那就是債務啊。在軟體開發的過程中,我們往往也會借債,人們稱之為技術債務,其實也就是為了快速地解決問題,而採取的不規範的方案。比方說把某個條件寫死,再比方說採用一些捷徑達到目的,而這只是特殊情況,無法應用在...
程式設計師應知 技術債務
債務這個詞,相信大家已經都對其深有體會了,特別是像我一樣作為 房奴 的人,每個月都要去銀行還錢,那就是債務啊。在軟體開發的過程中,我們往往也會借債,人們稱之為技術債務,其實也就是為了快速地解決問題,而採取 的不規範的方案。比方說把某個條件寫死,再比方說採用一些捷徑達到目的,而這只是特殊情況,無法應用...