文章導航-readme
久病未能成醫,然而卻悟出了些許程序員與醫生的道理。細想來,程序員和醫生這個職業竟如此相似。
職業的誕生
上帝創造了人類,而人類又創造了程序。上帝所創造的人類並不是完美無缺的,他在每個人的身上或多或少的留下了一些缺陷。這些缺陷就是疾病,有些人很不幸,一出生就有了,有些人很幸運,他健康的生活了很久才出現。然而不管是前者還是后者,其降臨到這個世間的時候就注定了要有這些缺陷。人們雖然很不理解為什么要有這些缺陷,但不甘心被這些缺陷所支配。
於是,醫生這個職業誕生了,用以最大程度的解決這些缺陷帶給人類的影響。
人類創造了程序。同樣,程序也不是完美無缺的,它也存在了各種各樣的缺陷。這些缺陷就是bug。所不同的是,bug是程序員創造的,程序也是程序員所創造的。你永遠無法要求一個程序員創造出沒有bug的程序,正如你無法要求上帝創造一個完美無缺的人一樣。上帝在創造了一個人之后,可以毫不負責任的當甩手掌櫃,把爛攤子交給醫生去處理,而程序員則不能,你在創造了一個程序的時候,就要對其進行負責到底,如果你不願意,那么必然也會有另一個苦逼的程序員要對其負責。
求醫問葯的套路
改bug就是治病!
求醫問葯的人,向醫生哭訴着自己的症狀,告訴醫生自己的患病時間。而測試(客戶或產品)也會拿着程序的症狀和發生時間來給你提bug。有趣的是,程序員定位bug與醫生診斷疾病的手法也極其相似。有經驗的醫生和有經驗的程序員都會根據自己的經驗來大體判斷問題的所在。然后他們一般會采用排除法,通過一些檢查來定位問題的具體位置。醫生也許會讓你做一些特定動作,去拍一些片子等,而程序員也會重現一下問題,打一些日志......
了解到以上問題,無論是對於病人還是,一些使用程序的人非常重要,如果你想讓醫生(或程序員)快速的診斷出問題並解決。
於病人而言,在醫生就診的時候你需要提供幾點必要的信息。
-
症狀
-
患病時間
-
過往病歷
同樣,對於使用程序的人,你也需要提供幾點必要的信息。
- 症狀
這一點是最重要的,你需要詳細的告訴程序員,程序的那個模塊的那個頁面或功能遇到了什么問題。
- 重現問題的步驟
你需要盡可能的詳細的提供問題是怎樣產生的,如使用哪個瀏覽器,如何操作...,應該如何去重現它。
- 發生問題的時間
如果你不能重現問題的步驟,那么你必須提供問題發生的時間,以便於程序員回溯問題。
在苦逼的程序生涯中,我就常常遇到客戶、產品或測試提改過來的不知所雲的幾句話,甚至幾個字。
程序員與醫生
即使這個世界上有了醫生和程序員,然而我們仍然不得不面對一個殘酷的現實——世上有治不了的病,也有改不了的bug。
也許上帝在創造人時,無法做到“盡善盡美”與“雨露均沾”。有的人也許得到的寵愛多一些,缺陷也相對少一些。有的人也許很不幸,上帝在創造它的時候恰好打了個盹兒。於是很不幸,這群人的缺陷就更多一些,有些更是疑難雜症!
面對這個現實,病人們不應去抱怨上帝的不公平,也不應責怪醫生的無能。因為這根本沒有什么卵用。而那個被你責怪的倒霉蛋醫生可能也在抱怨:“人又不是我創造的,鬼知道上帝為什么會搞出來這么多的疑難雜症”
程序同樣也有解決不了的bug,也許是因為設計之初的不合理,也許是客觀條件的不允許......總之,當程序產生的時候,bug也就隨之產生了。也許這個bug並不是某個程序員所創造的,但問題卻要由他來解決。我們不能抱怨程序員的無能,正如我們不應該抱怨醫生的無能一樣。而程序員也不應該一味的埋怨當初的創造者,因為也許你所創造的程序,正有一個苦逼的程序員在熬夜改bug。
而相對於醫生而言,程序員或許是幸運的,醫生面對的是生命,程序員面對的只是程序。醫生不能創造一個人,因此無法避免疾病的產生,也無法對人體有足夠的了解而治愈疾病,而程序員很可能是程序的創造者,他可以盡可能的在程序起始,進行詳細的調研,采用優秀的設計以盡可能的避免問題。又或是因為自己是程序的創造者,而更輕松的定位與解決問題。
無論是醫生還是程序員,無論是病人還是客戶。當問題產生之后,盡早盡快的解決才是最應該做的事,抱怨永遠不是解決問題的辦法。如果問題不能解決,我們不僅不能抱怨,還必須用愉悅心情讓自己去接受它。因為,每時每刻我們都是幸運的,因為任何災難的前面都有可能再加一個“更”字!沮喪、憂郁、抱怨的情緒,只會讓事情變得更糟糕!