高效程序員的45個習(xí)慣 4.交付用戶想要的軟件

  • 讓客戶做決定
  • 讓設(shè)計指導(dǎo)而不是操縱開發(fā)
  • 合理的使用技術(shù)
  • 提早集成溶锭,頻繁集成,降低新代碼集成帶來的破壞性變化
  • 一直保持可以發(fā)布
  • 提早實現(xiàn)自動化部署
  • 使用演示獲得頻繁反饋
  • 使用短迭代忧侧,增量發(fā)布

10 讓客戶做決定

開發(fā)者(及項目經(jīng)理)能做的一個最重要的決定就是:判斷哪些是自己決定不了的,應(yīng)該讓企業(yè)主做決定挣菲。

讓你的客戶做決定贮喧。開發(fā)者、經(jīng)理或者業(yè)務(wù)分析師不應(yīng)該做業(yè)務(wù)方面的決定舔庶。用業(yè)務(wù)負(fù)責(zé)人能夠理解的語言抛蚁,向他們詳細解釋遇到的問題,并讓他們做決定惕橙。

11 讓設(shè)計指導(dǎo)開發(fā)而不是操縱開發(fā)

設(shè)計滿足實現(xiàn)即可瞧甩,不必過于詳細
Design should be only as detailed as needed to implement

嚴(yán)格的需求—設(shè)計—代碼—測試開發(fā)流程源于理想化的瀑布式②開發(fā)方法,它導(dǎo)致在前面進行了過度的設(shè)計弥鹦。這樣在項目的生命周期中肚逸,更新和維護這些詳細的設(shè)計文檔變成了主要工作,需要時間和資源方面的巨大投資彬坏,卻只有很少的回報朦促。我們本可以做得更好。

設(shè)計可以分為兩層:戰(zhàn)略和戰(zhàn)術(shù)栓始。前期的設(shè)計屬于戰(zhàn)略务冕,通常只有在沒有深入理解需求的時候需要這樣的設(shè)計。更確切地說混滔,它應(yīng)該只描述總體戰(zhàn)略洒疚,不應(yīng)深入到具體的細節(jié)歹颓。

良好的戰(zhàn)略設(shè)計應(yīng)該扮演地圖的角色,指引你向正確的方向前進油湖。任何設(shè)計僅是一個起跑點:它就像你的代碼一樣巍扛,在項目的生命周期中,會不停地進一步發(fā)展和提煉乏德。

好的設(shè)計應(yīng)該是正確的撤奸,而不是精確的。也就是說喊括,它描述的一切必須是正確的胧瓜,不應(yīng)該涉及不確定或者可能會發(fā)生變化的細節(jié)。它是目標(biāo)郑什,不是具體的處方府喳。

CRC(類—職責(zé)—協(xié)作)卡片的設(shè)計方法

  • 類名
  • 職責(zé):它應(yīng)該做什么?
  • 協(xié)作者:要完成工作它要與其他什么對象一起工作蘑拯?

白板钝满、草圖、便利貼都是非常好的設(shè)計工具申窘。復(fù)雜的建模工具只會讓你分散精力弯蚜,而不是啟發(fā)你的工作。

12 合理的使用技術(shù)

盲目地為項目選擇技術(shù)框架剃法,就好比是為了少交稅而生孩子碎捺。

每一門技術(shù)都會有優(yōu)點和缺點,無論它是開源的還是商業(yè)產(chǎn)品贷洲、框架收厨、工具或者語言,一定要清楚它的利弊恩脂。

13 保持可以發(fā)布

下面是一個簡單的工作流程帽氓,可以防止你提交破壞系統(tǒng)的代碼。

本地運行測試
檢出最新的代碼
提交代碼

14 提早集成俩块,頻繁集成

敏捷的一個主要特點就是持續(xù)開發(fā)。

15 提早實現(xiàn)自動化部署

提早在客戶的機器上進行部署浓领,避免最后部署時才發(fā)現(xiàn)問題玉凯。同時也要實現(xiàn)自動化部署。

質(zhì)量保證人員應(yīng)該測試部署過程
QA should test deployment

一開始就實現(xiàn)自動化部署應(yīng)用联贩。使用部署系統(tǒng)安裝你的應(yīng)用漫仆,在不同的機器上用不同的配置文件測試依賴的問題。質(zhì)量保證人員要像測試應(yīng)用一樣測試部署泪幌。

16 使用演示獲得頻繁反饋

定期地盲厌,每隔一段時間署照,例如一個迭代的結(jié)束,就與客戶會晤吗浩,并且演示你已經(jīng)完成的功能特性建芙。

要頻繁地獲得反饋。如果你的迭代周期是一個季節(jié)或者一年(那就太長了)懂扼,就應(yīng)把周期縮短到一周或者兩周禁荸。完成了一些功能和特征之后,去積極獲得客戶的反饋阀湿。

清晰可見的開發(fā)赶熟。在開發(fā)的時候,要保持應(yīng)用可見(而且客戶心中也要了解)陷嘴。每隔一周或者兩周映砖,邀請所有的客戶,給他們演示最新完成的功能灾挨,積極獲得他們的反饋邑退。

