想做架構師應該怎麼學習?

在一家外企工作了兩年開發(目前還在這家公司),公司做的是智能交通相關。平台有win ce平台(現已停用)和安卓平台。自己獨立開發過幾個小項目,有個項目是給公司的硬體部門寫配置工具,因為硬體一直在更新,所以軟體也跟著更新,維護了1年左右,感覺有些設計不合理,現在在做東西時,會去想需求後面的意圖。會去試著去抽象,不過還是不會面向對象編程。只能說現在是面向介面編程,希望能獲得一些指導。感激不盡!!


架構師有多種,系統架構師,軟體架構師

一個好的IT系統架構師是怎樣的?

一個好的IT架構師,眼光不會僅僅停留在寫代碼的層次上,在做開發的時間裡,他們會積極學習各種知識,經驗,培養自己的商業頭腦,包括擴展自己各方面的資源,這些積累會為他們未來成為管理者或創業打下牢固的基礎。

【工作職責】

  企業的IT架構師首先不僅是一個技術專家,同時也是一個業務專家.有比較豐富的項目實施經驗,能夠結合企業的實際情況指導軟體工程師進行開發工作,發現並指出編碼存在的問題並提出解決方法,評審他們的工作;及時有效地解決設計、開發人員所提出的問題,解決技術上的難題;制訂並規範系統設計和開發文檔、工具、模型;能否讓其他人員容易理解;經常組織並帶領IT人員或項目組分享、研究、學習與項目相關的新技術;在碰到技術難點上,IT架構師應該起帶頭作用重點攻關,評估並確認最終方案,確保IT項目的實施不受技術約束。

【開發經驗&技術能力】

  企業的IT架構架構師首先必須具有豐富的開發經驗。因為他必須清楚什麼是可以實現的,實現的方式有哪些,相應的難度怎麼樣,實現出來的系統面對需求變化的適應性等一系列指標。另外,需要對面向過程、面向對象、面向服務等設計理念有深刻的理解,可以快速的察覺出實現中的問題並提出相應的改進方案,並對相應的技術問題或項目方案的難易點有較強的評估能力和預見性.這些都需要長期的開發實踐,並結合企業自身特有的業務實踐才能真正的體會到,單從書本上很難領會到,就算當時理解了也不一定能融會到實踐中去。豐富的開發實踐經驗有助於避免架構師紙上談兵式的高來高去,給代碼編寫人員和項目組成員帶來實實在在的可行性。同時,在企業對相應的成熟解決方案進行選型的時候,IT架構師應該有一定的決策權或發言權,因為IT架構可以根據自己所掌握的技術能力,結合在企業的業務實踐,提了一些比較切實的評估結論,可以減少CIO有IT解決方案要選型決策的風險,在一些較為重視IT架構師的崗位的企業,IT架構師會參與企業幾乎所有IT方案或IT項目的選型和評估過程,並結合相應的技術指標和需求對方案進行評估對比,扮演比較重要的角色.

【業務知識&商業頭腦】

  具有足夠的行業業務知識和商業頭腦也是很重要的。行業業務知識的足夠把握可以給IT架構師更多的擁抱變化的能力,IT架構師的知識領域應該是比較寬廣的,不會受編程語言的約束,往往在可以在系統設計或項目方案的時候留出一些擴展的餘地來適應可能來臨的需求變化。有經驗的設計人員可能都碰到過這樣的事,一廂情願的保留介面在需求變化中的命中率非常低。也就是說,在系統設計之初為擴展性留下來的系統介面沒能在需求變化的洪流中發揮真正的作用,因為需求的變化並沒有按照預想的方向進行,到最後還是不得不為變化的業務重新設計系統。這就是因為對業務知識的理解和對市場或者業務的判斷沒有達到可以提供一個實用的、可以轉換為可實現的IT方案水平。一個好的IT架構師,能將業務用戶需求轉換為IT可實現的方案,並能讓用戶最終接受和認可,並由此樹立自己的影響力.當然,這不僅僅是幾句話就可以表現出來,需要架構師在背後做比較多的功課,這也客觀要求架構的業務知識涉獵廣,能夠移花接木,應用到IT項目或企業的IT規劃中去.

  大部分IT架構師給人的印象是專註於技術方面,實則情況恰好相反.由於IT架構師一般涉獵知識範圍廣,而且對新生事物或新的IT技術有一種出於職業的敏感性,IT架構師實際上是最喜歡嘗鮮的一族,聰明的架構師會充分利用新生事物或新技術的前瞻性,結合自知所掌握的IT技能,在不影響企業利益的基礎上,嘗試將自己的能力和影響力擴大化, 有生意頭腦的IT架構師甚至能直接把掌握的IT技能變現.當然,絕大部分這樣的IT架構師都比較低調,不會輕易地在企業內部透露自己的真實商業想法或在做的事情.實際上,現在熱得發燙的移動互聯網的創業道路上,就能看到許許多多曾經在企業任職IT架構師,一轉眼就單幹的創業者的身影.

