修正組織的功能障礙
- 編輯:admin -在上面的引言部分,我們提到,JAD是個(gè)跨部]的流程。在存在功能障礙的組織中,實(shí)施JAD1會(huì)很有難度,但對(duì)治療這種功能障礙來(lái)說(shuō),JAD卻是絕對(duì)必要的。工程師和運(yùn)營(yíng)人員相互不信任的情況,在大多數(shù)公司都存在。團(tuán)隊(duì)之間互不信任,甚至互相憎恨,這種情形雖然可悲,卻很常見。在我們找出解決這種功能障礙問(wèn)題的辦法,開始通過(guò)團(tuán)隊(duì)合作構(gòu)建可擴(kuò)展的應(yīng)用之前,我們需要理解,為什么會(huì)存在這種問(wèn)題。
在上面的引言部分,我們提到,JAD是個(gè)跨部]的流程。在存在功能障礙的組織中,實(shí)施JAD1會(huì)很有難度,但對(duì)治療這種功能障礙來(lái)說(shuō),JAD卻是絕對(duì)必要的。工程師和運(yùn)營(yíng)人員相互不信任的情況,在大多數(shù)公司都存在。團(tuán)隊(duì)之間互不信任,甚至互相憎恨,這種情形雖然可悲,卻很常見。在我們找出解決這種功能障礙問(wèn)題的辦法,開始通過(guò)團(tuán)隊(duì)合作構(gòu)建可擴(kuò)展的應(yīng)用之前,我們需要理解,為什么會(huì)存在這種問(wèn)題。在大多數(shù)軟件開發(fā)組織中,不難找到一個(gè)工程師,他會(huì)覺(jué)得架構(gòu)師、運(yùn)營(yíng)人員、數(shù)據(jù)庫(kù)管理員、系統(tǒng)管理員和網(wǎng)絡(luò)工程師要么就是不懂編碼,要么就是沒(méi)有完全理解軟件開發(fā)流程。另外方的不信任也很常見,即運(yùn)營(yíng)人員或架構(gòu)師覺(jué)得軟件開發(fā)工程師只懂得編碼,不懂高端的設(shè)計(jì)或整體系統(tǒng)的概念。更糟的是,他們互相覺(jué)得對(duì)方的工作與他們自己的目標(biāo)是直接對(duì)立的。你常常會(huì)聽到運(yùn)營(yíng)人員小聲抱怨,“如果軟件開發(fā)人員停止在服務(wù)器上發(fā)布代碼,他們就會(huì)保持服務(wù)器一直是運(yùn)行的”,而軟件開發(fā)人員則會(huì)小聲地反擊,“如果不是運(yùn)營(yíng)人員讓他們遵守那些愚蠢的規(guī)章制度,他們就能開發(fā)和調(diào)試得更快”。這些想法和疑慮對(duì)應(yīng)用和組織的可擴(kuò)展性來(lái)說(shuō),打擊都是毀滅性的。它們也表明,不僅存在于業(yè)務(wù)部和技術(shù)團(tuán)隊(duì)之間,也很容易出現(xiàn)在技術(shù)團(tuán)隊(duì)內(nèi)部。