17 使用短迭代,增量發(fā)布

確定使產(chǎn)品可用的核心功能涨醋,然后把它們放在生產(chǎn)環(huán)境中瓜饥,越早交到用戶的手里越好。

即使是美國國家航空航天局(NASA)也使用迭代和增量開發(fā)方式開發(fā)用于航天飛機的復(fù)雜軟件浴骂。

根據(jù)項目的大小乓土,理想的發(fā)布周期是幾周到幾個月束亏。在每個增量開發(fā)周期里驹尼,應(yīng)該使用短的迭代(不應(yīng)該超過兩周)闽晦。每個迭代都要有演示酿雪,選擇可能提供反饋的用戶员寇,給他們每人一份最新的產(chǎn)品副本梯刚。

關(guān)于迭代時間長短一直是一個有爭議的問題输莺。
有時團隊無法在開發(fā)新的代碼的同時又要維護很多已經(jīng)完成了的代碼答憔。解決方案是喳挑,在每4周的迭代中間安排一周的維護任務(wù)彬伦。沒有規(guī)定說迭代必須要緊挨著下一個迭代。

18 固定的價格就意味著背叛承諾

固定價格的合同會是敏捷團隊的一大難題伊诵。我們一直在談?wù)撊绾斡贸掷m(xù)单绑、迭代和增量的方式工作。但是現(xiàn)在卻有些人跑過來曹宴,想提早知道它會花費多少時間及多少成本搂橙。

試試下面的辦法。
主動提議先構(gòu)建系統(tǒng)最初的笛坦、小的和有用的部分(用建筑來打個比方区转,就是先做一個車庫)苔巨。挑選一系列小的功能,這樣完成第一次交付應(yīng)該不多于6~8周废离。向客戶解釋侄泽,這時候還不是要完成所有的功能,而是要足夠一次交付厅缺,并能讓用戶真正使用蔬顾。

第一個迭代結(jié)束時客戶有兩個選擇:可以選擇一系列新的功能,繼續(xù)進入下一個迭代湘捎;或者可以取消合同诀豁,僅需支付第一個迭代的幾周費用,他們要么把現(xiàn)在的成果扔掉窥妇,要么找其他的團隊來完成它舷胜。

如果他們選擇繼續(xù)前進。那么這時候活翩,應(yīng)該就能很好地預(yù)測下一個迭代工作烹骨。在下一個迭代結(jié)束的時候,用戶仍然有同樣的選擇機會:要么現(xiàn)在停止材泄,要么繼續(xù)下一個迭代沮焕。

對客戶來說,這種方式的好處是項目不可能會死亡拉宗。他們可以很早地看到工作的進度(或者不足之處)峦树。他們總是可以控制項目,可以隨時停止項目旦事,不需要繳納任何的違約金魁巩。他們可以控制先完成哪些功能,并能精確地知道需要花費多少資金姐浮」人欤總而言之,客戶會承擔(dān)更低的風(fēng)險卖鲤。
而你所做的就是在進行迭代和增量開發(fā)肾扰。

敏捷不是意味著“開始編碼,我們最終會知道何時可以完成”蛋逾。你仍然需要根據(jù)當(dāng)前的知識和猜想白对,做一個大致的評估,解釋如何才能到達這個目標(biāo)换怖,并給出誤差范圍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蟀瞧,一起剝皮案震驚了整個濱河市沉颂,隨后出現(xiàn)的幾起案子条摸,更是在濱河造成了極大的恐慌,老刑警劉巖铸屉,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钉蒲,死亡現(xiàn)場離奇詭異,居然都是意外死亡彻坛,警方通過查閱死者的電腦和手機顷啼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昌屉,“玉大人钙蒙,你說我怎么就攤上這事〖渫裕” “怎么了躬厌?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竞帽。 經(jīng)常有香客問我扛施,道長,這世上最難降的妖魔是什么屹篓? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任疙渣,我火速辦了婚禮,結(jié)果婚禮上堆巧,老公的妹妹穿的比我還像新娘妄荔。我一直安慰自己,他們只是感情好恳邀,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布懦冰。 她就那樣靜靜地躺著,像睡著了一般谣沸。 火紅的嫁衣襯著肌膚如雪刷钢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天乳附,我揣著相機與錄音内地,去河邊找鬼。 笑死赋除,一個胖子當(dāng)著我的面吹牛阱缓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播举农,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼荆针,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起航背,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤喉悴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后玖媚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箕肃,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年今魔,在試婚紗的時候發(fā)現(xiàn)自己被綠了勺像。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡错森,死狀恐怖吟宦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情问词,我是刑警寧澤督函,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站激挪,受9級特大地震影響辰狡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垄分,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一宛篇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薄湿,春花似錦叫倍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坐求,卻和暖如春蚕泽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桥嗤。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工须妻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泛领。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓荒吏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渊鞋。 傳聞我的和親對象是個殘疾皇子绰更,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容