程式設計師 錯錯更優秀!

html5tricks發表於2014-07-16

  如果你要聘用一個軟體開發人員,而現在同時有兩人通過了稽核。他們的技術、工程專案和成就等等工作經歷和經驗都差不多。怎麼選?

  這時候他倆中有一個說,有一次她在寫程式碼的時候不小心寫了個大bug,直到差不多要釋出了才發現,可是這時候已經太遲了。所以最後只能帶著這個bug一起釋出了。這是他們不得不採取的權宜之計,直到重構。

  還有一個沒有說任何類似於第一個人的經歷。潛意思是“我可沒犯過這種錯誤,我比那個人好,快選我吧”。

  我會選擇聘用第一個。

  一部分是因為我屬於第一類,我不可能否決我自己。:P但是更多的是因為,我的經驗告訴我,我們是不可能抓得住每一個bug的,每個人都會有他的盲點。而且,很多出人意料的問題還有那些巨大的、必須停止的bug,即使我們在開發過程中再怎麼認真仔細地測試還是發現不了的,會成為漏網之魚。

  如果你釋出的產品中從來沒有出現過大bug,在你的內心深處,往往會生出這樣的想法:我的過程這麼嚴謹足以避免到任何大bug了。所以你會覺得像那種在釋出產品中有大bug的愚蠢情況是絕對不會在自己身上不會出現的。事實上,我只能說,你太幸運了。沒有人的過程會牛逼到能抓住任何bug。因此,儘管你認為你做的軟體一點也沒有大bug,或者你已經把所有的bug都檢測出來了(那些小bug除外),但是事實上,你不過是在自欺欺人而已,它們客觀存在著。

  和我一樣,你可能有著一個巨大的盲點。

  來應聘的第一個開發人員心中明白,即便再怎麼細之又細地檢測,bug還是會有遺漏的,有的時候甚至要釋出了才能發現。而沒有發現bug,並不意味著她的程式碼就是完美無暇的了。鑑於此,她會更深層次地去檢測,哪怕是那種看上去無法驗證或者沒必要測試的程式碼。她會竭盡全力想好“萬一”的對策,時刻準備著。而這一點是第二個開發人員不會考慮到的。並且如果這種大bug真的出現了,她也不會像後者一下子就變得沮喪和畏懼,她會和團隊其他成員盡心竭力地去解決問題。

  最後拍板前者被錄用。

  後者忍不住抱屈。可是試想一下,一個沒有犯過錯誤的人,能真正領會這種教訓嗎?

  Maybe。雖然誰都不想也不會特意寫個bug到要釋出的軟體中。關於不可預料最糟心的地方就是你無法預料其發生發展。關於犯錯這種事,聽別人的故事和自己親身經歷的感覺是完全不同的。前者是理論上的,而後者卻是真真切切發生在自己身上的,你會為之痛苦,為之絞盡腦汁,然後受益。這是有積極的教育意義的。

  還有一種可能得到這方面經驗的方式是嘗試做些自己力未能逮的事情,用困境來磨練自己。比如說,試著寫一個你並不怎麼了解的軟體片段或者演算法,得是那種你不確定自己能不能寫出來的。在這種情況下寫出來的設計和開發產品,肯定會有bug。通過這種“故意難為自己”的方式來學習,你會認識到,每個人的程式碼中都有可能出現大bug。

  這是一個非常好的經驗教訓。

  錄用前者第二個原因是,一時的錯誤並不意味著永遠,她也不可能總是在她的程式碼裡寫進這種bug。不能說我們知道bug會出現,它就一定會出現,這只是一種可能。但是隻要你還想在軟體這片海域裡繼續航行,那麼bug這些錯誤帶給你的,絕對是無價之寶。

  英文原文:MAKE BETTER MISTAKES 譯文:html5tricks

相關文章