導航:首頁 > 程序命令 > 一個程序員到架構師的經歷

一個程序員到架構師的經歷

發布時間:2023-03-09 02:47:47

『壹』 從程序員到架構師要經歷哪些階段

架構師是什麼?
架構師這詞其實很有意思,很多人的Title是這個,但其實我們對架構師都干什麼並沒有太統一的認識。往大了說,比爾蓋茨當年好像也稱自己為架構師,往小了說隨便一個小的軟體上做設計的也說自己是架構師。所以如果把這個詞泛化而不局限於特定的場景,估計單是說清楚什麼是架構師就要花費不少口水。下面我們用一個取巧的辦法,在一個具體的場景下來看看,架構師都該干什麼,而不把這個詞泛化,如果在特定場景下這個角色應該干什麼清楚了,那它就可以為其它場景下提供不錯的參考。
我們只考慮從頭開發一款產品的場景,不考慮這款產品可能是個家族,可能需要在公司里與許多東西配合這樣繁瑣的事情。這樣問題就簡化成:當我們要開發一款新產品的時候,架構師都要幹些什麼?為讓事情更具體,我們進一步假設公司想做一個Trello,Worktile這樣的協同辦公工具。
在產品初期除了UI這類東西,還能明確的一些關鍵需求大概是這樣:

簡單、迅速,追求極致的用戶體驗,這時也許能想到看板這樣的功能
打入社交元素(任務分配與溝通時打入信息流的機制)
移動端支持
公司判斷:如果產品能在1年內上線,時機比較好

其他的需求呢就是感覺上肯定有,但暫時說不清楚
基於這樣的簡單提示,長做程序的可能腦子里會立刻冒出來無數東西,比如:

快的確保?
看板里拖動的實現?
SaaS時伸縮性的確保?
資料庫中表的設計?
資料庫類型的選擇?
移動端的支持方式?
人員的現狀?
迭代式開發的支持?
... ...

但顯然不是每個事情都要在架構設計階段搞定,否則等於是被弄蒙了,這時候架構師的一個關鍵職責就是要能區分出哪些東西預先需要搞定,而哪些東西則要在迭代過程中解決。
一般來講重置成本越大,牽涉的人越多的事情越應該由架構師預先搞定,否則就容易做無用功,對開發工作產生致命傷害。具體來講這類事情由三個核心部分組成:

選定Tech Stack
概要設計,確立分工的基礎
協同方式

下面來分別解釋下這三個方面的具體含義。
選定Tech Stack是指要選定包括編程語言,基本框架等一系列東西,比如Trello選完之後大致是下面這個樣子:
http://www.csdn.net/article/2014-07-28/2820883

『貳』 程序員進階:怎麼成為一個軟體架構師

軟體架構師是軟體行業中一種新興職業,工作職責是在一個軟體項目開發過程中,將客戶的需求轉換為規范的開發計劃及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計劃。主導系統全局分析設計和實施、負責軟體構架和關鍵技術決策的人員。
⑴確定軟體架構師在軟體組織中的職責和充當的角色,確定其相應的必須具備的知識體系,確定軟體架構師的職業及其相關制度,制定軟體架構師的培養目標和培養方案。
⑵堅持以大學教育為主(特別是各軟體學院在這方面可以大施身手),以項目實踐為輔的教育方針。大學可以聘請現有的軟體架構師擔任核心課程的講師,通過學校教育,系統學習軟體架構師所必需的知識體系;通過項目實踐使其具有初步的軟體開發和設計經驗,逐步成長為一名合格的軟體架構師。
⑶作位第2條的補充,聘請現有的軟體架構師,個人認為適合以講座的形式在學校開展。
⑷對國外一些大公司的軟體架構師的培訓和認證予以支持,但是在認證的過程中必須堅持符合中國實際情況的原則。例如,在認證考試之前對考生的知識體系進行系統的測試和評估,在通過認證後的適當時間內進行重新認證和繼續教育。
⑸建立完善的軟體架構師教育和認證制度,使得通過認證的人員能夠在實際的軟體開發中成為稱職的和優秀的軟體架構師。並通過此制度能夠為國家培養出更多、更優秀的軟體架構師,解決當前軟體架構師急缺問題。。

『叄』 如何從程序員走向架構師