【溝通能力個性特徵】

  大部分IT架構師的項目經驗都比較豐富,經歷過大型項目的磨鍊,對項目整體的把控能力都比較強.優秀的系統架構師要擁有優秀的溝通能力,用以進行說服、鼓勵和指導等活動,並贏得項目組成員、IT團隊、包括業務部門的用戶信任。一個系統架構師設計出一個良好的方案後,如果不能跟項目組成員或實施顧問進行有效的溝通,不能跟業務部門用戶進行良好的溝通,讓用戶理解相應的方案,不能對程序員進行良好的指導,則這個良好的框架就不能很好的貫徹到IT項目實施的每個環節中去。IT系統架構師,一定要有自信,既不要保守,也不要人云亦云,不會迷信於廠商吹得天花亂墜的方案介紹和銷售顧問的不考慮後果的胡亂承諾,對相應的IT解決方案都可以比較有把握地提出自己鮮明的觀點和方案.大多數IT架構師的個性比較突出和鮮明,會根據自己所掌握的技術或業務能力,旗幟鮮明地闡述自己的觀點,有時甚至不會太顧忌上下領導關係,廠商面子,比較客觀地把方案的問題或風險暴露無遺.這是架構師的優點,也可以說是架構師的缺點,處理不好的話會讓自己陷入困境之中,甚至丟掉飯碗.同時,大部分IT架構師在做決策或方案時,不太喜歡別人指手劃腳,這也或多或少跟其高度自信的特徵有關.同樣,好的IT架構師對自己的錯誤敢於承認,不會找太多的借口為自己辯護,這點也是IT架構師比較受認可且必須的一項職業素養指標.

【角色地位】

  「冰凍三尺,非一日之寒」,優秀的IT架構師除了要有很深的專業技能外,還需技術全面、成熟練達、洞察力強、經驗豐富,具備戰略性和前瞻性思維能力,善於把握全局,能夠在更高抽象級別上進行思考。

  最重要的是,好的IT架構師能夠協助CIO對企業的IT戰略及IT架構進行整體規劃(業務架構 數據架構 應用架構 技術架構),成為CIO工作方面的強有力的助手,一個好的IT架構師能頂半個CIO,可以在IT技術和業務結合方面給CIO提供決策支持.在國外,一個合格的系統架構師的薪水甚至比部門經理或產品經理要高很多,這也是國外為什麼三四十歲甚至五十歲的程序員也很常見的原因之一。在國內,一般來說,一個好的架構師至少要在一個企業工作4-5年,才可以做到比較全面地從技術和業務兩方面結合,在企業的IT項目中發揮作用,並越來越成熟,越來越有實戰經驗,在IT部門的重要程度也隨之上升,成為企業IT部門一筆看不見的財富.


1、向開源社區貢獻代碼。比如我曾向Zend Framework等比較大的項目提交過代碼,通過接觸這些優秀項目的開發者,了解他們解決問題的方法會讓人受益終身。

2、 在StackOverflow上回答問題。我的方式可能更有針對性,比如在做ZF2相關開發時,就只回答ZF2相關問題,直至刷到一個獎牌,這對短期內掌握了解某個技術非常有幫助。

3、翻譯圖書。目前我已經翻譯出版了《自製編程語言》和《遊戲開發的物理和數學》等書,在翻譯過程中會對個人的知識體系起到很好地整理和鞏固作用。