對(duì)于經(jīng)驗(yàn)的鴻溝,我們?cè)?jīng)指出,兩個(gè)團(tuán)隊(duì)之間教育和經(jīng)驗(yàn)的差別會(huì)給溝通造成破壞性干擾。軟件開發(fā)人員和系統(tǒng)管理員在大學(xué)中接受的正規(guī)教育可能非常相似,例如都是計(jì)算機(jī)科學(xué)專業(yè),
也可能有很大不同,例如個(gè)是計(jì)算機(jī)科學(xué) 專業(yè)而另一個(gè)是計(jì)算機(jī)工程學(xué)專業(yè)。 真正使兩者開始出現(xiàn)較大不同的是在職教育。系統(tǒng)管理員或數(shù)據(jù)庫(kù)管理員前幾年通常會(huì)得到高級(jí)管理員的指導(dǎo),直到他們精通某項(xiàng)技術(shù)為止,這樣會(huì)提高他們?cè)谀莻€(gè)領(lǐng)域中的專業(yè)性。軟件開發(fā)工程師的職業(yè)路徑相似,只是關(guān)注的是軟件開發(fā)語(yǔ)言。至于應(yīng)用在哪臺(tái)服務(wù)器上運(yùn)行、應(yīng)用調(diào)用的是哪個(gè)數(shù)據(jù)庫(kù),對(duì)于軟件開發(fā)工程師而言都是最不關(guān)心的部分,這樣他們才能專注于功能的開發(fā)。
一旦兩個(gè)團(tuán)隊(duì)在一開始就存在經(jīng)驗(yàn)的鴻溝,那么當(dāng)我們?cè)黾恿瞬煌哪繕?biāo),有時(shí)甚至是相反的目標(biāo)時(shí),他們就會(huì)漸行漸遠(yuǎn),以致看不到任何共同點(diǎn)。在大多數(shù)組織中,團(tuán)隊(duì)之間并沒(méi)有共同的目標(biāo)。如果本意是想讓團(tuán)隊(duì)一起合作,而不是讓他們彼此爭(zhēng)斗,那么這就是問(wèn)題所在。運(yùn)營(yíng)團(tuán)隊(duì)的責(zé)任通常是保證站點(diǎn)的正常運(yùn)行時(shí)間或者可用性,任何停機(jī)時(shí)間都會(huì)使他們的獎(jiǎng)金減少。而開發(fā)團(tuán)隊(duì)的目標(biāo)通常是交付新功能,錯(cuò)過(guò)了交付日期就會(huì)使他們的獎(jiǎng)金減少。在CTO看來(lái),所有的目標(biāo)都會(huì)被分配給各個(gè)團(tuán)隊(duì)來(lái)處理,各司其職,無(wú)所疏漏。但現(xiàn)實(shí)是,像這樣劃分目標(biāo),事實(shí)上會(huì)引發(fā)團(tuán)隊(duì)之間的沖突。
開發(fā)團(tuán)隊(duì)交付新功能的目標(biāo)會(huì)促使他們想盡快完成編碼,如果出現(xiàn)故障了,他們認(rèn)為自己可以隨時(shí)修復(fù)代碼。這是迄今為止實(shí)現(xiàn)代碼的初次交付最快的方式,而交付時(shí)間通常也是唯一的衡量標(biāo)準(zhǔn)。但長(zhǎng)期來(lái)看,這種方法實(shí)際上花費(fèi)的時(shí)間更多,因?yàn)榘l(fā)現(xiàn)問(wèn)題、修復(fù)問(wèn)題以及重新部署代碼修復(fù)這一-問(wèn)題的過(guò)程會(huì)花費(fèi)很多時(shí)間。但正如前面我們提到的,這種交付后的時(shí)間,通常不會(huì)被計(jì)算在內(nèi),因此不會(huì)出現(xiàn)在交付目標(biāo)中。
根據(jù)運(yùn)營(yíng)團(tuán)隊(duì)的目標(biāo),他們想要的是保持站點(diǎn)正常運(yùn)行,提高可用性。這就會(huì)促使運(yùn)營(yíng)團(tuán)隊(duì)拒絕生產(chǎn)環(huán)境的變更,因?yàn)樽兏窃斐蓡?wèn)題的主要原因。他們認(rèn)為向生產(chǎn)環(huán)境發(fā)布的代碼越少或者做的變更越少,團(tuán)隊(duì)就越有可能實(shí)現(xiàn)目標(biāo)。不論他們是否意識(shí)到,運(yùn)營(yíng)團(tuán)隊(duì)突然間變得不怎么愿意讓代碼發(fā)布到生產(chǎn)環(huán)境了,事實(shí)上他們甚至還會(huì)開始查找系統(tǒng)變慢的原因。
現(xiàn)在你應(yīng)該明白了,你有兩個(gè)或多個(gè)團(tuán)隊(duì),雖然他們各自對(duì)系統(tǒng)和架構(gòu)的一般原理有著深刻認(rèn)識(shí),并對(duì)你的系統(tǒng)有具體了解,但他們就是本能地互相討厭對(duì)方,很不愿意協(xié)同合作。那么如何解決這個(gè)問(wèn)題呢? JAD流程是個(gè)很好的人手點(diǎn)。正如我們將在下一節(jié)中討論的,JAD是個(gè)合作流程,它會(huì)用一個(gè)共同的目標(biāo)把各個(gè)部門的團(tuán)隊(duì)成員拉到一起。JAD團(tuán)隊(duì)要么一起成功, 要么一-起失敗,對(duì)此在它的組織和領(lǐng)導(dǎo)團(tuán)隊(duì)上就能體現(xiàn)出來(lái)。
JAD的基本網(wǎng)站建設(shè)思路是,一個(gè)重要功能不能只分配給軟件開發(fā)工程師,還要分配給個(gè)架構(gòu)師以及至少一個(gè)運(yùn)營(yíng)工程師(數(shù)據(jù)庫(kù)管理員、系統(tǒng)管理員或網(wǎng)絡(luò)工程師),可選的還包含產(chǎn)品經(jīng)理、項(xiàng)目經(jīng)理和質(zhì)量保證工程師,這可以根據(jù)該功能的需要而定。這個(gè)團(tuán)隊(duì)的職責(zé)是根據(jù)組織已有的架構(gòu)設(shè)計(jì)原則提出一個(gè)設(shè)計(jì),這個(gè)設(shè)計(jì)要使系統(tǒng)能夠持續(xù)地?cái)U(kuò)展,使這個(gè)功能能夠滿足產(chǎn)品的要求,并且還要能夠通過(guò)ARB的審查。這個(gè)團(tuán)隊(duì)中的成員最終要向ARB陳述這個(gè)設(shè)計(jì),它是由這個(gè)團(tuán)隊(duì)的同級(jí)人員和經(jīng)理構(gòu)成的,它將決定這個(gè)設(shè)計(jì)是否滿足標(biāo)準(zhǔn)。幸運(yùn)的是,這種合作不會(huì)僅止于設(shè)計(jì),由于這些人都已經(jīng)和這個(gè)功能密切關(guān)聯(lián)在一起了,所以在這個(gè)功能的整個(gè)生命周期中,他們都會(huì)積極地關(guān)注它,確保它是成功的。這樣軟件開發(fā)工程師要對(duì)設(shè)計(jì)以及它在生產(chǎn)環(huán)境中的表現(xiàn)負(fù)責(zé),數(shù)據(jù)庫(kù)管理員則要負(fù)責(zé)這個(gè)功能的設(shè)計(jì)不僅是可擴(kuò)展的,還要能夠滿足業(yè)務(wù)需求。如此這般,我們就用一個(gè)共同的目標(biāo),讓軟件開發(fā)人員、架構(gòu)師和運(yùn)營(yíng)人員一起協(xié)同工作了。