如何從程序員走向架構師。首先,作為程序員,必須熟練使用各種框架,了解其實際安裝的原理、jvm虛擬機原理,雲南昆明電腦培訓認為了解jvm能夠讓您編寫性能更好的代碼。


技術歸納

熟悉tcp協議,為了創建三握手連接和斷開四次握手的整個過程,不能優化高並發的網路應用;熟悉http協議,特別是http頭,電腦培訓認為沒有五年多的大量工作無法理解session和cookie的生命周期以及它們之間的關系。

系統集群;負載均衡;反向代理;靜態與動態分離;靜態網站。

分布式緩存技術memcached,redis,是提高系統性能所必需的。總之,昆明北大青鳥發現把硬碟的內容放入內存提高速度,順便演算法的整合性hash。

資料庫設計能力,必不可少的是mysql,最基本的資料庫工具易於使用,它的基本參數優化,緩慢的查詢日誌分析,主從副本配置,至少成為半mysqdba。其他nosql資料庫,如mongodb。

成為架構師不是了解很多技術就行了,這些都是解決問題的基礎和工具,不懂這些知識是無法提出解決方案的,雲南計算機學習認為這是成為一名架構師所必備的。


『肆』 如何從程序員到架構師

程序員到架構師的技術成長之路分為幾個典型的階段:工程師 - 高級工程師 - 技術專家 - 初級架構師 - 中級架構師 - 高級架構師,總的成長原則是每個階段都需要「積累經驗、拓寬視野、深度思考」。

『伍』 程序員幾年能夠成為架構師

五年以上。

它們往往要求工作年限在5年以上,需要求職者有過3年以上的系統設計經驗,精通各種架構模式和系統框架,反觀自己卻一個條件都不滿足。

軟體架構師就是這么一個讓人嚮往,但又讓人望洋興嘆的一個職位。就像建築設計師總有成為總設計師的夢想,航天工作者總有成為總工程師的壯志,相信每一個軟體工程師都有過成為軟體架構師的想法。

引用維基網路里的定義,軟體架構師的職責就是在軟體系統研發中,負責依據需求來確定主要的技術選擇、設計系統的主體框架結構,並負責搭建實施。

普通程序員可以利用搜索引擎(網路)尋找答案,經常性找不到好的解決辦法,然後更換技術方案,頂級程序員也利用搜索引擎(Google)尋找答案,一般bug都順利解決(其實跟前期框架選擇等關系非常大)。

演算法是程序員的重中之重,掌握演算法能力才能處理復雜環境,才能對系統做出性能調優,遇到性能瓶頸之後才不會束手無策。

表達能力決定了你所做的技術的影響范圍,決定了你的影響力,決定你的威信,決定了你的報酬。普通程序員和頂尖程序員的表達能力差別非常大,這主要還是取決於他們格局的不同。良好的溝通能力讓你理解產品經理的設計思路,讓你更好的展現自己的特長。

『陸』 請問從java工程師成為一名架構師的學習路線是什麼樣的

對於java工程師成為一名架構師如何進階學習及掌握應有的技能體系在這做出一些建議!同時大家可以到知乎專欄「動力節點視頻教程資源庫」看更架構師的文章,歡迎大家來關注閱讀!
可以驕傲地說,Java程序員應該是這個世界上最為廣泛的工程師群體。在最新的2019年3月編程語言排行榜中,第一寶座依舊是Java,可見Java強大的生命力。不過,我發現身邊不少程序員朋友,對Java的掌握僅限於使用 Java 語言和 Java 生態里的技術框架做功能實現,很少有人去了解 Java 的底層動力 JVM 的運營機制,以至於技術水平和認知停滯不前,最終成了CRUD 研究員。

同時也為那些針對2到5年及以上工作經驗的想在技術上提升到一定高度甚至想往架構師發展的Java程序員提供一份系統詳情的架構進階路線,從廣度到深度架構圖還比較全面的,裡面的技術包涵了Java高並發、微服務、源碼分析、源碼分析、高性能、分布式等技術,這些也是目前互聯網企業比較常用的技術,那麼來詳細看看。

JVM與性能優化
JVM作為Java語言的基礎,雖然平時工作中真正運用到的時候可能並不多,一個程序員想要上升到高級層次,那就必須知道Java到底是怎麼運行的,這就逃不開JVM。想要告別增刪改查和簡單開發,而是去做Java性能分析和調優工作,那麼,Java虛擬機絕對是一把助力的利劍。學習Java虛擬機的原因,本質是讓你了解Java程序是如何被執行且優化的。這樣一來,你才可以從內部入手,達到高效編程的目的。同時,你也可以為學習更深層、更核心的Java技術打好基礎。

