1. 程式人生 > >程式設計師需要知道的97件事情之 ------- 謀定而後動

程式設計師需要知道的97件事情之 ------- 謀定而後動

[size=medium] 本人英語抄過4級,奇爛無比,翻譯這個實屬蛋疼,錯誤是肯定有的,而且是翻不出出來就是隨便猜,歡迎指出,謝謝啦。但願我能夠翻完我看的懂的....
原連結:oreilly的程式設計師需要知道的97件事http://programmer.97things.oreilly.com/wiki/index.php/Act_with_Prudence
不管你著手去做什麼事情,都應該在行動前規劃,並考慮與之相對的結果(anon).
在迭代的初期,無論計劃看起來是多麼的合適,你都不能忽略隨後可能到來的壓力。當你面臨著“正確去做”和“快速去做”的抉擇的時候,在懷著我可以回過頭去修復這些不足的僥倖心理的條件下,常常會要求選擇“快速完成”。

當你對你自己,你的團隊,你的客戶作出承諾的時候,你已經做出了這樣的選擇。但是頻繁的迭代帶來的新的問題,使你不得不面對他們。這些使專案延期的種類被認作“技術債務”。更加明確的定義,Martin Fowler在他的技術類過錯分類這篇文章中,把這類問題歸結為“有預謀的技術債務”,用於區分於“無意識的技術債務”。

技術債務很像貸款:你能從短期類受益,但是你必須一直關注它直到它被完全付清。
走捷徑的程式碼很難新增新的特性和重構。它們將帶來面積性的過失和脆弱的單元測試。你忽視它的時間越長,它帶來的後果更嚴重。當你抽出時間去解決原先的預留問題,它可能已經導致一序列追求捷徑而沒有選擇正確途徑的選擇橫檔在原先問題之前,使得程式碼更加困難去重構致正確化。事實上,大家總是等到事情變的很糟糕的時候才去修復這些問題,通常到那個階段下,他常常變得十分難以修復以致你無法避免花費時間和風險

通常招致“技術債務”意味著即將專案的最終期限或者是新增一個很小的特性。在這個階段下,試著儘量不要犯這樣的錯誤。但是,如果當時的情形完全要求那樣,那就勉強的做吧。但是(這是個強烈的轉折)你必須跟蹤這些“技術債務”,並且快速的返回來修復它。一旦你決定去妥協,記錄這些任務或者日誌在跟蹤系統裡面,以確保不會遺忘他們。
如果你在下個迭代確認時間去修改這些問題,代價將非常小。忽視這些過失將增加影響而這些問題將被跟蹤讓代價可見。這將強調“程式碼過錯”在商業上的效果並且適當的“”。如果去計算和跟蹤這些利害問題,將依賴於特定的專案,但是你必須跟蹤它。

儘快的還清技術債務,否則那將會是個輕率的決定。
[/size]

相關推薦

程式設計師需要知道97事情 ------- 謀定而後

[size=medium] 本人英語抄過4級,奇爛無比,翻譯這個實屬蛋疼,錯誤是肯定有的,而且是翻不出出來就是隨便猜,歡迎指出,謝謝啦。但願我能夠翻完我看的懂的.... 原連結:oreilly的程式設計師需要知道的97件事http://programmer.97th

程式設計師需要知道97事情 ------- 簡單就是美

本人英語抄過4級,奇爛無比,翻譯這個實屬蛋疼,錯誤是肯定有的,而且是翻不出來就只是隨便猜,歡迎指出,謝謝。但願我能夠翻完我看的懂的.... 原連結:oreilly的程式設計師需要知道的97件事http://programmer.97things.oreilly.com/

木訥的程式設計師需要知道事情(一)

最近讀了一本書,叫做極客與團隊,英文名是Team Geek:A Software Developer's Guide to Working Well With Others, 感覺不錯,這裡做一些筆記

初級程式設計師需要知道的基本程式碼規範

1.【強制】大括號的使用約定。如果是大括號內為空,則簡潔地寫成{}即可,不需要換行;如果是非空程式碼塊則:     1) 左大括號前不換行。     2) 左大括號後換行。     3) 右大括號前換行。     4) 右大括號後還有 else 等程式碼則不換行;表示終止的右大

為什麼程式設計師需要知道網際網路行業發展史

相關宣告:寫這篇文章絕不是為了抹黑《極客時間》,相反我相當看好這個產品,並願意為它的成長貢獻一份自己的苦藥。在《極客時間》剛一推出時,我便寫了文章《「極客時間」帶來的社群價值思考》來論述我看好它的原因。《極客時間》的很多專欄我都購買過,如果是純黑,犯不著花費這麼多錢去囤積專欄。 《極客時間》上有一款很異

程式設計師需要知道的演算法

對於程式設計師來說演算法的重要性是毋庸置疑的,這就像從小學一年級就開始學習數學,指導研究生、博士生階段都有與數學有關的不同課程一樣。很多人也許會提出反對意見,指出現在做應用開發,使用JAVA的框架,進行資料處理無非就是CRUD,最重要的是要了解業務,掌握五花八門

XCode裡的模擬器到底在哪裡?我的App被放到哪裡了?程式設計師需要知道的XCODE相關路徑

開發iOS,必然少不了和XCode這個傢伙打交道。平時我們除錯自己的App的時候,最常用到的就是模擬器Simulator了,除錯的時候,我們的App會自動被XCode安裝到模擬器中去,不過: 你知道模擬器這個傢伙在哪兒嗎? 模擬器裡面的目錄結構是什麼樣的? 你的App安裝在模擬器的哪個目錄裡了? 你的App

每個程式設計師應該瞭解的97事情

