起來。因此,要確保架構師參與到每天的實現(xiàn)過程中來。
架構是抽象的活動,但是架構需要具體的實現(xiàn)。如果架構與系統(tǒng)的具體實現(xiàn)方面脫節(jié)的話,架構是不容易被實現(xiàn)的。而這些會使架構師的所有好的工作失效。因此,架構師的觀點必須與實現(xiàn)融合。最簡單、最好的方式是讓架構師寫代碼。不應該很多 – 畢竟,架構師有很多其它的責任 – 但是必須足以讓架構師明白自己的實現(xiàn)環(huán)境。
架構和實現(xiàn)模式包括:
軟件項目必須是在不犧牲實用的深度和對實用性的注意的前提下放寬領導范圍。
雖然開發(fā)人員在單獨的設計和實現(xiàn)決定方面很在行,但是一個項目需要總體的、指導性的、策略性的、技術性的指引。指引通常來自架構師。然而,很多軟件架構師限于思考和對抽象概念的說明,而抽象是忽略無知的正式形式之一。
因此,除了建議、指導和與開發(fā)人員溝通外,架構師還應該參與到實現(xiàn)中來。
架構師應該有組織地參與到開發(fā)中來并編寫代碼。架構師可能與一個開發(fā)人員一起實現(xiàn)某個模塊,通過結對編程的開發(fā)方式。
(7)代碼擁有者模式
如果你需要在角色中內建對代碼的責任以及領域知識,那么給大家以代碼的整體質量的責任。
以所擁有的為驕傲會導致更高的質量。這在軟件開發(fā)中也是成立的。在專注于質量的組織,人們對所負責的系統(tǒng)而自豪。實際上,大部分軟件對于一個專家來說太大了,因此對代碼的擁有分布于員工之間。作為代碼的擁有者,你對代碼非常了解,能幫助別人理解它,并最終對它的質量負責。當然,你不需要管理所有附加的代碼或對代碼的修改;事實上,這通常是大家不愿意的。但是你是確保這些代碼不會引起重大系統(tǒng)問題的人。
代碼責任制與其它領域的責任制是一樣的。在我們搬家的時候,我的妻子緊緊地盯著搬運工打包她的精致的瓷器。為了緩解她的神經(jīng),搬運工對她承諾她的瓷器會完好無損地到達新家。為了證明他對安全打包的責任,他封好箱子后,清楚地在上面簽上他的名字以保證不會損壞。就像你能想象到的,那些瓷器完好無損地到達了新家。
代碼擁有模式可以解讀為:
如果那是每個人的責任,那么結果是每個人都不會負責。
不是每個人在任何時候都知道所有的東西。即使是架構師也不能熟練地清楚項目的所有方方面面。
因此,系統(tǒng)的每一個模塊都由其中一位開發(fā)人員擁有。
注意擁有意味著對質量的責任以及對這個模塊的整體架構設計,從而鼓勵擁有者要獲得對模塊的深入理解。
(8)質量:在于意識的改變
這些是我們在組織中看到的一些能產(chǎn)生高質量軟件的模式。還有其他的模式。
也許你已經(jīng)在你的組織中看到這些模式的核心價值。希望你的組織僅僅擁戴質量而不僅僅是口頭上贊成。文化的元素 – 組織中的角色、溝通、儀式、傳統(tǒng)、語言 – 會給你一些線索。
大部分組織支持改進和改變,而改進是健康組織的組成部分。但是重大的、動搖核心價值的改變通常是不成功的。大部分核心文化的改變包括艱難的價值轉移。這通常需要長期的或者遇到危機導致對價值的深深反省才能成功。如果你的組織是這樣的,那么要做好失敗的準備。
但是不要失望。有些企業(yè)使用有組織性的模式和有組織的學習來形成文化的轉變。從小的開始;不要嘗試一下子改變太多東西。所有這些價值之間的影響可以是豐富的和復雜的。經(jīng)過一段時間,你會學到什么是有效的什么是無效的。當面對價值和文化時,質量只是很多價值驅動因素之一。如果你改變你自己的角色、溝通或儀式,改變會在其他的價值方面得到反映。畢竟,沒有什么價值是孤立的。