無瑕的程式碼 番外篇: 專業程式設計師的生存之道

無瑕的程式碼 番外篇: 專業程式設計師的生存之道

The Clean Coder: A Code of Conduct for Professional Programmers

出版日期:
2013/08/26
9
360324
查詢門市庫存

內容簡介

要介紹這本書的特色,就不得不介紹《無瑕的程式碼Clean Code》一書,因為兩書是互補的。

在該書中,作者教您的是如何做事(也就是如何寫出Clean Code)。
而本書中,作者教您的是如何做人(也就是如何做個Clean Coder)。

要想成為一位Clean Coder,可不簡單,絕不是只學會寫Clean Code就可以了。
還需要把寫Clean Code融入到真實的職場生涯當中。而這就牽涉到了職場求生術這類的議題。

在工作中撰寫Clean Code,初期一定會遇到一些困難,本書將教導您如何應付這些困難,說服上司、老闆、客戶、夥伴以及自己,以寫Clean Code的精神來應付開發專案時所遭遇的各種情況,才是正道。

在職場上,不可避免地會被要求趕工、加功能,即便大師也不例外,遇到這些情況,你必須學會Say No,同樣地,你也必須學會Say Yes,只有謹慎地Say Yes,別人才會對你有所尊重,相信你是一位專業人士,如此當你在Say No時,才會更有分量,更能說服對方。

本書作者Bob大叔,Robert C. Martin,是一位軟體大師,也是一位著名作家,其著作《Agile Software Development: Principles, Patterns, and Practices》曾獲得有IT奧斯卡獎之稱──Jolt震撼年度大獎。

本書適用對象

本書是Bob大叔近期的新作,在本書中,Bob大叔以親身經歷及輔導過的案例作為範例,以說故事的方式來描述各種情景。如果你寫程式專案超過一年,相信這些情景你一定不陌生,那都是軟體開發過程常遇到的真實情境。

不同的是,以往你只會做出一種回應,因此事態的發展只有一條路徑,而最終就陷入了一種悲慘的循環。那是個什麼樣的循環呢?

1. 在面對一個新的專案或功能時,沒有一套科學的辦法來進行時程的預估〈老是估不準〉。
2. 開發過程中,老是〈無法集中專注力〉,被這樣的事、那樣的事所影響,工作效率極差。
3. 由於工作效率差,所以跟不上進度,〈壓力〉來了,只好加班熬夜來趕工。也〈沒時間寫測試〉。
4. 加班熬夜寫出的程式,品質比較差,常常出現bug。
5. 由於沒有寫測試,沒有一套自動化測試,所以〈除錯〉又花了許多時間,導致要加更多的班來進行除錯。
6. 在接近專案截止日之前,終於快要完工了,但是客戶又要求〈加入新功能〉。但也給你更多的時間來開發,使你無法拒絕。
7. 由於大多數程式碼都是加班趕出來的,品質非常差,因此在擴充功能時難以修改。只好回頭做〈重構〉。
8. 由於加班趕工沒做好自動化測試,所以當加入新功能後,對於〈原有功能是否因此出錯了?〉,沒有把握,所以必須花做更多的時間在測試。

現在又回到了1或2,直到客戶不再要求加入新功能為止。
9. 已經沒時間測試了,在最終的截止日期還是把結果給發佈出去了。〈交給客戶去測吧〉。客戶必須測完後才會交付尾款。
10. 由於沒有進行完整的測試,因此,客戶發現了bug,所以要求修改,同時也對您所推出的最後版本產生懷疑,因此使得〈專案遲遲無法結案,無法收到尾款〉。

現在又回到了5,直到有天客戶的常用功能都OK了,或者你再也受不了而離職,甚至放棄收取尾款為止。

即便離職或放棄尾款也不能解決問題,因為你還是必須接新的專案,而這又回到了1。

