http://www.aygfsteel.com/ebecket 返還網
          隨筆-140  評論-11  文章-131  trackbacks-0

            程序員修煉之道(1-7)

          如何被推薦?
          1 我的源碼讓貓給吃了

          注重實效的程序員的特征是什么?我們覺得是他們處理問題、尋求解決方案時的態度、風格、哲學。他們能夠越出直接的問題去思考,總是設法把問題放在更大的語境中,總是設法注意更大的圖景。畢竟,沒有這樣的更大的語境,你又怎能注重實效?你又怎能做出明智的妥協和有見識的決策?

            他們成功的另一關鍵是他們對他們所做的每件事情負責,關于這一點,我們將在“我的源碼讓貓給吃了”中加以討論。因為負責,注重實效的程序員不會坐視他們的項目土崩瓦解。在“軟件的熵”中,我們將告訴你怎樣使你的項目保持整潔。
            大多數人發現自己很難接受變化,有時是出于好的理由,有時只是因為固有的惰性。在“石頭湯與煮青蛙”中,我們將考察一種促成變化的策略,并(出于對平衡的興趣)講述一個忽視漸變危險的兩棲動物的警世傳說。
            理解你的工作的語境的好處之一是,了解你的軟件必須有多好變得更容易了。有時接近完美是惟一的選擇,但常常會涉及各種權衡。我們將在“足夠好的軟件”中探究這一問題。
            當然,你需要擁有廣泛的知識和經驗基礎才能贏得這一切。學習是一個持續不斷的過程。在“你的知識資產”中,我們將討論一些策略,讓你“開足馬力”。
            最后,我們沒有人生活在真空中。我們都要花大量時間與他人打交道。在“交流!”中列出了能讓我們更好地做到這一點的幾種途徑。
            注重實效的編程源于注重實效的思考的哲學。本章將為這種哲學設立基礎。
          1 我的源碼讓貓給吃了
          在所有弱點中,最大的弱點就是害怕暴露弱點。
            ——J. B. Bossuet, Politics from Holy Writ, 1709
           
            依據你的職業發展、你的項目和你每天的工作,為你自己和你的行為負責這樣一種觀念,是注重實效的哲學的一塊基石。注重實效的程序員對他或她自己的職業生涯負責,并且不害怕承認無知或錯誤。這肯定并非是編程最令人愉悅的方面,但它肯定會發生——即使是在最好的項目中。盡管有徹底的測試、良好的文檔以及足夠的自動化,事情還是會出錯。交付晚了,出現了未曾預見到的技術問題。
            發生這樣的事情,我們要設法盡可能職業地處理它們。這意味著誠實和坦率。我們可以為我們的能力自豪,但對于我們的缺點——還有我們的無知和我們的錯誤——我們必須誠實。
          負責
            責任是你主動擔負的東西。你承諾確保某件事情正確完成,但你不一定能直接控制事情的每一個方面。除了盡你所能以外,你必須分析風險是否超出了你的控制。對于不可能做到的事情或是風險太大的事情,你有權不去為之負責。你必須基于你自己的道德準則和判斷來做出決定。
            如果你確實同意要為某個結果負責,你就應切實負起責任。當你犯錯誤(就如同我們所有人都會犯錯誤一樣)、或是判斷失誤時,誠實地承認它,并設法給出各種選擇。不要責備別人或別的東西,或是拼湊借口。不要把所有問題都歸咎于供應商、編程語言、管理部門、或是你的同事。也許他(它)們全體或是某幾方在其中扮演了某種角色,但你可以選擇提供解決方案,而非尋找借口。
            如果存在供應商不能按時供貨的風險,你應該預先制定一份應急計劃。如果磁盤垮了——帶走了你的所有源碼——而你沒有做備份,那是你的錯。告訴你的老板“我的源碼讓貓給吃了”也無法改變這一點。
           
          提示3  
          Provide Options, Don’t Make Lame Excuses
          提供各種選擇,不要找蹩腳的借口


           
            在你走向任何人、告訴他們為何某事做不到、為何耽擱、為何出問題之前,先停下來,聽一聽你心里的聲音。與你的顯示器上的橡皮鴨交談,或是與貓交談。你的辯解聽起來合理,還是愚蠢?在你老板聽來又是怎樣?
            在你的頭腦里把談話預演一遍。其他人可能會說什么?他們是否會問:“你試了這個嗎……”,或是“你沒有考慮那個嗎?”你將怎樣回答?在你去告訴他們壞消息之前,是否還有其他你可以再試一試的辦法?有時,你其實知道他們會說什么,所以還是不要給他們添麻煩吧。
            要提供各種選擇,而不是找借口。不要說事情做不到;要說明能夠做什么來挽回局面。必須把代碼扔掉?給他們講授重構的價值(參見重構,184頁)。你要花時間建立原型(prototyping),以確定最好的繼續前進的方式(參見原型與便箋,53頁)?你要引入更好的測試(參見易于測試的代碼,189頁;以及無情的測試,237頁)或自動化(參見無處不在的自動化,230頁),以防止問題再度發生?又或許你需要額外的資源。不要害怕提出要求,也不要害怕承認你需要幫助。
            在你大聲說出它們之前,先設法把蹩腳的借口清除出去。如果你必須說,就先對你的貓說。反正,如果小蒂德爾絲(Tiddles,BBC在1969~1974年播出的喜劇節目“Monty Python's Flying Circus”中的著名小母貓——譯注)要承受指責……

           

          相關內容:
          l       原型與便箋,53頁
          l       重構,184頁
          l       易于測試的代碼,189頁
          l       無處不在的自動化,230頁
          l       無情的測試,237頁
          挑戰
          l       如果有人——比如銀行柜臺職員、汽車修理工或是店員——對你說蹩腳的借口,你會怎樣反應?結果你會怎樣想他們和他們的公司?
          2 軟件的熵

          盡管軟件開發幾乎不受任何物理定律的約束,熵(entropy)對我們的影響卻很大。熵是一個來自物理學的概念,指的是某個系統中的“無序”的總量。遺憾的是,熱力學定律保證了宇宙中的熵傾向于最大化。當軟件中的無序增長時,程序員們稱之為“軟件腐爛”(


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Mac_cm/archive/2009/10/28/4738102.aspx

          posted on 2009-11-04 13:48 becket_zheng 閱讀(153) 評論(0)  編輯  收藏 所屬分類: 生活
          主站蜘蛛池模板: 仪陇县| 察雅县| 巴楚县| 咸阳市| 通榆县| 克什克腾旗| 益阳市| 竹山县| 松溪县| 凤庆县| 南平市| 深水埗区| 新源县| 乐亭县| 金溪县| 龙门县| 永州市| 曲麻莱县| 兰坪| 吴堡县| 墨江| 南澳县| 虞城县| 遵义市| 博野县| 镇原县| 万州区| 上栗县| 阿克陶县| 哈巴河县| 三门峡市| 苗栗县| 平湖市| 革吉县| 咸丰县| 驻马店市| 名山县| 杭锦旗| 南靖县| 荣成市| 古蔺县|