|
作家和顧問溫伯格(Gerald M. Weinberg)已在計(jì)算機(jī)行業(yè)活躍了半個(gè)多世紀(jì),作為一些最具影響力書籍的作者,他在業(yè)內(nèi)廣為人知,備受尊敬。
最近,他在自己的博客“顧問的秘密(Secrets of Consulting)”上發(fā)表文章,指出大家對(duì)歷史的漠不關(guān)心,創(chuàng)新和進(jìn)步被炒作周期所包圍,似乎大家都在重復(fù)以往,沒有組織和個(gè)人從前一個(gè)周期中吸取教訓(xùn)。
他正在將之前寫的書《系統(tǒng)分析與設(shè)計(jì)的反思(Rethinking Systems Analysis and Design)》重排為電子版格式,并打算對(duì)寫于20年前的一個(gè)章節(jié)進(jìn)行修改,原標(biāo)題為“超越結(jié)構(gòu)化編程(Beyond Structured Programming)”。結(jié)果發(fā)現(xiàn),只要將短語“結(jié)構(gòu)化編程”替換為“敏捷”,這章內(nèi)容就會(huì)針對(duì)到時(shí)下的“敏捷編程革命”上來。
他說:
雖然這是寫給上一輩人看的文章,如今經(jīng)過兩代人了,而且對(duì)多數(shù)程序員來說,“敏捷編程革命”也已經(jīng)是明日黃花,但這文章所說的仍然適用——即使對(duì)于下一波和再下一波反思風(fēng)潮,也仍然適用。我相信它在版本停止更新很長時(shí)間以后,還能有現(xiàn)實(shí)意義。為什么?因?yàn)槲覀冞@個(gè)行業(yè)耐不住寂寞,每十年就要鬧一輪新風(fēng)潮。所以,你讀這篇文章的時(shí)候,也別管圈內(nèi)里正充斥著哪些風(fēng)潮,只要沿用同樣的教訓(xùn)就好了。
接下來他談到,很多公司將實(shí)踐創(chuàng)新做為口號(hào),實(shí)際做起來,要么是盲目套用了條條框框,要么是只重簡單實(shí)踐,而并未貫徹有效變革所需的原則。
他說,如果詳加考察所謂的敏捷應(yīng)用:
- 5%可認(rèn)為徹底達(dá)成敏捷。
- 20%可認(rèn)為充分遵循了敏捷實(shí)踐,相對(duì)于1990年的平均水平,有了明顯改進(jìn)。
- 50%能部分證明是多少嘗試用到了一些“敏捷規(guī)則”,但用得稀里糊涂,成效微乎其微。
- 25%看不出有過去二十年來各種編程思想作用的痕跡,包括敏捷在內(nèi)。
他鼓勵(lì)謹(jǐn)慎而智慧地應(yīng)用敏捷實(shí)踐,因?yàn)椋?/p>
那些成功達(dá)成期望、從敏捷編程中獲益的單位和個(gè)人,往往不是那些為常規(guī)的軟、硬件賣點(diǎn)掏錢的家伙,而是傾聽這些賣點(diǎn)、從中提取所需、以解決自身問題的。他們實(shí)現(xiàn)的是自己的想法,也并不排斥他山之石可以攻玉。總的來說,即使沒有敏捷編程,他們對(duì)問題的解決也是成功的,而敏捷讓成功錦上添花了。
本章結(jié)語中他呼吁三思而后行:
做我們這行,能輕松搞定的問題即便有,也不多。問題的成功解決,在于放低對(duì)“變魔術(shù)”的期待,以及努力實(shí)現(xiàn)自己想法的決心,哪怕這些想法出自公司年會(huì)酒足飯飽后的閑言碎語。總結(jié)以上教訓(xùn),我打算在編程界另立門派,本門派信條如下:
- 沒有什么能代替對(duì)問題本身的透徹認(rèn)識(shí),除非中了頭彩。
- 沒有什么解決方案能放之四海皆準(zhǔn),在某一場(chǎng)合的最佳方案,可能在別處偏偏是最差的。
- 好方法通常具有一定的普遍適用性,熟悉以往的成功案例,可以溫故而知新。
- 解決之道不光是掌握方法,還得掌握時(shí)機(jī),這樣就能隨機(jī)應(yīng)變,讓方法來適應(yīng)問題,而不是削足適履。
- 就算懂得再多方法和時(shí)機(jī),實(shí)戰(zhàn)不會(huì)根據(jù)現(xiàn)有知識(shí)來出題,很多領(lǐng)域前人也未曾探索,還是謙虛第一。
請(qǐng)記住,本文初稿寫于二十年前,本來是討論結(jié)構(gòu)化編程的,僅僅是把“結(jié)構(gòu)化編程”替換為“敏捷”,就變成一篇時(shí)下適用的文章,和1990年一樣。
類似地,Elisabeth Hendrickson發(fā)表了題為“對(duì)敏捷的抵觸,還是職業(yè)生涯的警鐘?(Agile Backlash? Or Career Wakeup Call)”的文章,文章說,一提到敏捷應(yīng)用,整個(gè)行業(yè)似乎充斥著抵觸思維定式:
第一類思維定式中,抵觸者是在那些半癱瘓的組織里,被缺心眼兒經(jīng)理強(qiáng)加的“敏捷”惡心到無力的人們。“缺心眼兒”指的是,有些經(jīng)理以為“敏捷教練”的資質(zhì),就是兩天培訓(xùn)拿到的CSM證書(譯注:Certified Scrum Master - 敏捷教練認(rèn)證);還有些經(jīng)理以為,只要改改流程文檔,搜索替換幾個(gè)關(guān)鍵詞,團(tuán)隊(duì)就可以敏捷、變形、出發(fā)了。幾個(gè)關(guān)鍵詞說的是:
- 階段 --> 迭代
- 項(xiàng)目經(jīng)理 --> 敏捷教練
- 需求 --> 用戶故事
- 預(yù)計(jì)工時(shí) --> 故事點(diǎn)
- 項(xiàng)目狀況會(huì)議 --> 站立會(huì)議
悲催的是,我們眼看“敏捷”這個(gè)詞變了味兒,誰都無能為力。每個(gè)流行語都這樣——
ISO(國際標(biāo)準(zhǔn)化認(rèn)證)、CMM(軟件能力成熟度模型 - Capability Maturity Model)、CMMI(能力成熟度模型集成 - Capability Maturity Model Integration)、RUP(統(tǒng)一軟件開發(fā)過程 - Rational Unified Process),你隨便挑……
第二類思維定式更讓她擔(dān)心:
我發(fā)現(xiàn)還有一類思維定式,更讓人上火,卻又值得深究。這些抵觸情緒,并非針對(duì)“敏捷”的誤解誤用,而是攻擊敏捷實(shí)踐本身:站立會(huì)議、結(jié)對(duì)編程、協(xié)作組、開放辦公室等等。
我猜想,這里有些人是內(nèi)向型性格,他們工作在一群外向型的人中間,而敏捷中包含的社交特性,讓外向型的人一下子如魚得水。內(nèi)向型的人需要時(shí)間和空間,好讓自己處理事情。如果一天到晚都沒有足夠?qū)儆谧约旱臅r(shí)間,他們會(huì)抓狂。如果這里說的就是你,希望你別把敏捷當(dāng)成仇人,嘗試跟大家一起工作,為協(xié)作時(shí)間和獨(dú)處時(shí)間找一個(gè)可接受的平衡。
接下來她談到,有許多社會(huì)行為放在以前可以容忍,而敏捷團(tuán)隊(duì)不能接受,而社會(huì)和心理成熟度對(duì)現(xiàn)今團(tuán)隊(duì)更加重要。
事實(shí)情況是,具有一定復(fù)雜度的軟件系統(tǒng)創(chuàng)作,屬于社會(huì)行為,需要集體合作。光憑才氣是不夠的,歷來如此。真正有能力的團(tuán)隊(duì)成員,都有社交技巧,他們傾聽、協(xié)作、分享,并做出貢獻(xiàn)。
InfoQ最近一篇文章探討了敏捷炒作周期“敏捷是否到了夢(mèng)醒時(shí)分?(Is Agile in the Trough of Disillusionment?)”
所以,計(jì)算機(jī)行業(yè)能否從歷史車輪中學(xué)到某些東西?或者注定要一次次重復(fù)炒作新思潮?
注: 本文作者Shane Hastie是一位敏捷指導(dǎo)、教練和顧問,在澳大利亞和新西蘭的軟件教育聯(lián)盟工作。另外這篇新聞的討論也非常有意思,特摘出幾個(gè)以饗讀者,也希望我們能繼續(xù)討論。
Amr Elssamadisy:
浪花淘盡英雄……
我一邊讀一邊點(diǎn)頭,“風(fēng)潮論”深合我心;而且悲哀的是,“敏捷之殤”的說法也深合我心——敏捷不靈了,因?yàn)楂@益的人越來越少,因?yàn)槊艚菰介L越大,大到真正重要的事說不出也做不到了。
另一方面,還沒發(fā)現(xiàn)有誰進(jìn)行結(jié)構(gòu)化編程實(shí)踐(也許是我沒在意)。然而我可以想象,敏捷的核心原則,對(duì)個(gè)體和互動(dòng)的關(guān)注等等……從現(xiàn)在起適用5年、10年、20年。
我們正在整理Steve Peha的一篇文章,即將發(fā)表在InfoQ,內(nèi)容是如何將敏捷原則應(yīng)用于美國的教育系統(tǒng)。想想結(jié)構(gòu)化編程,能適用于其他領(lǐng)域嗎?
Udayan Banerjee:
迭代開發(fā)怎么樣?試誤法(trail and error)是否進(jìn)化的關(guān)鍵因素?我認(rèn)為這是敏捷的重中之重。
一個(gè)思考——20年后,我們是與人互動(dòng),還是與一個(gè)系統(tǒng)互動(dòng)?
Jens Meydam:
Amr 你好,
……因?yàn)楂@益的人越來越少,因?yàn)槊艚菰介L越大,大到真正重要的事說不出也做不到了。
你覺得“真正重要的事”是什么?
Amr Elssamadisy:
你覺得“真正重要的事”是什么?
嗯……僅舉幾例:
- 瓶頸在于學(xué)習(xí);
- 所有權(quán);
- 改進(jìn)別人之前,先改進(jìn)自己;
- 在每個(gè)迭代,對(duì)“完成”的狂熱偏執(zhí);
- 重視實(shí)際商業(yè)價(jià)值,而非抽象概念;
- 改變環(huán)境,以達(dá)到上述要求。
列這些的時(shí)候,我知道敏捷社區(qū)中已經(jīng)有一些模糊的提法,大家都在說“文化”,但每個(gè)人對(duì)文化都有不同的理解。但我發(fā)現(xiàn),包括上述在內(nèi)的一些特性,在應(yīng)用敏捷和精益成效明顯的團(tuán)隊(duì)都有體現(xiàn)。
Jens Meydam:
謝謝,這個(gè)列表很有分量!
說實(shí)話,我感興趣的是,你沒把重點(diǎn)放在技術(shù)上(除了第四點(diǎn)“完成”之外)。好多XP出身的教練似乎覺得,人們半推半就被敏捷的主要原因,是技術(shù)能力缺乏,而且有人批評(píng)Scrum脫離工程實(shí)踐。
你眼光獨(dú)到地指出問題所在——學(xué)習(xí)、所有權(quán)、創(chuàng)造真正的商業(yè)價(jià)值——我非常同意。技術(shù)能力是必要條件,但遠(yuǎn)遠(yuǎn)不是充分條件。
Amr Elssamadisy:
多謝。你說的對(duì),技術(shù)能力是必要但不充分條件,Scrum也不能例外。我懷疑的是,類似前面提到那些領(lǐng)域,能否成為必要且充分的條件。
非技術(shù)因素與技術(shù)因素相輔相成。你認(rèn)為重要事情的列表有哪些呢?
it知識(shí)庫:軟件開發(fā)應(yīng)該以史為鑒,還是從頭再來?,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。