假設(shè)您必須向應(yīng)用程序添加新的主要功能。那么將此功能添加到仍在建設(shè)中?還是但尚未投入生產(chǎn)的相對(duì)較小的應(yīng)用程序中?還是將其添加到總體質(zhì)量值得懷疑的,隨著時(shí)間推移而增長(zhǎng)的大型項(xiàng)目應(yīng)用程序中是否更容易?毫無(wú)疑問,第二項(xiàng)更具挑戰(zhàn)性的任務(wù)。但是為什么我們通常會(huì)找到最有經(jīng)驗(yàn)的開發(fā)人員,即軟件工程師,即很酷的人,而大多數(shù)人則參與其中,而其他人則常常被埋葬在第二項(xiàng)中?
多年前
很多年前,當(dāng)我進(jìn)入負(fù)責(zé)大型公司的核心系統(tǒng)之一的開發(fā)團(tuán)隊(duì)時(shí),我擔(dān)任的第一職位是負(fù)責(zé)遺留部件的應(yīng)用程序維護(hù)(AM)團(tuán)隊(duì)。原因很簡(jiǎn)單,也很共同:我是新來的,使用經(jīng)驗(yàn)很少的前沿技術(shù),新項(xiàng)目正在快速運(yùn)行。AM將是我成長(zhǎng)的正確場(chǎng)所,而沒有太多壓力。
一旦我積累了足夠的知識(shí)和經(jīng)驗(yàn),我就會(huì)轉(zhuǎn)到項(xiàng)目團(tuán)隊(duì),使用新技術(shù)開發(fā)新功能的團(tuán)隊(duì),好人團(tuán)隊(duì)。大約一年后,這種情況實(shí)際上發(fā)生了,但是我永遠(yuǎn)不會(huì)忘記AM那個(gè)據(jù)說不太那么緊張的時(shí)期。
項(xiàng)目團(tuán)隊(duì)和AM團(tuán)隊(duì)
所有這些都是很多年前的,但是從那以后,我看到了無(wú)數(shù)次重復(fù)的相同模式,常常以更為極端的形式出現(xiàn)。您有一個(gè)新的計(jì)劃,從項(xiàng)目團(tuán)隊(duì)開始。項(xiàng)目團(tuán)隊(duì)開發(fā)體系結(jié)構(gòu),項(xiàng)目團(tuán)隊(duì)開發(fā)功能,項(xiàng)目團(tuán)隊(duì)針對(duì)非常樂觀的初始計(jì)劃積累延遲,項(xiàng)目團(tuán)隊(duì)開始額外工作,項(xiàng)目團(tuán)隊(duì)開始偷工減料。
質(zhì)量常常被犧牲在計(jì)劃的祭壇上,測(cè)試被遺忘,補(bǔ)丁被添加到補(bǔ)丁之上。開發(fā)人員開始添加評(píng)論“待我們有一段時(shí)間后將其重構(gòu)”。技術(shù)債務(wù)已經(jīng)存在,其命運(yùn)還在增長(zhǎng)。
最終,該產(chǎn)品投入生產(chǎn),然后,在上線之后,項(xiàng)目團(tuán)隊(duì)立即開始向AM團(tuán)隊(duì)過渡。經(jīng)過一段時(shí)間的重疊后,AM團(tuán)隊(duì)將獨(dú)自航行。AM團(tuán)隊(duì)通常比項(xiàng)目團(tuán)隊(duì)年輕,經(jīng)驗(yàn)不足且實(shí)力不足。困難的部分結(jié)束了,該項(xiàng)目已經(jīng)啟動(dòng)。現(xiàn)在是AM時(shí)間,它變得更容易,它的成本也更低,我們可以負(fù)擔(dān)一個(gè)新的初級(jí)團(tuán)隊(duì)。
上線一年后
這是一年的緊張工作。錯(cuò)誤已得到修復(fù),小事情已更改,小事情已添加。該系統(tǒng)最終已準(zhǔn)備就緒,可以承受實(shí)際的生產(chǎn)負(fù)荷,并且代碼庫(kù)已經(jīng)擴(kuò)展。此時(shí),AM團(tuán)隊(duì)收到了添加新的重要功能的請(qǐng)求。
我們回到了最初的問題。現(xiàn)在添加新功能是否更容易,還是在“項(xiàng)目”模式下添加新功能更容易?
答案很明確:AM團(tuán)隊(duì)的任務(wù)要困難得多。的確,AM團(tuán)隊(duì)會(huì)隨著時(shí)間的推移而積累經(jīng)驗(yàn),但是與此同時(shí),AM團(tuán)隊(duì)需要大量接觸不太穩(wěn)定的代碼庫(kù),需要避免在沒有適當(dāng)?shù)臏y(cè)試安全網(wǎng)的情況下引入回歸,需要設(shè)計(jì)一種在不造成中斷的情況下部署新的主要版本的方法。
AM團(tuán)隊(duì)通常比項(xiàng)目團(tuán)隊(duì)面臨更艱巨的工作。為什么,如果AM團(tuán)隊(duì)的任務(wù)更加艱巨,那么所有很酷的人都在項(xiàng)目團(tuán)隊(duì)中,而現(xiàn)在又在其他地方,可能還有其他很棒的事情嗎?
可能的答案:項(xiàng)目團(tuán)隊(duì)需要奠定正確的基礎(chǔ)
聘請(qǐng)最有經(jīng)驗(yàn)的人來啟動(dòng)項(xiàng)目的原因之一是,一開始,我們需要為將來的事情打下基礎(chǔ)。我們需要定義架構(gòu),并對(duì)解決方案的設(shè)計(jì)做出一些基本決定,因此需要正確的經(jīng)驗(yàn)。
但是,與此同時(shí),在項(xiàng)目開始時(shí),通常我們對(duì)所要解決的問題的了解有限。在任何重要的項(xiàng)目開始時(shí),都有許多已知的未知數(shù),也有許多未知的未知數(shù)。因此,必須始終將系統(tǒng)的體系結(jié)構(gòu)視為可演化的,并且我們需要意識(shí)到,許多關(guān)鍵的決定不能在一開始就做出,而必須在未知因素開始暴露時(shí)做出。
在項(xiàng)目開始時(shí)就將架構(gòu)決策視為一勞永逸的決策通常是一種幻想。在軟件系統(tǒng)生命周期中的任何時(shí)候都可能出現(xiàn)關(guān)鍵的體系結(jié)構(gòu)問題。在項(xiàng)目開始時(shí)做出的關(guān)鍵體系結(jié)構(gòu)決策可能必須稍后進(jìn)行大修,這可能是因?yàn)橛行碌男枨螅赡苁且驗(yàn)槌霈F(xiàn)了新技術(shù),例如Cloud,也許是因?yàn)樗鼈冎皇墙鉀Q問題的錯(cuò)誤方法。
所以是的,的確如此,項(xiàng)目團(tuán)隊(duì)必須做出架構(gòu)決策,但AM團(tuán)隊(duì)也必須做出架構(gòu)決策,并且必須在更加復(fù)雜的環(huán)境中做出決策。
您根本無(wú)法做到相反
在中期,雖然強(qiáng)大的項(xiàng)目團(tuán)隊(duì)的經(jīng)典模式隨后是一支更初級(jí)的AM團(tuán)隊(duì)并不是最有效的方法,但相反的方法也無(wú)法解決問題。我們無(wú)法想象有一個(gè)初級(jí)團(tuán)隊(duì)來啟動(dòng)一個(gè)項(xiàng)目,然后將其過渡到一個(gè)更高級(jí)別的團(tuán)隊(duì)進(jìn)行維護(hù),這顯然不是一種選擇。
潛意識(shí)的情況
也許更多的高級(jí)人員使用新的炫酷技術(shù)來啟動(dòng)新項(xiàng)目的一個(gè)深刻原因是,他們喜歡用新的炫酷技術(shù)來開始新事物,然后隨著時(shí)間的流逝,當(dāng)工作似乎變得越來越重復(fù)時(shí),他們只是想應(yīng)對(duì)其他挑戰(zhàn)。
這有利于他們的技術(shù)好奇心,也有利于他們的履歷表。但這可能對(duì)他們正在構(gòu)建的軟件系統(tǒng)的長(zhǎng)期健康不利。
從項(xiàng)目團(tuán)隊(duì)到產(chǎn)品團(tuán)隊(duì)
2006年,亞馬遜的Werner Vogels首席技術(shù)官創(chuàng)造了著名的“您制造,運(yùn)行”的座右銘,傳達(dá)了這樣一個(gè)想法,即負(fù)責(zé)產(chǎn)品的團(tuán)隊(duì)需要從產(chǎn)品開始到運(yùn)行階段都對(duì)其進(jìn)行服務(wù)。運(yùn)營(yíng)方面以及演進(jìn)方面。簡(jiǎn)而言之,同一團(tuán)隊(duì)負(fù)責(zé)產(chǎn)品成功所需的所有階段:設(shè)計(jì),構(gòu)建,運(yùn)行,發(fā)展。
如今,越來越多的人開始認(rèn)為需要從以項(xiàng)目為導(dǎo)向的組織工作方式轉(zhuǎn)變?yōu)橐援a(chǎn)品為導(dǎo)向的模型。這是一個(gè)復(fù)雜的轉(zhuǎn)變,涉及組織的許多方面,但是對(duì)于我們?cè)谶@里進(jìn)行辯論的主題,這無(wú)疑意味著放棄將項(xiàng)目和AM團(tuán)隊(duì)分開的想法,而創(chuàng)建更穩(wěn)定的產(chǎn)品團(tuán)隊(duì)。
產(chǎn)品團(tuán)隊(duì)需要由經(jīng)驗(yàn)豐富的人,很酷的人以及需要成長(zhǎng)的初級(jí)人才的合適組合。大三學(xué)生與帥哥一起工作,逐漸變得很酷。這樣就可以在不影響團(tuán)隊(duì)質(zhì)量的情況下控制輪換。
在我們生活的時(shí)代,數(shù)字時(shí)代,當(dāng)我們聽到諸如“當(dāng)項(xiàng)目結(jié)束時(shí)我們將過渡到AM”之類的消息時(shí),我們必須變得可疑。
這并不是說AM不再有空間。仍然有一些舊的舊系統(tǒng),通常為后勤部門服務(wù),它們的工作非常糟糕,非常穩(wěn)定,只需要一些維護(hù)即可。
但是,在開發(fā)新的差異化數(shù)字功能時(shí),我們需要遠(yuǎn)離AM模型,而要采用面向產(chǎn)品的模型,該模型的設(shè)計(jì)團(tuán)隊(duì)不僅要負(fù)責(zé)構(gòu)建產(chǎn)品的第一個(gè)版本,還要負(fù)責(zé)運(yùn)行它。 從中進(jìn)行學(xué)習(xí),并隨著時(shí)間的推移進(jìn)行改進(jìn),以確保它與最終用戶仍然相關(guān)。更多關(guān)于項(xiàng)目管理的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。