“敏捷”已然成為一門“大生意”。以 Scrum 聯(lián)盟認(rèn)證 Scrum Master 為首,我們看到了成千上萬所謂的“敏捷“教練和培訓(xùn)師,以及很多相互競爭的框架和方法,比如“敏捷”領(lǐng)導(dǎo)力培訓(xùn)、“敏捷”項(xiàng)目管理,等等。 或許這些不算是壞事,至少對(duì)于企業(yè)來說。想要進(jìn)步的企業(yè)通常會(huì)進(jìn)步,即使“敏捷”思想沒有得到充分應(yīng)用,付出的努力也不會(huì)白白浪費(fèi)。至少,企業(yè)知道這當(dāng)中都發(fā)生了什么,即使是最不開明的領(lǐng)導(dǎo)層,也會(huì)因此知道該怎么做出更好的決策。從這方面來說,事情是好的,我完全贊同。 但對(duì)于開發(fā)者來說,就不是這么一回事了。當(dāng)“敏捷”思想沒有得到充分應(yīng)用,只會(huì)給開發(fā)者帶來更多的干擾和更大的壓力,消耗他們的時(shí)間,讓他們感覺像是被鞭子抽著往前趕。這對(duì)開發(fā)者來說不是好事,而最終也會(huì)對(duì)企業(yè)不利,因?yàn)樵愀獾摹懊艚荨睂?shí)踐只會(huì)造成更多的缺陷和更緩慢的進(jìn)展。好的開發(fā)者通常會(huì)因?yàn)檫@個(gè)而離開企業(yè),而對(duì)于企業(yè)來說,“敏捷”比“不敏捷”更加糟糕。 我的想法來自 Kent Beck 十多年前說過的話——我希望這個(gè)世界對(duì)于開發(fā)者來說是安全的。我骨子里是個(gè)開發(fā)者,盡管做了多年的管理、咨詢和寫作工作。我?guī)缀趺恐芏紩?huì)寫代碼??吹健懊艚菪浴崩锼麚P(yáng)的想法并沒有讓開發(fā)者的生活變得更好,而是更糟糕,我感到很傷心。企業(yè)也沒能從“敏捷”中得到應(yīng)得的好處,我也感到很悲哀,不過我最關(guān)心的還是那些參與敏捷實(shí)踐的人。 多年來,我聽到很多開發(fā)者吐槽“敏捷”。我試著讓他們明白,其實(shí)是他們所在的企業(yè)沒有做好“敏捷”,他們沒有按照“敏捷宣言”作者和敏捷軟件開發(fā)專家說的那樣去做。我希望和我有同樣想法的人能夠救救自己,救救所在的企業(yè),真正理解“敏捷宣言”背后的想法,遠(yuǎn)離那些到處可見的偽敏捷和暗黑敏捷。 但事與愿違,一些“高級(jí)”的敏捷培訓(xùn)和認(rèn)證以及來自領(lǐng)導(dǎo)力方面的努力或許可以開花結(jié)果,但進(jìn)展緩慢,而且可能永遠(yuǎn)都觸及不到真正的開發(fā)者。 是時(shí)候嘗試一些新的東西了。 開發(fā)者會(huì)繼續(xù)在敏捷環(huán)境或使用 SAFe 框架的企業(yè)里工作。有些人甚至?xí)庥鲭[晦的“敏捷”方法,比如 DAO?;蛘呷绻銐蛐疫\(yùn)的話,他們會(huì)遇上更加開明的方法,比如“現(xiàn)代敏捷”或“敏捷之心”,有一些還可能從事極限編程。 話雖如此,我認(rèn)為開發(fā)者應(yīng)該拋棄任何與“敏捷”方法論相關(guān)的想法,而是把注意力放在那些在“敏捷”方法論之下行之有效的軟件開發(fā)方法上。這些開發(fā)方法包括了極限編程,當(dāng)然,不僅限于此。開發(fā)者的工作應(yīng)該遵循敏捷軟件開發(fā)的基本原則,正如我們?cè)谧珜懨艚菪詴r(shí)所想的那樣。我將這些想法總結(jié)如下: 無論管理層認(rèn)為他們?cè)趹?yīng)用什么樣的框架或方法,都要按以下這些方式展開:
對(duì)于開發(fā)團(tuán)隊(duì)來說,這是他們最有可能過上理想生活的方式。讓軟件保持就緒狀態(tài),我們就能夠以盡可能最好的結(jié)果應(yīng)對(duì)任何一個(gè)截止日期?!敖裉炀褪墙刂谷掌诹耍课覀円呀?jīng)準(zhǔn)備好了,可以交付了”。 隨著越來越接近截止日期,當(dāng)我們?cè)谏逃懡酉聛硪鍪裁磿r(shí),我們會(huì)將談話的重點(diǎn)放在接下來要做的最重要的事情上,而不是他們腦子里幾乎無窮無盡的想法。從“把所有東西都做出來”到“接下來要做這個(gè)”的思維轉(zhuǎn)變有點(diǎn)困難,但這是讓開發(fā)人員過上美好生活最佳時(shí)機(jī)。當(dāng)我們以協(xié)作的方式與領(lǐng)導(dǎo)者共事,而不是完全聽命于他們,就很有可能把這種焦點(diǎn)轉(zhuǎn)變過來。 通常,團(tuán)隊(duì)所使用的“敏捷”方法是被強(qiáng)加的。大規(guī)?!懊艚荨狈椒▽?shí)際上就是建議強(qiáng)加流程,包括所謂的“SAFe”、可伸縮 Scrum,等等。這些都是針對(duì)企業(yè)的,要求企業(yè)去“推行”它們。 作為一名開發(fā)人員,你可以肯定這種方式不會(huì)得到順利推行,也不會(huì)實(shí)現(xiàn)真正的敏捷。你可能接受不到培訓(xùn),在工作上也獲取不到必要的幫助。你的領(lǐng)導(dǎo)可能會(huì)接受培訓(xùn),一培訓(xùn)就是一兩周,他們?yōu)檫@些即將給產(chǎn)品和軟件開發(fā)帶來徹底改變的東西做足了準(zhǔn)備。但這條路可能有點(diǎn)難走。 不過,如果你能夠穩(wěn)定地在每一個(gè) Sprint 里把工作做好,把系統(tǒng)打包,運(yùn)行、測(cè)試、集成,然后等待發(fā)布,就有可能獲得最好的結(jié)果。 如果你做不到,我建議你還是在每一個(gè) Sprint 里少做一些事情,直到可以把這一階段內(nèi)的東西都做好。但這也很難!因?yàn)槿藗儠?huì)催促你,要你盡全力往前趕。頂著壓力超負(fù)荷運(yùn)作,還不如每次只完成一兩件事情,等把它們都做好了,再去做其他的,那么在 Sprint 結(jié)束的時(shí)候,你才有已經(jīng)完成的東西拿出手。坦然接受因?yàn)槲茨芡瓿伤惺虑槎馐艿闹肛?zé),試著讓計(jì)劃和期望更接近現(xiàn)實(shí)情況,而不是那些你永遠(yuǎn)都沒有機(jī)會(huì)去做的東西。 事情不會(huì)那么完美,而且在一段時(shí)間內(nèi),也不會(huì)那么有趣,但這是我所知道的最好的生存契機(jī)。完成可運(yùn)行的產(chǎn)品片段是扭轉(zhuǎn)局勢(shì)最好的方式。如果情況不妙,我們所能做的就是盡我們所能,讓事情盡可能好起來。 很顯然,在一家開明或者有持續(xù)學(xué)習(xí)意愿的企業(yè),很多東西都會(huì)對(duì)真正的敏捷持開放態(tài)度。生活會(huì)更美好,我也希望如此。 我經(jīng)歷過這些,我知道最好的方式是把工作做好,保持軟件的可見性,讓它運(yùn)行起來,進(jìn)行測(cè)試和集成,并幫助人們認(rèn)清現(xiàn)實(shí)。 敏捷宣言呼吁團(tuán)隊(duì)的“自我組織”能力,在最好的情況下,就是指團(tuán)隊(duì)可以選擇自己的流程。如果我自己創(chuàng)辦一家公司,我會(huì)讓團(tuán)隊(duì)自己選擇他們想要的流程。 當(dāng)然,還是有一些限制的,但這種限制不在乎他們的工作方式,而在乎我需要看到什么。我會(huì)告訴他們,最多每兩周我需要評(píng)審一下他們完成的產(chǎn)品片段。他們需要向我展示他們的計(jì)劃以及已經(jīng)完成的東西。產(chǎn)品片段必須是可運(yùn)行的,并且包含我能夠看到和理解的功能。我們會(huì)討論下一階段需要做哪些事情。我還會(huì)告訴他們,如果一周可以完成,就不要做兩周,如果一天可以完成,就不要做一周。 我會(huì)給他們提供幫助,讓對(duì)產(chǎn)品需求很了解的人幫助他們決定后續(xù)的工作。我會(huì)給他們提供培訓(xùn)和支持,幫助他們更好地完成工作。我會(huì)確保他們有能力去完成我所要求的事情。 當(dāng)然,我之所以這么做,是因?yàn)槲倚睦锖芮宄@些事情。你可能也會(huì)很幸運(yùn)地遇到類似的情況,至少,你可以選擇自己的流程。 如果你有機(jī)會(huì)做出選擇,我建議從極限編程開始。極限編程提供了必要的計(jì)劃和反饋閉環(huán),還提供了一些基本的技術(shù)實(shí)踐,這些技術(shù)實(shí)踐是你完成目標(biāo)所必需的。 另外,我建議你時(shí)刻對(duì)你的需要的東西保持警惕。在我看來,“ATDD、TDD 和重構(gòu)”這些東西正是你需要的。當(dāng)然,除了這些,你還需要其他很多東西。保持警惕,當(dāng)它們出現(xiàn)時(shí),抓住它們。 追求卓越的軟件開發(fā)是一項(xiàng)終生的活動(dòng),即使是極限編程也只觸及到表面而已。是否能夠走向卓越,這取決于你的團(tuán)隊(duì)。 除了極限編程(我們可以把它看成是一種思想而不是方法),我認(rèn)為開發(fā)人員不要拘泥于任何一種“敏捷”方法。正如這些方法在實(shí)際當(dāng)中所體現(xiàn)的那樣,它們通常是開發(fā)者的敵人,而不是朋友。 不過,敏捷宣言的價(jià)值和原則仍然是用來指導(dǎo)軟件開發(fā)的好方法。從我長久以來的經(jīng)驗(yàn)來看,無論企業(yè)使用了哪一種方法,我都會(huì)遵循敏捷宣言的價(jià)值和原則。 我把這些作為建議提出來,如果你覺得適合你,可以嘗試一下。 https:///articles/018-01ff/abandon-1/ |
|