程序員修煉之道(1-7)
如何被推薦?
1 我的源碼讓貓給吃了
注重實效的程序員的特征是什么?我們覺得是他們處理問題、尋求解決方案時的態(tài)度、風(fēng)格、哲學(xué)。他們能夠越出直接的問題去思考,總是設(shè)法把問題放在更大的語境中,總是設(shè)法注意更大的圖景。畢竟,沒有這樣的更大的語境,你又怎能注重實效?你又怎能做出明智的妥協(xié)和有見識的決策?
他們成功的另一關(guān)鍵是他們對他們所做的每件事情負責(zé),關(guān)于這一點,我們將在“我的源碼讓貓給吃了”中加以討論。因為負責(zé),注重實效的程序員不會坐視他們的項目土崩瓦解。在“軟件的熵”中,我們將告訴你怎樣使你的項目保持整潔。
大多數(shù)人發(fā)現(xiàn)自己很難接受變化,有時是出于好的理由,有時只是因為固有的惰性。在“石頭湯與煮青蛙”中,我們將考察一種促成變化的策略,并(出于對平衡的興趣)講述一個忽視漸變危險的兩棲動物的警世傳說。
理解你的工作的語境的好處之一是,了解你的軟件必須有多好變得更容易了。有時接近完美是惟一的選擇,但常常會涉及各種權(quán)衡。我們將在“足夠好的軟件”中探究這一問題。
當然,你需要擁有廣泛的知識和經(jīng)驗基礎(chǔ)才能贏得這一切。學(xué)習(xí)是一個持續(xù)不斷的過程。在“你的知識資產(chǎn)”中,我們將討論一些策略,讓你“開足馬力”。
最后,我們沒有人生活在真空中。我們都要花大量時間與他人打交道。在“交流!”中列出了能讓我們更好地做到這一點的幾種途徑。
注重實效的編程源于注重實效的思考的哲學(xué)。本章將為這種哲學(xué)設(shè)立基礎(chǔ)。
1 我的源碼讓貓給吃了
在所有弱點中,最大的弱點就是害怕暴露弱點。
——J. B. Bossuet, Politics from Holy Writ, 1709
依據(jù)你的職業(yè)發(fā)展、你的項目和你每天的工作,為你自己和你的行為負責(zé)這樣一種觀念,是注重實效的哲學(xué)的一塊基石。注重實效的程序員對他或她自己的職業(yè)生涯負責(zé),并且不害怕承認無知或錯誤。這肯定并非是編程最令人愉悅的方面,但它肯定會發(fā)生——即使是在最好的項目中。盡管有徹底的測試、良好的文檔以及足夠的自動化,事情還是會出錯。交付晚了,出現(xiàn)了未曾預(yù)見到的技術(shù)問題。
發(fā)生這樣的事情,我們要設(shè)法盡可能職業(yè)地處理它們。這意味著誠實和坦率。我們可以為我們的能力自豪,但對于我們的缺點——還有我們的無知和我們的錯誤——我們必須誠實。
負責(zé)
責(zé)任是你主動擔(dān)負的東西。你承諾確保某件事情正確完成,但你不一定能直接控制事情的每一個方面。除了盡你所能以外,你必須分析風(fēng)險是否超出了你的控制。對于不可能做到的事情或是風(fēng)險太大的事情,你有權(quán)不去為之負責(zé)。你必須基于你自己的道德準則和判斷來做出決定。
如果你確實同意要為某個結(jié)果負責(zé),你就應(yīng)切實負起責(zé)任。當你犯錯誤(就如同我們所有人都會犯錯誤一樣)、或是判斷失誤時,誠實地承認它,并設(shè)法給出各種選擇。不要責(zé)備別人或別的東西,或是拼湊借口。不要把所有問題都歸咎于供應(yīng)商、編程語言、管理部門、或是你的同事。也許他(它)們?nèi)w或是某幾方在其中扮演了某種角色,但你可以選擇提供解決方案,而非尋找借口。
如果存在供應(yīng)商不能按時供貨的風(fēng)險,你應(yīng)該預(yù)先制定一份應(yīng)急計劃。如果磁盤垮了——帶走了你的所有源碼——而你沒有做備份,那是你的錯。告訴你的老板“我的源碼讓貓給吃了”也無法改變這一點。
提示3
Provide Options, Don’t Make Lame Excuses
提供各種選擇,不要找蹩腳的借口
在你走向任何人、告訴他們?yōu)楹文呈伦霾坏健楹蔚R、為何出問題之前,先停下來,聽一聽你心里的聲音。與你的顯示器上的橡皮鴨交談,或是與貓交談。你的辯解聽起來合理,還是愚蠢?在你老板聽來又是怎樣?
在你的頭腦里把談話預(yù)演一遍。其他人可能會說什么?他們是否會問:“你試了這個嗎……”,或是“你沒有考慮那個嗎?”你將怎樣回答?在你去告訴他們壞消息之前,是否還有其他你可以再試一試的辦法?有時,你其實知道他們會說什么,所以還是不要給他們添麻煩吧。
要提供各種選擇,而不是找借口。不要說事情做不到;要說明能夠做什么來挽回局面。必須把代碼扔掉?給他們講授重構(gòu)的價值(參見重構(gòu),184頁)。你要花時間建立原型(prototyping),以確定最好的繼續(xù)前進的方式(參見原型與便箋,53頁)?你要引入更好的測試(參見易于測試的代碼,189頁;以及無情的測試,237頁)或自動化(參見無處不在的自動化,230頁),以防止問題再度發(fā)生?又或許你需要額外的資源。不要害怕提出要求,也不要害怕承認你需要幫助。
在你大聲說出它們之前,先設(shè)法把蹩腳的借口清除出去。如果你必須說,就先對你的貓說。反正,如果小蒂德爾絲(Tiddles,BBC在1969~1974年播出的喜劇節(jié)目“Monty Python's Flying Circus”中的著名小母貓——譯注)要承受指責(zé)……
相關(guān)內(nèi)容:
l 原型與便箋,53頁
l 重構(gòu),184頁
l 易于測試的代碼,189頁
l 無處不在的自動化,230頁
l 無情的測試,237頁
挑戰(zhàn)
l 如果有人——比如銀行柜臺職員、汽車修理工或是店員——對你說蹩腳的借口,你會怎樣反應(yīng)?結(jié)果你會怎樣想他們和他們的公司?
2 軟件的熵
盡管軟件開發(fā)幾乎不受任何物理定律的約束,熵(entropy)對我們的影響卻很大。熵是一個來自物理學(xué)的概念,指的是某個系統(tǒng)中的“無序”的總量。遺憾的是,熱力學(xué)定律保證了宇宙中的熵傾向于最大化。當軟件中的無序增長時,程序員們稱之為“軟件腐爛”(
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/Mac_cm/archive/2009/10/28/4738102.aspx
posted on 2009-11-04 13:48
becket_zheng 閱讀(152)
評論(0) 編輯 收藏 所屬分類:
生活