框架源碼解讀

我認為有三個維度來說明:這個框架是為了解決什麼問題而誕生的?這個框架的核心思想是什麼?這個框架適合應用到哪些場景?說到思想,我覺得編程的靈魂就是思想,沒有思想的編程和咸魚沒什麼區別。「不要重復造輪子」,當時聽了趕腳這句話挺高大上的,現在我認為這句話只能在某一方面是正確了。首先我來說一下為什麼要學會造輪子--因為你會造輪子後,用別人的輪子時才會明白其原理,用的時候才會得心應手,如果你對一個框架的理解只是停留在用,用的多熟練的階段的話,那麼你就是一個「碼畜」,別人隨時可以替代你。或許有人會說,項目時間緊根本不允許你寫一個輪子、你寫的還有那些大牛們寫的好嗎等理由反駁。但我想說的是:我沒說項目中非得用自己寫的輪子,自己寫的輪子不一定要和別人比,因為造輪子的目的是要理解這些輪子的思想。說這么多其實就是想告訴大家學習框架要理解框架的底層的原理,要掌握的就是最常用的原理。

分布式架構
近年來隨著服務體系的不斷龐大以及用戶量的迅速增長,傳統單一應用架構已經無法滿足我們系統的需求,尤其是大型互聯網系統的快速發展,各種靈活多變的系統架構模型層出不窮。分布式的處理方式越來越受到業界的青睞——計算機系統正在經歷一場前所未有的從集中式向分布式架構的變革。同時分布式也成為Java程序員面試不可缺少的一部分知識,尤其是對現在工作2到5年的工程師來說分布式無疑不是一項加分技術。

微服務架構
雖然很多文章都說微服務架構是復雜的、會帶來很多分布式的問題,但只要我們了解這些問題,並找到解法,就會有種撥開雲霧的感覺。微服務架構也不是完美的,世上沒有完美的架構,微服務架構也是隨著業務、團隊成長而不斷演進的。最開始可能就幾個、十幾個微服務,每個服務是分庫的,通過 API Gateway 並行進行服務數據合並、轉發。隨著業務擴大、不斷地加入搜索引擎、緩存技術、分布式消息隊列、數據存儲層的數據復制、分區、分表等!

總結
不管是學什麼技術,最終都需要你進行歸納、整理,才能把所學的東西變為自己的。工作為什麼要寫日誌,平時學習為什麼要寫博客,其實就是在構建自己的知識體系。在學習的過程中多做筆記,多做總結,習慣一旦形成,久而久之,便會印在你的腦海里,你下次再被問到這一問題時,你就可以用自己之前總結過的內容來回答。

『柒』 如何從普通程序員晉升為架構師

程序員晉升架構師的十項必備技能
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--

『捌』 前阿里P9:架構師是如何煉成的

大家好,我是程序員菜菜。[太陽]

相信每個程序員心中都有一個成為架構師的夢想,但夢想是美好的,道路是曲折的。

可能很多人覺得 學習架構設計就像學習一門編程語言一樣,先學習一下基本的語法,再研究一下細節和原理,然後實踐一下就能夠快速掌握。不過,真正實踐之後,你會發現——架構設計的難度和復雜度要高很多。

前阿里架構師李運華(P9)在他的專欄里 總結了幾個架構設計相關的特性:

1. 架構設計的思維和程序設計的思維差異很大。

架構設計的關鍵思維是判斷和取捨,程序設計的關鍵思維是邏輯和實現。很多程序員在轉換為架構師後,很難一開始就意識到這個差異,還是按照寫代碼的方式去思考架構,會導致很多困惑。

2. 架構設計沒有體系化的培訓和訓練機制。

3. 程序員對架構設計的理解存在很多誤區。

例如:要成為架構師必須要有很強的技術天分;架構師必須有很強的創造力;架構設計必須要高大上才能體現架構師的能力;架構一定要具備高可用、高性能……這些似是而非的誤區讓很多技術人員望而生畏,還沒嘗試就已經放棄了。

