時間:2017-04-24 來源:互聯網 瀏覽量:
架構師是個很神聖的詞。蓋茨,世界首富。微軟,世界最大最富有的軟件公司。蓋茨是微軟的首席架構師。好多程序員流口水,一聽某人是架構師,就兩眼發亮,比技術總監的頭銜還要厲害。
第一階段是新手期
新手時期的程序員對需求和應用環境的掌控能力還不強,但卻往往信心爆棚地認為自己寫的代碼有多麼優雅高效。當問題出現時,大多數人的反應就是:“怎麼可能!在我的機器上運行的好好的!”。不管看了多少書,學習了多麼高效的算法,實際的工作中需求和環境始終是變化萬端的。其實我也很不明白為什麼那麼多的技術類書籍往往都帶有或多或少的炒作成份,往往誇大某方麵的優勢,而對缺點卻往往一帶而過,同時,相對思想算法講解、技術介紹類的書籍,針對具體項目研發實例進行技術選型講解的書真的少之又少,或許這也從側麵反應了寫書人很多,真正做研究的卻很少吧。
第二階段是中級程序員階段
這個階段的程序員對技術、和工具的選擇已經審慎了很多,可以根據具體的需求來選擇需要采用的技術,可以寫出詳細的需求調研報告並提出設計方案,優點、缺點分析得清晰明了。在應用層麵也有較強的全局理解力,在團隊中也具有相當的協作能力,因此具備較強的解決問題的能力。
第三階段是高級程序員/分析師/架構師階段
進入這個階段的前提是多年的工作經驗,廣闊的知識麵和對係統底層到高層的全麵認識,已經使其進入了無語言無工具的層次。也就是能任何清楚地感知每種編程語言的優劣、使用範圍、編碼禁忌,對一個大型工程能有最全麵的了解,在選擇語言和確定技術方案的時候不會被自己對語言或技術工具的偏好(或者根本已經無所偏好)所影響,真正明白了其實別管是神馬語言、神馬技術,歸根到底咱們的對象還不是CPU、內存、硬盤和網絡,該做的事情一件都不能少,所謂的技術框架是對初級程序員用的,真正高級了不研究個清楚透徹都不敢讓你進來。即使對同一種語言,在不同的操作係統中,如Visual C++和Unix C、AIX XLC、GNU G++等等的區別,以及不同版本之間的區別也了如指掌。
那麼現在究竟該做些什麼呢?
1、主動思考、實踐
保持對架構的好奇心,主動思考一些問題,比如微博的更新是推還是拉,雙11的秒殺是如何實現的。抱著問題去看書,查資料會有更深的了解。平時應該看一些一線互聯網公司的架構實踐,如有必要,可構建類似的業務場景,在本地試驗。
2、擔當與抽象思維
在一個項目裏麵,最有可能成為架構師的技術人員,通常是那個最有擔當的人。一個技術難題擺在大家麵前的時候,誰都不會,但是這個人主動承擔下來,不僅讓領導認可你的態度,一旦你經常挑戰你不會的東西,並且挑戰成功,就會形成良性循環,以後就會形成這樣的共識,再難的問題交給你也能搞定,因為你已經具備了這樣的直覺和經驗。看看身邊有沒有這樣的人,這個人其實已經有架構師的潛質了,所以說,要做為架構師一定要讓自己不舒服,要經常挑戰對自己有難度的技術和知識,而不是固守著已經熟悉的領域。
3、架構的本質是打造骨架結構
架構這個詞最早出自建築,其在建築行業中的重要性不言而喻。但來到軟件行業,很多人會覺得重要性沒那麼顯著了,甚至對架構師這個職稱的必要性都有所懷疑。其實出現這個疑問不難理解,因為現在很多架構師已經不再是做技術、業務架構相關的事情了,更偏向於管理協調、團隊組織這些事情,其實包括前段時間一直爭吵的CTO該不該寫代碼,也是個類似問題:某個職稱的本職工作是什麼?
架構師本質上還是要為係統建立鋼混架構,概念模型、數據模型、係統上下遊、技術棧、部署設計、MVP,這些都是架構師的職責。尤其是數據模型和MVP,這是很多架構師不太去做的,但卻是鋼混架構中的鋼筋水泥,奠定了下限,也注定了上限。
4、方法論都是特定場景下的沉澱
做架構設計的方法也不少,關鍵是活學活用,比如4+1,比如togaf,還有DDD,ADMEMS這些。但是無論哪個方法論,都是有其特定的上下文場景的,跳出這個場景,也許就不如其他的合適了,比如DDD,非常適合有著複雜的分層架構與職責劃分,對於複用性要求也很高的係統設計,如果隻是簡單的CRUD,那DDD反而不合適了。
所以切勿硬搬方法論,就像以前我們會習慣性的硬搬設計模式一樣,多總結,找到適合自己、適合團隊、適合平台的一套方法來做設計,同時切勿把架構設計純粹做成設計,空談誤國,如何落地才是最重要的,這是架構師在方法論的基礎上最需要注意的。
還有一些講架構的書籍,其實大家也可以多關注,比如《架構之美》,《架構即未來》,《微服務設計》,《領域驅動設計》。
我和大牛之間有多少距離?
跟很多人一樣,剛畢業時我覺得作為程序員,隻要努力,加上少許天賦便可以獲得一些成績。
工作一段時間後,對自己和其他人的認識也越來越清晰,逐漸的發現程序員之間的差距或許比人和猴子之間的差距還大,接受這個事實這讓我鬱悶了很久。
再過一段時間,發現自己已經能夠客觀的評價自己的能力,也意識到了距離並不是那麼重要,隻要想辦法跑的更快,就足夠了。
另外還有一點可以通過自身的學習來獲取一大進步。
分享給超過5萬的程序員朋友下載,這次我把所有幹貨重新梳理精簡,免費分享給大家 。
究竟有哪些幹貨呢?先給你們一個目錄:
免費領取資料,查看We Chat “程序員精選”。
程序員工作十年總結了:學習新技術的8個建議