4、堅持更新博客。很多圈子裡的朋友雖然不認識我但是都認識我的Blog。堅持將自己的經驗和知識整理為博客,一方面可以幫助到很多初學者讓他們少走彎路,另一方面對自己也是極好的鍛煉。


雖然我現在不是個什麼架構師,但是我想說的是,少說多做吧,只要不笨肯花時間,循序漸進就一定能夠達到自己想要的高度。


先別琢磨什麼模式什麼框架的,先能做到本行業的業務專家再說。

知道銷售怎麼賣你的產品,知道企業怎麼掙錢,知道用戶怎麼用你的產品,比你琢磨什麼面向對象管用。


從題主的問題來看,現在困擾你的應該還只是開發中如何滿足業務及將來的易擴展的問題。

別著急,先踏實做幾年,同時在實際工作中多一些宏觀的思考,你會慢慢摸到架構師的門檻。


這個圖應該能幫到你一些。 工作中的經驗積累和學習是很重要的。


架構師是一個充滿挑戰的職業,知識面的寬窄往往決定著一個架構師的架構能力,所以在這一點上我比較贊成你的學習方式,就是要閱讀大量的技術書籍,但我希望你不要僅限於軟體相關的書籍,經常泡技術論壇,一方面可以結交朋友,一方面可以增加自己的知識面。

公司的大小往往決定了所做的項目規模,一般的大項目不太可能直接總包給小公司去做,但這並不妨礙小公司可以分包到大項目的一部分。在做小項目的同時也可以積累豐富的經驗,我自己就是一個這樣的例子。

我在小公司混跡了5年多,其中也偶爾有1兩個大公司,比如景安網路,但是基本上都是小公司,從基層的程序要到公司的開發總監都做過,甚至自己還設計過包括LED顯示屏,密碼鍵盤在內的收費系統,自己聯繫廠家OEM,當然這些今天已經廣泛應用了,當時我們的客戶用上之後還是非常震撼的。

知識面的寬廣對於一名出色的架構師來說是必不可少的技能,也許很多人對架構的理解還停留在設計模式,重構,SOA等等的軟體層面,然而這僅僅是非常基本的東西,架構師的腦子裡不光需要知道讓軟體如何高效的運行,還需要知道如何去結合網路,存儲,甚至一些文件系統的特性,比如GFS,NFS,XFS,NTFS等等,而且架構師還需要知道一些編程語言的特性,C,C++,Java,PHP,Python,Lisp,JS等等,現在是一個混合編程的時代,只了解一種語言,即使再精通也會使你在架構系統的時候受到很大的局限性。

再有一點,架構師需要對資料庫技術有深刻的認識,因為現今是一個信息時代,大量的信息都是需要存儲並檢索的,資料庫設計的不好,將會嚴重影響系統的性能,而這一點往往會被我們的設計人員忽略,他們只知道遵守那些範式而不會結合數據的特性去設計資料庫。

看你的編程情況,你好像做PHP開發比較多,PHP比較適合B/S結構的應用開發,這會限制一個架構師的思路,我建議你再學習一門適合做C/S開發的語言,拓寬自己的視野。

從一個程序員到架構師是一個很大的變化,架構師需要從大的方面考慮,而不只是考慮這個模塊該用哪種設計模式去開發。不能急於求成,也許是我自己變化的比較慢,我用了10年的時間,這10年里,我使用超過一年的編程語言包括了delphi,C++,Java,python,使用的資料庫包括了oracle,infomix,sybase,sqlserver,mysql,javadb,sqlite等等,使用過大型機,小型機,伺服器。unix,linux,windows都至少做過兩年以上的開發,這些使用和開發的經歷會大大增強一個人在做架構師這個職業時的技術素養。

總之,想要成為架構師,需要有耐心,不斷學習,拓寬自己的視野,不僅僅局限於自己眼前的項目,關注開源技術,關注熱門技術社區的新動向。


推薦閱讀:

如何成為一名Android架構師?
什麼是控制系統、機器人系統架構師乃至總工程師所需的大局觀?
常見的網站伺服器架構有哪些?

TAG:架構師 | 系統架構 |