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