以上的循環是否讓您感覺生活品質很差呢?是不是懷疑自己走錯行了呢?其實不是這樣的,問題在於你沒有找對方法來處理每一個步驟的應對之策。

這本書,從每個您所熟悉的故事中,發展出不同的分支,教導您如果這樣做,結果會是怎樣?如果那樣做,結局又會是怎樣?Bob大叔開的是一間顧問公司,寫程式也有四十幾年了,因此,他提出的做法完全是經驗的累積,經得起實際的考驗。如果您有疑慮,那大可不必一次全部都應用到同一個專案中,一次針對某一項來修改應對之策,您會發現,即便只是針對某一項來作修正,都會讓您獲益匪淺。

本書大多數的篇幅都在說故事,以說故事的方式來論理,當中有大約四個章節是和技術高度相關的,當中包含TDD、驗收測試、測試策略、協作、工具等等。關於這些議題,本書並未提供程式碼,而是以方法介紹為主軸來進行介紹,若你想看看實際程式碼的示範,可以參閱《無瑕的程式碼》一書。

兩書閱讀方式

這兩本姊妹書並沒有固定的閱讀順序,
如果您先讀本書《無瑕的程式碼──番外篇 The Clean Coder》,但對於實際的Clean Code有所好奇的話,可再去翻閱《無瑕的程式碼Clean Code》。
如果您先讀的是《無瑕的程式碼Clean Code》,但對於怎樣把Clean Code帶入職場有所疑問的話,則本書將為您解惑。

雖然單一本書已經能夠提升您的職場價值。但對於一位專業的程式設計師而言,最好是兩本書都讀過,如此才能發揮最大的效用。
展開看更多

產品目錄

說在前頭(Pre-Requisite Introduction)
Chapter 1 專業主義(Professionalism)
Chapter 2 說「不」(Saying No)
Chapter 3 說「是」(Saying Yes)
Chapter 4 寫程式(Coding)
Chapter 5 測試驅動開發(Test Driven Development)
Chapter 6 練習(Practicing)
Chapter 7 驗收測試(Acceptance Testing)
Chapter 8 測試策略(Testing Strategies)
Chapter 9 時間管理(Time Management)
Chapter 10 預估(Estimation)
Chapter 11 壓力(Pressure)
Chapter 12 協作(Collaboration)
Chapter 13 團隊與專案(Teams and Projects)
Chapter 14 輔導、學徒期與工藝典範(Mentoring, Apprenticeship, and Craftsmanship)
Appendix A 工具(Tooling)

作者介紹

■作者簡介

Robert C. Martin
人稱Uncle Bob,程式設計經驗超過40年,Agile Software(敏捷軟體開發)的提倡者之一。創立Object Mentor,這是一間專注於C ++、Java物件導向、模式、UML、敏捷方法學和極限程式設計的顧問諮詢公司。

在這些領域,作者撰寫了相當多的名著,其中,又以獲得有IT奧斯卡獎之稱──Jolt震撼年度大獎的

《Agile Software Development: Principles, Patterns, and Practices》

《敏捷軟體開發:原則、樣式及實務》

最為知名。該得獎年度,Jolt僅頒布通用類、技術類各一本著作得獎,通用類由此書獲得大獎,而技術類書籍則由另一本廣為人知的《Thinking in Java(第三版)》獲得。

規格

誠品貨碼 / 2680807118009
ISBN13 / 9789862017883
ISBN10 / 9862017880
EAN貨碼 / 9789862017883
頁數 / 216
注音版 / 否
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 18.5X23CM
級別 / N:無

退貨說明

退貨須知:

  1. 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
  2. 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。

依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:

  1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
  2. 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
  3. 報紙、期刊或雜誌。
  4. 經消費者拆封之影音商品或電腦軟體。
  5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
  6. 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
  7. 國際航空客運服務。

若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:

  1. 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
  2. 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
  3. 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
  4. 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  5. 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  6. 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送

作者相關書籍