原文:http://dearymz.blog.163.com/blog/static/205657420139243750104/ 正文之前 熟知軟體開發的人都知道這個行業裡充滿了一次次悲壯的失敗,每一座成功專案的豐碑下都埋葬著無數同類型的失敗專案。大多數軟體專案都像是

程式設計師應該知道97事》

 False consensus bias虛假同感偏差 柏拉圖:風格之美、和諧、優雅及優美的節奏,盡在於簡單 童子軍規則:盡力去做,讓你離開時的世界比你找到它時還要好一點 (Robert Stephenson Smyth Baden-Powell) 電腦科學的

讀《程式設計師應該知道97事》筆記

1技術債務和童子軍規則 技術債務當你發現必須在“幹得好”和“幹得快”之間做出抉擇的時候,一般都會選擇“幹得快”,並提醒自己將來再來返工。下一輪迭代自有其新的問題,工作重點轉移到新問題上,老問題還存在。Martin Fowler把它分成:蓄意和無意把技術 債務立即記錄到任務卡

《程式設計珠璣》程式碼路16:直觀感受為何程式設計師需要學習經典演算法

作為一名老年ACM菜雞,經常見到周圍除了調庫啥也不會的程式設計師,還經常一臉正經的說:“程式設計師就是把人家寫好的東西拿出來呼叫一下,頂多改改嘛。”。emmmm,在這個貓貓狗狗都能養活自己的年代,這麼想確實沒問題 ---- 如果你確定自己不用面臨被淘汰的風險,或者在別的領域能首屈一指。 大家應該

軟體架構師應該知道97概括1-15

架構師是一種神祕的職位,據說每個架構師都有密不可傳的方法,當然我們不信,更多的是隻可意會不可言傳。就是說了我們也不會懂,因為還每到“火候”。所能做的就是,當我們到這種火候的時候我們能想起來曾經有過架構師這麼說過,然後我們就可以更自信的向前大步走.... 1、客戶需求重於個人

程式設計師與架構師的差別的思維方式(老開發感悟)

最近帶一個畢業生,他讓我對文件的撰寫有了一些新的領悟,跟以前的結合起來一起說一下: 首先,我個人在寫文件方面有2個特點:簡潔,清晰 簡潔:能用一句話說清楚的絕不用第二句,用最簡單的句子 清晰:結構清晰,讓人一目瞭然;邏輯清晰,儘量減少讀者的理解成本;重點清晰。 對內的文件 對

程式設計師需要了解的硬核知識CPU

大家都是程式設計師,大家都是和計算機打交道的程式設計師,大家都是和計算機中軟體硬體打交道的程式設計師,大家都是和CPU打交道的程式設計師,所以,不管你是玩兒硬體的還是做軟體的,你的世界都少不了計算機最核心的 - CPU CPU是什麼 CPU 的全稱是 Central Processing Unit,它是你的電

程式設計師需要了解的硬核知識記憶體

我們都知道,計算機是處理資料的裝置,而資料的主要儲存位置就是磁碟和記憶體,並且對於程式設計師來講,CPU 和記憶體是我們必須瞭解的兩個物理結構,它是你通向高階程式設計師很重要的橋樑,那麼本篇文章我們就來介紹一下基本的記憶體知識。 什麼是記憶體 記憶體(Memory)是計算機中最重要的部件之一,它是程式與CPU

程式設計師需要了解的硬核知識磁碟

此篇文章是 《程式設計師需要了解的硬核知識》系列第四篇,歷史文章請戳 程式設計師需要了解的硬核知識之記憶體 程式設計師需要了解的硬核知識之CPU 程式設計師需要了解的硬核知識之二進位制 我們大家知道,計算機的五大基礎部件是 儲存器、控制器、運算器、輸入和輸出裝置,其中從儲存功能的角度來看,可以把儲存器分為記憶

程式設計師需要了解的硬核知識壓縮演算法

此篇文章是《程式設計師需要了解的硬核知識》第五篇文章,歷史文章請戳 程式設計師需要了解的硬核知識之記憶體 程式設計師需要了解的硬核知識之CPU 程式設計師需要了解的硬核知識之二進位制 程式設計師需要了解的硬核知識之磁碟 之前的文章更多的介紹了計算機的硬體知識,會有一些難度,本篇文章的門檻會低一些,一起來看一下

程式設計師需要了解的硬核知識作業系統入門

對於程式設計師來說,最莫大的榮耀莫過於自己的軟體被大多數人使用了吧。 歷史文章請戳 程式設計師需要了解的硬核知識之記憶體 程式設計師需要了解的硬核知識之CPU 程式設計師需要了解的硬核知識之二進位制 程式設計師需要了解的硬核知識之磁碟 程式設計師需要了解的硬核知識之壓縮演算法 本篇文章作為作業系統的入門文章,

程式設計師需要了解的硬核知識作業系統和應用

利用計算機執行程式大部分都是為了提高處理效率。例如,Microsoft Word 這樣的文書處理軟體,是用來提高文字檔案處理效率的程式,Microsoft Excel 等表格計算軟體,是用來提高賬本處理效率的程式。這種為了提高特定處理效率的程式統稱為 應用 程式設計師的工作就是編寫各種各樣的應用來提高工作效率

程式設計師需要了解的硬核知識組合語言(一)

之前的系列文章從 CPU 和記憶體方面簡單介紹了一下組合語言,但是還沒有系統的瞭解一下組合語言,組合語言作為第二代計算機語言,會用一些容易理解和記憶的字母,單詞來代替一個特定的指令,作為高階程式語言的基礎,有必要系統的瞭解一下組合語言,那麼本篇文章希望大家跟我一起來了解一下組合語言。 組合語言和原生代碼 我們