程序員,錯錯更優秀!
英文原文: MAKE BETTER MISTAKES
如果你要聘用一個軟件開發人員,而現在同時有兩人通過了審核。他們的技術、工程項目和成就等等工作經歷和經驗都差不多。怎么選?
這時候他倆中有一個說,有一次她在寫代碼的時候不小心寫了個大 bug,直到差不多要發布了才發現,可是這時候已經太遲了。所以最后只能帶著這個 bug 一起發布了。這是他們不得不采取的權宜之計,直到重構。
還有一個沒有說任何類似于第一個人的經歷。潛意思是“我可沒犯過這種錯誤,我比那個人好,快選我吧”。
我會選擇聘用第一個。
一部分是因為我屬于第一類,我不可能否決我自己。:P 但是更多的是因為,我的經驗告訴我,我們是不可能抓得住每一個 bug 的,每個人都會有他的盲點。而且,很多出人意料的問題還有那些巨大的、必須停止的 bug,即使我們在開發過程中再怎么認真仔細地測試還是發現不了的,會成為漏網之魚。
如果你發布的產品中從來沒有出現過大 bug,在你的內心深處,往往會生出這樣的想法:我的過程這么嚴謹足以避免到任何大 bug 了。所以你會覺得像那種在發布產品中有大 bug 的愚蠢情況是絕對不會在自己身上不會出現的。事實上,我只能說,你太幸運了。沒有人的過程會牛逼到能抓住任何 bug。因此,盡管你認為你做的軟件一點也沒有大 bug,或者你已經把所有的 bug 都檢測出來了(那些小 bug 除外),但是事實上,你不過是在自欺欺人而已,它們客觀存在著。
和我一樣,你可能有著一個巨大的盲點。
來應聘的第一個開發人員心中明白,即便再怎么細之又細地檢測,bug 還是會有遺漏的,有的時候甚至要發布了才能發現。而沒有發現 bug,并不意味著她的代碼就是完美無暇的了。鑒于此,她會更深層次地去檢測,哪怕是那種看上去無法驗證或者沒必要測試的代碼。她會竭盡全力想好“萬一” 的對策,時刻準備著。而這一點是第二個開發人員不會考慮到的。并且如果這種大 bug 真的出現了,她也不會像后者一下子就變得沮喪和畏懼,她會和團隊其他成員盡心竭力地去解決問題。
最后拍板前者被錄用。
后者忍不住抱屈。可是試想一下,一個沒有犯過錯誤的人,能真正領會這種教訓嗎?
Maybe。雖然誰都不想也不會特意寫個 bug 到要發布的軟件中。關于不可預料最糟心的地方就是你無法預料其發生發展。關于犯錯這種事,聽別人的故事和自己親身經歷的感覺是完全不同的。前者是理論上 的,而后者卻是真真切切發生在自己身上的,你會為之痛苦,為之絞盡腦汁,然后受益。這是有積極的教育意義的。
還有一種可能得到這方面經驗的方式是嘗試做些自己力未能逮的事情,用困境來磨練自己。比如說,試著寫一個你并不怎么了解的軟件片段或者算法,得 是那種你不確定自己能不能寫出來的。在這種情況下寫出來的設計和開發產品,肯定會有 bug。通過這種“故意難為自己”的方式來學習,你會認識到,每個人的代碼中都有可能出現大 bug。
這是一個非常好的經驗教訓。
錄用前者第二個原因是,一時的錯誤并不意味著永遠,她也不可能總是在她的代碼里寫進這種 bug。不能說我們知道 bug 會出現,它就一定會出現,這只是一種可能。但是只要你還想在軟件這片海域里繼續航行,那么 bug 這些錯誤帶給你的,絕對是無價之寶。
譯文鏈接:http://news.html5tricks.com/make-better-mistake.html
翻譯作者:IT 新聞 – 蔣麗麗