A. 如何成為一個架構師
1、技術能力
技術能力,不用置疑肯定是最重要的。技術能力弱的架構不是一個好架構。所以,你需要知道所有主流技術的基本原理、應用場景,及快速解決問題的能力。所以,架構師必須要有見識,所需知識面肯定是要不斷拓展的。
你需要清楚在什麼樣的場景用什麼樣的技術比較合適,並知道可能存在什麼樣的風險。來了需求,你腦袋是空的,不知道用什麼技術這是最可怕的。
2、架構能力
這個可以表現為抽象能力、整體規劃能力、及設計能力。你需要照在業務的角度進行系統分解、技術選型、架構搭建,以及規范制定。架構出來了至少可以滿足最近的發展,或者可以很方便對現有架構進行擴容。
3、溝通能力
作為一個優秀的架構師,你需要清楚的知道客戶的需求,需要不斷和需求人員進行溝通,以達到客戶真正的目的。不論是不是架構師,任何一個職場人,提高自己的溝通表達能力無疑是不可或缺的。
系統架構師的主要功能包括:
1、系統架構師是軟體項目的總體設計師,是軟體組織新產品的開發與集成、新技術體系的構建者。
2、系統架構師是在技術上對所有重要事情做出決定的人(系統架構師在整個軟體開發過程中都起著重要作用,並隨著開發進程的推進而其職責或關注點不斷地變化)。
3、需求階段,軟體架構師負責理解和管理非功能性系統需求,比如軟體的可維護性、性能、復用性、可靠性、有效性和可測試性等。
4、設計階段,架構師負責對整個軟體架構、關鍵構件、介面的設計。協助系統分析師完成《系統概要設計說明書》。
5、編碼階段,架構師則成為程序員的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等。
6、測試及實施階段,隨著軟體開始測試、集成和交付,集成和測試支持將成為軟體架構師的工作重點。
B. 工作幾年很迷茫對架構師毫無概念,架構師離你到底還有多遠
小團隊一般 10 人左右,其中常常是技術最牛的人做架構師(或TL)。所以,架構師在廣大碼農中的佔比大概平均不到 10%。而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。
所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢?
1:碼農分為真的能寫代碼的,以及自認為能寫代碼的。
2:真的能寫代碼的碼農又分為自認為寫的不錯的,以及真的還不錯的。
3:真的能寫不錯代碼的碼農又分為會鑽研會不斷優化的,以及安於現狀的。
4:會鑽研的碼農又分為喜歡廣度了解新技術蜻蜓點水的,以及深入鑽研用到知識的。了解廣度的碼農又有少部分願意深入某些技術,喜歡深入研究的又往往缺乏廣度知識。
6:為業務而技術的深度廣度都了解的碼農,又需要有良好的溝通能力。
7:而溝通好的,又有一部分當PM去了。
8:然後剩下的,又有一部分慢慢脫離實際開發(不再做任何實現)或者開始依靠拿各種中間件搭積木來作為「架構」手段。
9:除去這些,剩下對業務有一定了解,對技術廣度上有多種涉獵,深度上對部分技術研究徹底,還有很重要的一點,考慮問題足夠細致全面。
10:細致全面善於溝通,技術上深度廣度都沒問題, 又喜歡這個工作,還會不時做底層實現,從業務和開發兩個角度出發,搭出「架構」來是為了開發效率,為了運行效率,為了開發質量,為了業務靈活和運行穩定,為了維護方便等等這樣的人,個人認為可以稱為「架構師」。
而真能滿足這種需求的,別說10%的比例,1%能不能達到我也持懷疑態度。其實現在的「架構師」大多數都停留在8這個層次,甚至很多在5這個層次就當上title上的架構師了。
總之,成為架構師,不僅僅是工作上的簡單積累,更需要主動接納工作外的大量知識,同時,對性格上對於非技術能力上也有一定的要求,不僅如此連思維方式都很重要,要不斷找准自己定位,不斷思考 如何搭建架構師知識體系 ?
大部分程序員都會「寫」代碼,或者至少會抄代碼和改代碼。但是,會讀代碼的並不在多數,會讀代碼又真正讀懂一些大項目的源碼的,少之又少。因為它是兩個原因造成的:
1:我們所有的教育和培訓都在強調怎麼寫代碼,並沒有教大家如何讀代碼
2:大多數工作場景都是一個蘿卜一個坑,我們只需要了解一個系統的局部便能開展工作,讀不相乾的代碼,似乎沒用
所以,要養成源碼三問的習慣:
「為什麼要有這樣的架構」
「他是什麼樣子的」
「他是怎麼工作的」
二、為什麼是分布式?
首先需要說明的是,分布式系統是一個復雜且寬泛的研究領域,學習一兩門在線課程,看一兩本書可能都是不能完全覆蓋其所有內容的。
三、微服務為什麼會這么火?
相信大家都了解業務越來越復雜,服務分層,微服務架構是架構升級的必由之路,而對於微服務的優點相信大家都不陌生。
比如:易於開發與維護 / 微服務相對小,易於理解 / 啟動時間短,開發效率高 / 獨立部署 / 伸縮性強 / 每個服務都可以在橫向和縱向上擴展 / 微服務架構可以更好將架構和組織相匹配 / 每個團隊獨立負責某些服務,獲得更高的生產力 / 降低嘗試新技術的成本......
四、到底要不要學習JVM?
總有人問這個東西好像用不上,於是要不要學這樣的問題,然後又總有人擔心一直搬磚成天做些重復沒提升的東西。
如果你這輩子只甘心做一個平庸的Java碼農,那麼你完全沒有必要去學習JVM相關的知識。
五、被我們忽略掉的工程化
在IT產業中,寡頭化出現代表著創業公司減少--沒人再去用聲勢浩大的發布會講故事、沒人再去宣傳自己拿了多少融資。
這一代中國人自小的教育不比歐美的STEAM,而是重學術、輕手藝。我們往往會為工科和產能過剩畫上等號。強大的資本和技術門檻為這些產業蒙上了一層神秘的面紗,讓普通人很難真正了解到其中技術和工藝的復雜程度,也就更難明白其中的價值。可正是因為中國的工程化能力,才讓我們有機會走到AI時代的第一梯隊,而不僅僅是靠學術研究能力。
六、沒有高並發經驗,想進大公司該怎麼辦?
假如沒有靠譜的公司,接觸不到高並發的業務場景怎麼辦?你永遠解決的是小問題,工作10年技術也未必提升多少。
很多程序員也經常找我說,沒有經驗就沒有靠譜的公司收,沒有靠譜的公司也就沒有經驗,我看了無數的書,自己做了無數的實驗拚命想找個靠譜公司去深入,但是感覺好難,簡直是個死循環
七、學習千遍,不如項目實戰成功一次
有人說:項目實戰相信很多程序員都多少會有的,可是我們這個還要學習什麼呢?
我的回答是:那就要看你想不想成為一個架構師了,為什麼98%的程序員工作10年,一輩子還只是一個開發者,程序員們都要想一想這個問題,我是不是需要提升了。
我認為,學習項目實戰最重要的還是學習項目管理,作為程序員,都應該學點項目管理。
凡事皆為「項目」項目的兩類屬性(復雜的邏輯,龐大的信息量)
這才是我們學習「項目實戰」的終極意義。
現在作為程序員的你,或許想提升自己,卻找不到突破口,公司沒人帶。又或許你已經工作6年了,卻還是很迷茫,很多知識都還是不懂,也沒有達到自己期望的一個職位,薪資。
相信大家,在學習的路上也遇到了不少的坑,有人放棄,有人堅持,但是我相信作為程序員的你不會想終其一生也只是一個開發,到年齡就會被公司辭退。
所以,大家如果想往技術路上走的,想成為架構師的,一定要保持終生學習的態度,讓學習力成為核心競爭力,才能不被時代所淘汰,這里我也分享自己收集的系統的學習資料,和幾套學習路徑圖給大家,真心的希望能幫助到大家。
C. 程序員幾年能夠成為架構師
五年以上。
它們往往要求工作年限在5年以上,需要求職者有過3年以上的系統設計經驗,精通各種架構模式和系統框架,反觀自己卻一個條件都不滿足。
軟體架構師就是這么一個讓人嚮往,但又讓人望洋興嘆的一個職位。就像建築設計師總有成為總設計師的夢想,航天工作者總有成為總工程師的壯志,相信每一個軟體工程師都有過成為軟體架構師的想法。
引用維基網路里的定義,軟體架構師的職責就是在軟體系統研發中,負責依據需求來確定主要的技術選擇、設計系統的主體框架結構,並負責搭建實施。
普通程序員可以利用搜索引擎(網路)尋找答案,經常性找不到好的解決辦法,然後更換技術方案,頂級程序員也利用搜索引擎(Google)尋找答案,一般bug都順利解決(其實跟前期框架選擇等關系非常大)。
演算法是程序員的重中之重,掌握演算法能力才能處理復雜環境,才能對系統做出性能調優,遇到性能瓶頸之後才不會束手無策。
表達能力決定了你所做的技術的影響范圍,決定了你的影響力,決定你的威信,決定了你的報酬。普通程序員和頂尖程序員的表達能力差別非常大,這主要還是取決於他們格局的不同。良好的溝通能力讓你理解產品經理的設計思路,讓你更好的展現自己的特長。
D. 程序員如何才能晉升為優秀的高薪架構師
晉升為優秀的高高興框架是程序員在工作的時候,一定要認真的工作,努力的學習,而且還要進一步的去深造自己,把自己的各項工作做的更好,這樣才能夠呃,今生為優秀的高興框架時,我以後的呃學習和工作更加有前途展望。
E. IT程序員如何成為架構師
關注范圍:程序員專注於具體細節,而架構師專注於「宏觀視角」。
領導關系:程序員處於被領導地位,架構師則扮演領導角色。
資歷背景:架構師的從業時間一般比程序員更長。
氣質特性:架構師是重要的夢想家,而程序員則是面向繁瑣任務的實干者
技術取向:架構師做出選擇,而程序員提供選項。
技能:架構師的技能水平高於程序員。
代碼:架構師需要編寫之代碼平均少於開發人員。
組織互動:架構師所參與之「業務」會議數量遠多於程序員。
薪酬:架構師薪酬水平高於程序員。
自身價值:架構師的價值要高於程序員。
F. 程序員進階:怎麼成為一個軟體架構師
軟體架構師是軟體行業中一種新興職業,工作職責是在一個軟體項目開發過程中,將客戶的需求轉換為規范的開發計劃及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計劃。主導系統全局分析設計和實施、負責軟體構架和關鍵技術決策的人員。
⑴確定軟體架構師在軟體組織中的職責和充當的角色,確定其相應的必須具備的知識體系,確定軟體架構師的職業及其相關制度,制定軟體架構師的培養目標和培養方案。
⑵堅持以大學教育為主(特別是各軟體學院在這方面可以大施身手),以項目實踐為輔的教育方針。大學可以聘請現有的軟體架構師擔任核心課程的講師,通過學校教育,系統學習軟體架構師所必需的知識體系;通過項目實踐使其具有初步的軟體開發和設計經驗,逐步成長為一名合格的軟體架構師。
⑶作位第2條的補充,聘請現有的軟體架構師,個人認為適合以講座的形式在學校開展。
⑷對國外一些大公司的軟體架構師的培訓和認證予以支持,但是在認證的過程中必須堅持符合中國實際情況的原則。例如,在認證考試之前對考生的知識體系進行系統的測試和評估,在通過認證後的適當時間內進行重新認證和繼續教育。
⑸建立完善的軟體架構師教育和認證制度,使得通過認證的人員能夠在實際的軟體開發中成為稱職的和優秀的軟體架構師。並通過此制度能夠為國家培養出更多、更優秀的軟體架構師,解決當前軟體架構師急缺問題。。
G. 程序員怎樣才能晉升高薪架構師
對於工作多年的程序員而言,職業生涯的發展有三條出路:專精技術、轉型管理和晉升架構師。
網路,系統架構師是一個既需要掌控整體又需要洞悉局部瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物。
架構師工作職能
軟體架構師在整個軟體開發過程中都起著重要的作用,並隨著開發進程的推進而其職責或關注點不斷地變化,在需求階段,軟體架構師主要負責理解和管理非功能性系統需求,比如軟體的可維護性、性能、復用性、可靠性、有效性和可測試性等等,此外,架構師還要經常審查客戶及市場人員所提出的需求,確認開發團隊所提出的設計;在需求越來越明確後,架構師的關注點開始轉移到組織開發團隊成員和開發過程定義上;在軟體設計階段,架構師負責對整個軟體體系結構、關鍵構件、介面和開發政策的設計;在編碼階段,架構師則成為詳細設計者和代碼編寫者的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等;隨著軟體開始測試、集成和交付,集成和測試支持將成為軟體架構師的工作重點;在軟體維護開始時,軟體架構師就開始為下一版本的產品是否應該增加新的功能模塊進行決策。
成為架構師所需要具備那些技能?
所謂架構師,思考的是全局的東西,是如何組織你的系統,以達到業務要求,性能要求,具備可擴展性(scalability),可拓展性(extendability),前後兼容性等。可能涉及到的東西包括了從硬體到軟體的方方面面,實在是一言難盡。
架構師該如何學習
成為架構師條件根據自己經驗列舉幾點
1.喜歡技術,這個是必備條件
2.技術方面要有一個單點突破點,別會很多技術都是個大概七,架構師都玩的很精不現實,精力有限。說自己各方面都很牛的偽架構師幾率大
3.學習能力強,交流能力強,大局觀強,三強能讓你不落伍,不至於吃老本,技術更新太快,別安於現狀
以上我的回答希望對你有所幫助
H. 如何從普通程序員晉升為架構師
程序員晉升架構師的十項必備技能
1、卓越的程序員 Fred George先生說:「不編程的架構師的職業生涯是短暫的」。他說這句話的背景主要是針對有些架構師的設計與實現有斷層的問題而言的,因為如果架構師不去 實踐,只是想當然的認為「沒問題,這個想法能實現」,那麼對於項目的落實而言是個很大的隱患。支付寶架構師馮大輝也表示過,架構師是一個比較「虛」的崗 位,主要的問題都在「落地」的過程中。--ITJOB--
2、抽象思維 很多優秀的架構師們都一致的表示,邏輯思維和抽象思維能力是一個架構師最重要的素質。eBay的 Randy Shoup先生稱擁有條理清晰的邏輯思維能力的人「就像稀有動物那樣難找」。Fred George則表示「駕馭概念的技能,在我看來是每一個人最高的潛力」,並表示自己不太介意這樣一個苗子在其他方面的技能和經驗的匱乏,因為在他看來除了 思維之外的其他因素都是可以培養的。 --ITJOB--
3、技術前瞻性 有人談到技術高手與架構師的區別就在於,架構師不光是著眼於現在,不僅僅局限於開發細節,比如如何調用,如何並發等等。而是跳出三界外,考慮一下面向未來問題和潛在風險的應對之道。--ITJOB--
4、問題解決大師 只是,架構師之所以為架構師,是在於他們在面對龐大系統之時,仍然能夠敏銳的發現其底層之真實。這不僅需要此哲學層面的「內功」,還需要架構師具有多領域知識和經驗的積淀。--ITJOB--
5、多領域知識 架構師身為一名技術領袖,需要通過發散知識的光芒來統御開發團隊的。如果只是對本行業知識做到爛熟於心,那還僅僅是一名熟練工的水平。要想晉升更高的層次,還需要跳出「只緣身在此山中」的困惑。--ITJOB--
6、溝通能力 做到人性化的溝通,需要我們在平時就進行培養。寫出大部頭的架構書,有的時候並沒有用VISIO畫出的簡單架構圖好理解。人對圖形理解遠遠大於對文字的理解,直觀簡單的UML圖可以極大的方便程序員理解架構師的意圖。--ITJOB--
7、內力 很多人理解的內力就是開發技術,包括語言的掌握、對框架的掌握、資料庫管理能力、安全管理能力等等。但是我們看到,架構更多的內力體現在對技術的綜合運用上,光會編程的程序員,最多就能做到高級程序員,也就是技術實現上的高手。 --ITJOB--
8、權衡取捨 Fred George先生提出了「短期濫用」的說法,即在系統能夠承受的范圍內做出一些妥協。在ATAM方法中,分析的思路是基於「情景」的:你需要提出各種可能 的情景,然後來證明在每一個用戶使用場景中,系統的哪一些內容是必要的、不可丟棄的——從而確定哪些部分是暫時可以不予考慮的。--ITJOB--
9、管控能力 架構師在管理和控制的能力上,需要有自己獨到的見解,而不是簡單的認為這是項目經理或者財務部門 的事情。身為技術專家的架構師,隨不需要處理那些煩雜的日常管理。奇虎架構師李釗在一次接受采訪時道出過架構師們的心聲,技術人才轉向管理就是莫大的浪 費。對,如果架構師只是一味的去進行項目管理,那就和其他市場人員沒有任何區別了。在這里架構師所需要的管理與控制,其實是從技術的角度,對一些問題的控 制,特別是開發過程中的監控,而不是普通意義上的純粹管理。--ITJOB--
10、藝術氣質 一個優美的系統則是可以像有機的生命一樣成長的,這是因為從系統開始架構的那一刻起,架構師就考 慮到這個系統以後將會面臨的挑戰,為系統的成長預留好空間。項目經理經常會對這位架構師提出的看似理想化的要求不置可否——項目經理只想著能夠盡快以比較 低的成本實現客戶的需求,然而這些充滿藝術美感的想法其實是打造健康——因而優美——的系統的根本因素。--ITJOB--
I. 程序員怎麼快速成為架構師
1、卓越的程序員有些架構師的設計與實現會出現斷層的問題,如果架構師不去實踐,只是想當然的認為「沒問題,這個想法能實現」,那麼對於項目的落實而言是個很大的隱患。2、抽象思維很多優秀的架構師們都一致的表示,邏輯思維和抽象思維能力是一個架構師最重要的素質。3、技術前瞻性架構師不光要著眼於現在,不僅僅局限於開發細節。而是跳出三界外,考慮面向未來問題和潛在風險的應對之道。4、問題解決大師架構師因為具有多領域知識和經驗的積淀,所以在面對龐大系統之時,仍然能夠敏銳的發現其底層之真實。5、多領域知識架構師身為一名技術領袖,需要通過發散知識的光芒來統御開發團隊。6、溝通能力7、內力很多人理解的內力就是開發技術,包括語言的掌握、對框架的掌握、資料庫管理能力、安全管理能力等等。但是我們看到,架構更多的內力體現在對技術的綜合運用上,光會編程的程序員,最多就能做到高級程序員,也就是技術實現上的高手。8、權衡取捨9、管控能力架構師在管理和控制的能力上,需要有自己獨到的見解,而不是簡單的認為這是項目經理或者財務部門的事情。在這里架構師所需要的管理與控制,其實是從技術的角度,對一些問題的控制,特別是開發過程中的監控,而不是普通意義上的純粹管理。10、藝術氣質一個優美的系統則是可以像有機的生命一樣成長的,這是因為從系統開始架構的那一刻起,架構師就考慮到這個系統以後將會面臨的挑戰,為系統的成長預留好空間。