在他的專欄《從0開始學架構》中,李運華還提到了架構設計的目的。 從架構設計的 歷史 背景,可以看到,整個軟體技術發展的 歷史 ,其實就是一部與「復雜度」斗爭的 歷史 ,架構的出現也不例外。

簡而言之,架構也是為了應對軟體系統復雜度而提出的一個解決方案,通過回顧架構產生的 歷史 背景和原因,我們可以基本推導出答案: 架構設計的主要目的是為了解決軟體系統復雜度帶來的問題。

這個結論雖然很簡潔,但卻是架構設計過程中需要時刻銘記在心的一條准則,為什麼這樣說呢?

首先,遵循這條准則能夠讓「新手」架構師心中有數,而不是一頭霧水。

「這么多需求,從哪裡開始下手進行架構設計呢?」。「架構設計要考慮高性能、高可用、高擴展……

這么多高 XX,全部設計完成估計要 1 個月,但老大隻給了 1 周時間」。

「業界 A 公司的架構是 X,B 公司的方案是 Y,兩個差別比較大,該參考哪一個呢?」。

以上類似問題,如果明確了「架構設計是為了解決軟體復雜度」原則後,就很好回答。

「這么多需求,從哪裡開始下手進行架構設計呢?」—— 通過熟悉和理解需求,識別系統復雜性所在的地方,然後針對這些復雜點進行架構設計。

「架構設計要考慮高性能、高可用、高擴展……這么多高 XX,全部設計完成估計要 1 個月,但老大隻給了 1 周時間」—— 架構設計並不是要面面俱到,不需要每個架構都具備高性能、高可用、高擴展等特點,而是要識別出復雜點然後有針對性地解決問題。

「業界 A 公司的架構是 X,B 公司的方案是 Y,兩個差別比較大,該參考哪一個呢?」——理解每個架構方案背後所需要解決的復雜點,然後才能對比自己的業務復雜點,參考復雜點相似的方案。

其次,遵循這條准則能夠讓「老鳥」架構師有的放矢,而不是貪大求全。技術人員往往都希望自己能夠做出最牛的東西,架構師也不例外,尤其是一些「老鳥」架構師,為了證明自己的技術牛,可能會陷入貪大求全的焦油坑而無法自拔。例如:「我們的系統一定要做到每秒 TPS 10 萬」。「淘寶的架構是這么做的,我們也要這么做」。「Docker 現在很流行,我們的架構應該將 Docker 應用進來」。

以上這些想法,如果拿「架構設計是為了解決軟體復雜度」這個原則來衡量,就很容易判斷。

得益於移動互聯網技術的快速發展,李運華有很多的機會直接參與架構設計,這些架構背後的業務形形色色,包括社交、電商、 游戲 、中間件、內部運營系統;用到的技術棧差異也比較大,包括 PHP,Java、C++ 等。

雖然每次架構設計對他來說都是一個新的挑戰,但正好也提供了非常好的機會,讓他親身體驗不同的架構設計。在這個過程中,他不斷學習、思考、實踐、總結、改進、交流,逐步形成了自己的一套架構設計方法論。有了這套方法論後,不管什麼樣的業務,不管什麼樣的技術,按照這套方法論都能夠設計出優秀的架構。

從普通程序員到大廠架構師,它指明了方向,非常不錯的學習資料啦!

閱讀全文

與一個程序員到架構師的經歷相關的資料

熱點內容
比澤爾壓縮機型號規則 瀏覽:83
華興數控切斷編程 瀏覽:786
西安離心壓縮機 瀏覽:542
程序員需要優盤嗎 瀏覽:876
西藏掌上社保app在哪裡下載 瀏覽:597
怎麼讓伺服器固定 瀏覽:59
計數器定時器編程 瀏覽:11
程序員網上投資平台 瀏覽:875
用shell編程計算1加到100 瀏覽:231
外包公司的程序員一天寫多少代碼 瀏覽:530
蘋果手機主屏幕app如何移動 瀏覽:567
伺服器怎麼連接遠程密碼 瀏覽:431
linux娛樂命令 瀏覽:368
單片機數碼管循環顯示9到0 瀏覽:494
程序員懟代碼思路 瀏覽:327
新能源碼磚機產品介紹 瀏覽:37
模擬器共享里的文件夾名稱 瀏覽:840
easypanel控制面板源碼下載 瀏覽:532
相冊里怎麼查加密的照片 瀏覽:217
javaurl文件下載 瀏覽:473