-1- 雪鳥山莊小聚義
2001年2月,北美大陸還處在早春贞让,整整一個冬季的寒冷依舊沒有散去。
這顯然不是一個工作的季節(jié)柳譬,除了圍著火爐喝咖啡喳张、聊天、思考以外美澳,一切都顯得那么暗淡與多余销部。
就在這個時候制跟,位于美國猶他州瓦薩奇山區(qū)的雪鳥滑雪勝地迎來了17位客人,顯然他們是為了某種目的相約而至雨膨。
這17位客人中,有極限編程的追隨者聊记,有SCRUM實踐者,有自適應(yīng)開發(fā)支持者排监,有完全透明法的支持者,有特征驅(qū)動開發(fā)或務(wù)實編程的支持者舆床。
他們個個身懷絕技棋蚌,但卻不無一致地對基于文檔驅(qū)動的重量級軟件開發(fā)模式感到不滿,希望能夠找到一種適應(yīng)時代特點(diǎn)的輕量級軟件開發(fā)方法挨队。
俗話說谷暮,道不同不與相謀,相似的痛苦經(jīng)歷和理想追求促使他們聚在了一起瞒瘸。
誰也沒有想到坷备,這次聚會對軟件開發(fā)模式產(chǎn)生了巨大的影響熄浓,各種爭論也一直沒有平息過情臭。
這17人莫不是天罡地煞下凡省撑, 攪得整個軟件世界不得安寧?
-2- 時代背景
那么,在那個時代(2000年左右)俯在,軟件開發(fā)都出現(xiàn)了哪些特點(diǎn)呢竟秫?
大叔總結(jié)為:
- 新經(jīng)濟(jì)模式出現(xiàn),例如:e-business, e-commerce跷乐,B/S結(jié)構(gòu)轉(zhuǎn)型
- 資本急于搶占市場
- 需求增多并超出軟件生產(chǎn)能力
- 新市場處于探索期肥败,需求隨時變化
- 投資人的資金和耐心都有限
說白了,就是在資本貪婪的驅(qū)動下愕提,要求軟件生產(chǎn)活動能夠多馒稍、快、好浅侨、省地滿足資本欲望罷了纽谒。
這里需要澄清的是,大叔并不反對貪婪如输,反而是資本逐利的贊同者鼓黔。
德國著名政治經(jīng)濟(jì)學(xué)家和社會學(xué)家馬克思-韋伯在他的經(jīng)典著作《新教倫理與資本主義精神》里,就深刻闡述了資本主義精神與加爾文宗在倫理觀念上的淵源關(guān)系不见,逐利沒有違背宗教價值觀澳化,反而在誠實守信前提下的逐利,完備了人的天職稳吮,推動了資本主義與整個西方文明的發(fā)展缎谷。
天下熙熙,皆為利來灶似;天下攘攘慎陵,皆為利往;倉廩實而知禮節(jié)喻奥,衣食足而知榮辱。
大叔反對的是那種土匪搶奪式的貪婪润梯,甚至分明被搶劫了甥厦,還不允許說話刀疙。這種貪婪,禽獸不及竟纳。
-3- 宣言的誕生
言歸正傳。就在一年前锥累,類似的由極限編程者組織的聚會就搞過那么一次。只可惜俄勒岡州的羅格河畔景色過于優(yōu)美语淘,與會者吃喝一通际歼,除了紛紛表示贊同輕量級編程方法以外,并沒有留下什么結(jié)論性成果维贺。
這次17位義士相聚雪鳥山莊溯泣,可不是為了吃喝和滑雪來的榕茧。
經(jīng)過三天的討論(2月11-13),共同擬定出了一份關(guān)于輕量級編程的思想綱領(lǐng):《敏捷宣言》
宣言包含了4條價值觀和12條基本原則肢簿,熟悉的讀者可以直接忽略池充。
價值觀:
原則:
1. 我們最重要的目標(biāo)收夸,是通過持續(xù)不斷地及早交付有價值的軟件使客戶滿意血崭。
2. 欣然面對需求變化,即使在開發(fā)后期也一樣咽瓷。為了客戶的競爭優(yōu)勢茅姜,敏捷過程掌控變化月匣。
3. 經(jīng)常地交付可工作的軟件奋姿,相隔幾星期或一兩個月,傾向于采取較短的周期糯钙。
4. 業(yè)務(wù)人員和開發(fā)人員必須相互合作退腥,項目中的每一天都不例外。
5. 激發(fā)個體的斗志享潜,以他們?yōu)楹诵拇罱椖拷0础L峁┧璧沫h(huán)境和支援澜术,輔以信任,從而達(dá)成目標(biāo)猜敢。
6. 不論團(tuán)隊內(nèi)外缩擂,傳遞信息效果最好效率也最高的方式是面對面的交談添寺。
7. 可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)。
8. 敏捷過程倡導(dǎo)可持續(xù)開發(fā)陨闹。責(zé)任人趋厉、開發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)胶坠。
9. 堅持不懈地追求技術(shù)卓越和良好設(shè)計,敏捷能力由此增強(qiáng)乡数。
10. 以簡潔為本,它是極力減少不必要工作量的藝術(shù)绳矩。
11. 最好的架構(gòu)玖翅、需求和設(shè)計出自自組織團(tuán)隊。
12. 團(tuán)隊定期地反思如何能提高成效应媚,并依此調(diào)整自身的舉止表現(xiàn)猜极。
-4- 宣言的本質(zhì)
《敏捷宣言》實際上僅僅是一種思想與方法論跟伏,并不涉及具體的方法。
其核心內(nèi)容主要包括:以人為本嗜桌、持續(xù)交付辞色、響應(yīng)變化相满。其它內(nèi)容都是為了圍繞這個核心展開的。
在大叔眼里匿又,宣言更像是一種新時代背景下對客戶的承諾碌更,大叔把它翻譯成:
“親愛的客戶洞慎,我們承諾將盡一切可能,采取最實用的方法旭绒,在合理的時間內(nèi)挥吵,持續(xù)的有效的給您交付可靠的產(chǎn)品,并欣然接受一切變化房午〉ぴ剩”
具體細(xì)節(jié)、方法都包含在了“盡一切可能”和“實用”這兩點(diǎn)上沪曙,這樣的思想萎羔,充滿了西方實用主義哲學(xué)的精神贾陷。
因此髓废,我們說该抒,《敏捷宣言》的本質(zhì)就是軟件工程領(lǐng)域里的一種充滿實用主義哲學(xué)思想的方法論。
實用主義是19世紀(jì)70年代在美國本土產(chǎn)生的一個哲學(xué)流派冈爹,并在20世紀(jì)成為美國的主流思想频伤,對美國的方方面面影響甚廣憋肖。
實用主義哲學(xué)調(diào)和了理性主義與非理性主義哲學(xué)婚苹,放棄了對終極真理的追求,認(rèn)為有用即為真理坐慰。有用無用是判斷真理與謬誤的唯一標(biāo)準(zhǔn)。
實用主義強(qiáng)調(diào)以人為本赞咙,尊重人的經(jīng)驗糟港,追崇行動绍在。相信行動優(yōu)于教條桑滩,經(jīng)驗優(yōu)于僵化的原則颠放。
細(xì)看敏捷的價值觀和原則碰凶,無不透著實用主義的思想光輝欲低。我們在后面對假敏捷的判斷畜晰,也主要是采用了實用主義對真假的判斷標(biāo)準(zhǔn)凄鼻。
-5- 敏捷方法及其特征和局限性
敏捷思想在布道者的宣傳下,很快風(fēng)靡全球闰非,相應(yīng)的敏捷方法(SCRUM, KANBAN)以及一系列敏捷開發(fā)工具(Jira, Leangoo, Teambition...)也紛紛傳播河胎。
敏捷方法是在敏捷思想指導(dǎo)下的軟件工程領(lǐng)域的方法虎敦,敏捷方法的目的是為了實現(xiàn)敏捷思想提出的目標(biāo)(以人為本,持續(xù)交付胚迫,響應(yīng)變化...)访锻。
作為軟件工程領(lǐng)域的方法,一定具有一切技術(shù)工程類方法的通用特征河哑,大叔總結(jié)為以下幾點(diǎn):
- 方法源于經(jīng)驗 脫離經(jīng)驗實施敏捷璃谨,是不科學(xué)的鲤妥,尤其要尊重工程技術(shù)經(jīng)驗。
- 方法具有多樣性?方法有多種底扳,側(cè)重點(diǎn)不同衷模,很難找出萬能方法菇爪。
- 方法具有靈活性?方法以解決問題為目的柒昏,而不應(yīng)淪為死板的教條职祷。
- 方法通過行動實現(xiàn) 方法不是優(yōu)美的口號,需要行動才有意義是尖。
- 方法依據(jù)有效性評判 敏捷是實用主義方法泥耀,真假的判別依據(jù)就是有用和有效。
這個世界很有意思兜辞,再好的思想逸吵,方法不得當(dāng)不行缝裁;再好的方法,使用不得當(dāng)也不行氢妈。倘若思想邪惡了,方法得當(dāng)不得當(dāng)反倒都不重要了允懂。
這個例子近代就不少蕾总,也常被冠以《某某某宣言》琅捏,技術(shù)也罷,社會也罷蚀浆,大都如此搜吧。
敏捷方法尤其被軟件外包公司追崇并奉為圭皋滤奈,外包公司在對客戶宣傳的時候,不無例外的宣揚(yáng)他們遵循敏捷開發(fā)之道绅你。
一時間忌锯,談軟件必敏捷领炫。你若還沒有用敏捷,出門都不好意思說自己是搞軟件的似舵。
趨之若鶩碟狞,熙熙攘攘族沃,一片塵土飛揚(yáng)泌参。
人們似乎忘記了敏捷的本質(zhì)與目標(biāo)沽一,而沉浸在五花八門的敏捷實踐過程當(dāng)中漓糙。
當(dāng)然昆禽,有真的,也有假的捡硅。
-6-?你可能遇到了假敏捷
事實上盗棵,判斷一個敏捷方法實踐的真?zhèn)挝埔颍⒉灰罁?jù)有沒有使用敏捷管理工具,也不依據(jù)是否引入了SCRUM流程屯曹。
真假敏捷方法的判斷只有一條:是否符合并遵循了敏捷思想的價值觀和原則寄疏,并獲得實用效果陕截。
假敏捷的危害有時候比不敏捷還大批什,敏捷用不好驻债,反倒會把簡單事情復(fù)雜化,增大成本暮的,阻礙軟件生產(chǎn)淌实。
是敏捷猖腕,非敏捷倘感,而名敏捷也老玛。
我們列舉一些常見的假敏捷例子钧敞,你看看自己在敏捷實踐中有沒有遇到過,希望對你有所幫助溉苛。
1)已經(jīng)計劃好的Sprint不能更改
你有沒有聽到過這樣的聲音:
“是誰給當(dāng)前Sprint Backlog增加了Ticket? Sprint的Capacity都增大了炊昆。”?
“你把這個Ticket挪出去有沒有給Project Manager通知视乐?”
“Sprint Backlog已經(jīng)計劃好了佑淀,增加和刪除都不允許”
這種論調(diào)都是假敏捷的表現(xiàn)彰檬。
實際上,軟件開發(fā)過程中各種突發(fā)事情都有可能發(fā)生捧颅,或新想法碉哑,或新障礙亮蒋。Sprint Backlog不應(yīng)被視為一種承諾慎玖,而只能是一種短期預(yù)測趁怔。
在不影響Sprint Goal的前提下闰蛔,Sprint Backlog可以由開發(fā)根據(jù)實際情況做臨時調(diào)整序六。
判點(diǎn):尊重個人能力和價值例诀,關(guān)注交付
2)Release只能安排在Sprint結(jié)束的時候
Sprint只是定義了持續(xù)增量的最小邊界范圍繁涂,用以完成可提交特性二驰。Sprint和Release沒有關(guān)系。
判點(diǎn):Sprint的概念
3)會議一個都不能少
會議應(yīng)該根據(jù)實際情況矿酵,有問題了說問題全肮,沒問題了不開也可以辜腺。敏捷團(tuán)隊都在一起工作乍恐,及時溝通很容易。
雷打不動的開會百匆,都是浪費(fèi)時間瞧毙。
判點(diǎn):簡潔宙彪,高效释漆,務(wù)實
4)總結(jié)回顧會不夠私密
總結(jié)回顧會是Scrum內(nèi)部成員的會議男图,不允許成員以外的任何人參加。開發(fā)人員需要一個私密的環(huán)境暢所欲言栈戳。
嚴(yán)格意義上,Manager是不應(yīng)該參加Scrum團(tuán)隊的總結(jié)回顧會的难裆。會議的結(jié)果通過郵件發(fā)送給所有人子檀,這種做法更不正確。
判點(diǎn):激勵個人乃戈,對個人的尊重與信任
5)Product Backlog包含Technical Item
Product Backlog是Product Owner維護(hù)的褂痰,除了產(chǎn)品特性需求外,不應(yīng)該有技術(shù)性項目症虑。所有跟技術(shù)相關(guān)事務(wù)由技術(shù)人員自治維護(hù)缩歪。
這么做的目的是為了清晰劃分PO和Scrum Member的責(zé)任和權(quán)利。
判點(diǎn):責(zé)權(quán)清晰簡單
6) Scrum Master以領(lǐng)導(dǎo)自居
當(dāng)前常見的一個現(xiàn)象是Project Manager兼職Scrum Master谍憔,Scrum Master時常習(xí)慣性的以領(lǐng)導(dǎo)自居匪蝙,分配任務(wù),安排優(yōu)先順序习贫。
實際上Scrum Master只具有三個責(zé)任:推動Scrum流程, 打造高效率團(tuán)隊沈条,排除障礙屋厘。
敏捷的一個重要理念是團(tuán)隊具有高度的自治力,團(tuán)隊成員自己主動決定要做什么溢谤,怎么做。他們會主動pull任務(wù),而不是由任何人assign任務(wù)所刀。
如果你發(fā)現(xiàn)Scrum Master參與任務(wù)分配, 安排先后順序忧吟,甚至插手技術(shù),對技術(shù)指手畫腳,那一定是一個假敏捷摧玫。
判點(diǎn):責(zé)權(quán)清晰,團(tuán)隊自治坏挠,信任
7)保持KPI的漂亮比什么都重要
為了保證各種KPI看上去穩(wěn)定漂亮庇楞,人為加以配合。
Plan的點(diǎn)不能多不能少烙心,Defect比例要穩(wěn)定,Burdown不能過快或者過慢痘昌,這些都是假的表現(xiàn)。
判點(diǎn):荒謬
8)簡單事情復(fù)雜化
分明從技術(shù)的角度很簡單的事情驻啤,一定要走敏捷流程才能完成。
判點(diǎn):靈活性高于管理
9)教條地劃分Story
一個Story的故事點(diǎn)超過13就必須劃分贼涩,理由可能是領(lǐng)導(dǎo)不想看到點(diǎn)數(shù)太大的Story占锯。
實際上Story的點(diǎn)數(shù)跟時間沒有關(guān)系,有些Story可以并行工作却紧,不一定花費(fèi)太長時間哩照。
判點(diǎn):實用主義反對一切教條
可見,敏捷并不是萬能神藥,一旦吞服不當(dāng)就容易走火入魔。
不忘初心餐胀,理解敏捷的核心理念和思想,比起教條的遵循流程要重要的多。
開放扣汪、自由、信任、互動、創(chuàng)新這些軟實力学搜,才是打造高效團(tuán)隊保障優(yōu)質(zhì)產(chǎn)出的推動力瑞佩。
讓我們一起提高鑒別力,共同走向求真、務(wù)實、高效的軟件開發(fā)道路褒纲。
謝謝!