聊聊架構--讀後感
為什麽會產生架構?
什麽是架構?軟件架構?
什麽是架構師?軟件架構師?
對於這些問題,不知道有多少人思考過,至少我以前沒有細想過。現在一談起“架構”,就覺得它是一個很高大上的東西。在讀完這本書後,你會發現原來它無處不在,只是很普通,時常發生的一種事而已。
讓我們來看看作者對這些問題的見解:
1、為什麽會產生架構?
在這個問題上,作者首先闡述了一個概念“生命周期”:
簡單說明,生命周期就是事物,從開始到結束、從生到死的過程。萬事萬物都有生命周期。
生命周期包含各種活動,活動的推進是生命周期的必要因素。
生命周期裏面的活動拆分後,形成若幹新的生命周期。
拆分後主體不變的是核心生命周期,變化了的是非核心生命周期。
生命周期拆分以後,因為非核心生命周期的主體已經發生變化。
主體便可以將這些非核心生命周期分配給其他主體代為執行。這樣,生命周期從時間連續的執行變成了空間上並行,時間上串行的連續活動。
在說明了生命周期一後,作者進一步說明的促成架構產生的原因:
生命無常,雖然每個人個體的生命周期無法按自我意願進行延長。但是,通過提高自身的能力以獲得更多成就,產生對社會更多的貢獻,這是另一種層面的生命的延伸。
按特點進行分工以後,生產力得到了提升。相對的人的生命得到了一定的延長。實際上按特長進行分工便形成了人類社會的架構。
從人類發展的歷史過程看,人類從原始社會單獨獵取事物到現在社會各展所長的發展過程,本質上都是為了讓自身在有限的生命中獲取更多的物質追求。
所以,人類追求利益是推動架構產生的根本,這確實是一個很給力的說法。
2、什麽是架構?軟件架構?
架構的思考來源於對生命周期的識別,以及對生命周期的拆分。架構是為了業務而服務,讓業務更加高效,讓業務更健壯,讓業務更服務於更多的人。
軟件架構就是通過對軟件生命周期的拆分,在符合業務架構的前提下,以達到軟件本身訪問增長目的的方式。
軟件架構離不開軟件開發團隊的組織架構,這個組織架構是軟件開發生命周期和軟件運行生命周期的執行者。
3、什麽是架構師?軟件架構師?
人人都是架構師。在生活當中每個人或多或少的都在進行著業務的架構劃分。比如,桌面的擺放,軟件的順序,到達某個點的路線。在閱讀本書的過程後,從霧裏看花,身在此山中的感覺中走了出來。發現架構無處不在,不管是夫妻之間,同事之間,朋友之間。根據不同的主體進行分析,了解他的主要問題所在,或者溝通的要點。將會給生活、工作帶來莫大的幫助。
軟件架構師需要去拆分生命周期,並要形成組織架構去落實架構執行,而且要平衡別人的利益,甚至去調整別人的利益。
對於軟件的開發生命周期和軟件的運行生命周期,軟件架構師必須要具備權力去調整。這一點要求軟件架構師必須是一個軟件團隊組織領導者的身份。
要想做好架構師的工作,就要向大自然學習,這樣才能夠認識到事物本身的生命周期,並能夠去順應事物自身的生命周期的規律來進行拆分,以達到增長的目的。
架構師很冷靜、很平等地對待所以的技術,只選用合適的技術。技術人員喜歡熱衷於某種技術,對其他技術嗤之以鼻
架構師是技術的使用者。技術本身沒有好壞,因時因地而已
架構師拆分生命周期,技術人員實現生命周期。這就是為什麽架構師需要有組織架構的權力,因為要確保架構拆分的落地。
技術是架構師手中的工具,當沒有合適的技術時,架構師回去創造技術,或者催生出新的技術。
通過作者對3類問題的闡述,我們可以看出,他所描述的架構、架構師都別開生面,與我們平常說的有所不同。
作者認為架構的目的是為了實現某種業務,以達到讓業務更加高效、健壯,讓業務更服務於更多的人。而技術是架構的工具。架構師應該因地制宜的合理使用。
為了實現架構,架構師應該深入了解業務,然後對業務進行拆分以完成架構設計,然後再對組織架構進行相對的調整,合理分配管理相關人去實現架構。
這樣的思路,看起來確實合情合理,軟件架構設計是一個人的世界觀、價值觀的體現,別人是否會完全認同一個軟件架構師的設計呢?(不用想,肯定有人會不認同) 那麽,要想讓設計成為現實,就需要足夠的權力去落實。
在這裏需要提出幾個問題:
1、一個軟件開發團隊到底需要什麽樣的領導呢?
個人認為,人世間不外乎四種人:擅長做人的人,擅長做事的人,兩者都擅長的人,兩者都不擅長的人。不過這只是一種粗略的分法,人是一種很動態的生物,用確定的指標是無法描述清楚的,只是各有所長罷了。
就目前我所看過的書中,基本都認為“擅長做人的人更適合做領導”。用道理上來說,我也是這麽認為的,只要用好形形色色有本事的人,又有什麽做不好呢?
不過,現實中為什麽軟件開發團隊總是是出現把軟件做得不合適的情況呢?這只能說明,這種軟件開發團隊的領導並不是真正的“擅長做人的人”。
那到底什麽樣的人才是真正“擅長做人的人”?好人?壞人?擅長交際的人?幽默的人?邏輯性強的人?思維縝密的人?
這是一個沒有確定答案的問題,每個人都有自己的見解,什麽樣的人都有可能性。因為這個世間的老板就是形形色色的,他們就是領導者的代表。(從結果導向逆向分析是個不錯的思路)
2、如果你是一個軟件團隊的領導,但你不擅長架構應該怎麽辦呢?
其實在上面已經回答了這個問題,要麽你有能力讓自己變得擅長架構,要麽去思考怎麽樣做一個真正“擅長做人的人”。
第一種辦法,不用分析了,你自己辦到了誰都攔不了你。
第二種辦法,說白了就是找一個人擅長架構的人,讓他去為自己做好架構。這種方式可以認為是放權管理。其實這是管理的最高境界,因為尺度很難把握,所以不容易做到。
3、如果讓一個擅長架構的人去做團隊的領導,會不會有什麽問題?
其實在軟件行業,這樣的情況很多,好多團隊的領導者都是優秀的工程師一步一步升上來的。有的人呢,最後會把團隊管理的很好,其實這種人是在逐步學習“擅長做人”的本事,學有所成後最後轉變成了 “擅長做人的人”或“兩者都擅長的人”。還有一部分,團隊會被管的烏煙瘴氣。所以,世事無絕對,人類的可塑性是非常強的。只有最終的結果才能說明一切。
架構的實施是需要權力的,這是一個事實。現實中,高層期望軟件開發團隊的領導就是那個架構師。不過似乎總是事與願違。 在IT行業,有很多的架構師,大家都認為架構師應該是某方面技術能力很強的那種人。其實這種人只能說是某方面的技術專家,而架構師應該是那些擅長將業務用適當的技術實現出來的人。
這就要求:第一、他們要弄明白業務,這一點在工作中其實是由產品經理去協助完成的,對於大多開發人員來說都不會太難;第二、他們要設計架構、選用技術方案把業務實現用來。往往差距就出現在了這裏。
我們經常會遇到,有人選擇了一個很新潮,或很復雜的技術實現了一個業務需求;或者是實現方案設計的不合理,造成有漏洞或者實現成本很高,浪費了很多的時間。
那我們究竟應該怎麽樣去選擇合適的技術,怎麽樣去設計方案呢? 我個人認為應該這樣去思考:
1、利益才是選擇的根本依據,我們選擇一種新技術到底會給我們帶來什麽樣的收益?收益是否大於代價?
2、對於架構設計,我覺得可以想簡單一點。想象一個書架,如果把所有書亂七八糟的擺放,是不是會很難找到一本書?所以需要我們分門別類的去擺放書籍。 如果我們做了一個分類“科學”,這個分類的書有幾百本,是不是又會很難找到一本書?這時就需要去把分類更加細化。 如果我們分出了幾百個分類,是不是又會比較難找一本書呢?這時就需要產生大分類去管理小分類。 生活中的好多事物的管理都是如此,軟件雖然比較虛擬,但是道理是一樣的。把項目拆分成合理的大小,把代碼規整的擺放好就是架構設計。 開發管理軟件的目的就像管理書架中的一本書一樣,現在不過變成了一段虛擬的代碼而已。
本文出自 “風之痕_雪虎” 博客,請務必保留此出處http://snowtiger.blog.51cto.com/12931578/1947385
聊聊架構--讀後感