如何從程序員到架構師?

lemoncai


個人認為,有的時候不用太相信和在意這些頭銜,什麼XX總、技術負責人、首席架構師...頭銜一個比一個唬人;

我也見過不少PPT架構師,PPT寫的非常漂亮,各種架構規劃的非常高大上,但是一問到具體實現,又變得支支吾吾起來,嘴裡永遠是一些大話、套話、虛話。

宰相必起於州郡,猛將必發於卒伍,在我看來,架構師一定是要技術出身。

架構師的工作職責

有些人認為架構師的工作只有架構設計,其餘的工作讓項目經理和開發人員做就可以了,我認為這種說法是有問題的;在我看來,架構師的工作是要貫穿於整個項目的。

  • 瞭解和把控需求:我認為架構師從需求階段就要介入,保證自己可以完整的理解和把握客戶需求;任何架構和代碼都是服務於需求的;

  • 架構設計和技術選型:如果是一個新的項目,架構師需要對項目進行分解和抽象,最終形成項目架構,並結合項目的實際情況(程序員的開發能力和技術棧),完成技術選型;如果是一個老項目,通常是比較大需求或改版,架構師需要考慮這次的需求做在什麼地方,是在現有技術上就能實現,還是需要引入新的技術。

  • 制定規範、把握方向:架構師就是項目的技術權威,他應該時刻與開發人員進行溝通,讓開發人員理解架構意圖,實現業務功能;有一些技術難點,都需要架構師衝在前面解決;甚至當項目遇到一個“坑”時,架構師是要“真刀真槍”的寫代碼、“填坑”的。


想要成為架構師,需要培養哪些能力

知道了架構師的工作職責,那麼也就不難了解需要培養哪些方面的知識和技能,才能成長為架構師了。

  • 技術深度和廣度:雖然有些人PPT寫的好、會忽悠,也能成為“架構師”,但是我還是希望自己能成為一個有著真材實料、可以解決實際問題的架構師;所以作為架構師,技術儲備一定要豐富;有些軟件和框架不一定要了解的非常細緻,但是也一定要知道其優缺點、試用場景、可以解決哪些問題、同時也會帶來什麼問題;

  • 業務知識的積累:架構和技術都是為業務服務的,脫離了業務的架構設計,都是不切實際的;所以想要成為一個架構師,一定要在業務領域有深厚的積累;

  • 抽象思維、模塊化思維:這是進行系統分析和需求分解的基本素質,具備抽象思維的能力,才能把一個大的需求,分解成一個一個小的功能,但是分解後依然可以掌控全局;


  • 溝通能力:和需求人員溝通,和業務人員溝通,和領導溝通,和項目成員溝通,和周邊項目組溝通...這些都是必不可少的;

  • 領導能力:推動整個項目的發展,需要架構師的領導能力,這裡說的領導力和項目經理所需的領導力還不太一樣,這裡的領導能力,更多的是指技術能力的影響,甚至是個人魅力,也就是【可以服眾】,讓開發人員心裡想:“這個架構這牛,跟著他我學到了很多東西”。

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。


會點代碼的大叔


Java程序員如何(怎樣)才能成為一名合格的架構師,需要經過哪些路徑、具備哪些技術知識體系?這是程序員們經常問到的問題,本篇我將通過程序員進階之路、程序員薪酬待遇、架構師必備技術進行詳解,文末有程序員進階架構師詳細學習內容。

一、程序員進階之路

架構師也是從初級程序員起步的,程序員從初級、中級、高級再到架構師,職級不同,技術能力要求不同,這是一個不斷經驗積累的過程,後面會講到。

二、程序員薪酬待遇

程序員在不同的職業發展階段,薪酬待遇差別大,初級程序員與初級架構師的收入差距能達到幾十萬,架構師崗位可謂是名利雙收(技術牛人+團隊核心+豐厚收入),這也是程序員們期望往架構師方向發展的主要原因,關於薪酬待遇下圖以阿里為例,供大家對比參考。

三、架構師必備技術能力

架構師是團隊中的技術權威,需同時具備技術的深度和廣度,哪些技術是架構師必須具備的呢?我總結了十七點,先簡單羅列幾點。

1、大數據

  • Hadoop

  • Hbase


  • Spark

  • Storm/JStorm

2、算法與數據結構

  • 數組

  • 鏈表


  • 隊列


  • 二叉樹

  • B Tree/B+ Tree


  • 紅黑樹

  • 哈希

3、排序

  • 內部排序

  • 插入排序

  • 直接插入排序

  • 希爾排序

  • 選擇排序

  • 簡單選擇排序

  • 堆排序

  • 交換排序

  • 冒泡排序

  • 快速排序

  • 歸併排序

  • 基數排序

  • 桶排序

  • 外部排序

4、分佈式系統

  • 從集中到分佈式


  • 分佈式Session:Session複製、Session綁定、Session服務器(靠譜)

  • 分佈式緩存:Redis、一致性Hash算法

  • 數據庫:讀寫分離、主從熱備、分庫分表、一致性

  • 分佈式事務、CAP、BASE、2PC/3PC

  • 分佈式鎖

  • Redisson

  • 負載均衡、硬件、F5、軟件、LVS、Nginx

  • 消息隊列:RabbitMQ、ZeroMQ、ActiveMQ、Kafka(推薦)

  • 服務化:服務註冊與發現、Zookeeper

  • 架構

  • 微服務

  • Spring Boot

  • Dubbo

  • RPC

  • SOA

  • 虛擬化

  • Docker

由於字數限制,未能完整列舉,若需要程序員進階架構師的完整學習資料,將關鍵詞【架構】私信給優知學院,即可秒收,已有超過3萬+程序員成功領取啦~。


優知學院


程序員滿大街都是!但架構師鳳毛麟角!

我是一名工作七年的老程序員,也主導參與過幾個互聯網項目架構設計與落地,但是還不敢以架構師自居。

我理解架構師要求應對當前需求能有一個架構設計從數據存儲,通信,業務交互,數據整合到數據擴展,服務擴展再到分佈式微服務架構,再到服務部署各種數據集群設計,負載均衡集群設計,並且保證這種設計具有技術前瞻性,支持業務橫向擴展,快速開發,對項目中的風險點能夠提前預估處理,核心技術難點攻克。有豐富的分佈式事務實踐經驗,在項目中熟練使用緩存和隊列,對虛擬機實現原理理解的基礎上能夠進行內存調優有解決項目中各種疑難雜症的能力等等!

所以我認為很多自詡的架構師都是假的架構師!

程序員進階

下來回到主題,如何從程序員到架構師!我一直在北京工作,七年時間從傳統軟件到bs再到移動互聯網走過很多彎路,荒廢過不少寶貴的時間。首先給大家上一張java高開的技術圖譜,不說所有都得精通,但是很多領域都要求深度廣度並進。


可能東西有些多看不太清楚,橫屏可能好一點,架構師是在掌握了上述java技能的技術之上並結合多年項目經驗能對新的項目架構的有統籌設計的高級java開發工程師。所以持續不斷的完善技能永遠是你前進道路上的助力!簡單梳理以下知識點,重點看圖:

  1. java基礎,集合以及部分實現原理+JVM;

  2. 設計模式,常見設計模式以及原理;

  3. 數據庫知識,主從+熱備+水平分表+nosql+緩存+大數據檢索;

  4. 框架知識,springmvc+springboot+springcloud架構深層次理解;

  5. 常用中間件儲備,隊列+日誌+數據加密;

  6. 集群+微服務+服務器負載均衡+客戶端負載均衡+網關處理;

  7. 分佈式架構架構圖;

.

.

.

.

等等。

所以重點來了,童鞋,想要成為一名合格的架構師,需要自己付出不亞於其他人的努力,不單單是完成了日常工作,工作的同時多思考多積累沉澱,平時給自己定個計劃,多讀讀技術方面數據。上下班路上就別玩手機了,認真看書吧,足夠的廣度+深度+多年的經驗,你就是下一個架構師!!!

(地鐵碎片時間手機碼字,有誤請諒解)

狂客說技術


相信很多程序員都想成為一名架構師,一個不想成為架構師的程序員他絕對不是一個好的程序員,為什麼這樣說呢?不管做什麼得有夢想嘛。

程序員一般分為:初級、中級、高級,每個階段都代表著不同的技術水平,每一個架構師都是從普通的程序員過來的,當然做IT這行業也會根據你的技術水平薪資待遇也會水漲船高,一般一名架構師薪資待遇25K+甚至可能高,隨著很多程序員朋友通過不斷學習跟努力達到架構師的要求,下面簡單來說下怎麼成為一名優秀的架構師。

1.技術水平

掌握這些有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring,MyBatis,Netty源碼分析,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點,不斷的去學習新的技術才能跟上版本的迭代。

2.管理水平

一一名優秀的架構師肯定也是一個優秀的管理者,懂得如何分配給下面的小夥伴一些工作,發現別人的優點,成本意識,風險意識,溝通協調能力,自我管理能力等等這些都非常的重要。

<strong>

歡迎大家進行補充,喜歡IT方面的想成為架構師的可以關注我,可以提供給你思路跟方向。


IT技術分享


架構師是程序員的發展方向之一,所以很多程序員對架構師的工作崗位和工作內容也比較關注。目前IT行業的很多架構師都是從程序員成長起來的,可以說程序員是架構師的一個重要基礎。

從程序員成長到架構師大概需要經歷四個階段,分別是初級程序員、主力程序員、核心研發級程序員、架構師。每個解決都有不同的任務,也有不同的知識儲備,如果能一步一步成長到架構師,對於程序員來說不僅要有較強的工作能力,還需要有較強的學習能力。

在初級程序員階段,主要的工作是功能模塊的實現,能夠輔助主力程序員完成具體的功能實現,這個階段會鍛鍊程序員的基礎編碼能力。在初級程序員階段,主要需要學習軟件開發的流程、技術實現以及軟件部署和測試方面的內容。往往初級程序員階段的成長速度是比較快的,工作能力強的初級程序員在1到2年就會成長為團隊的主力程序員。

主力程序員要獨立完成功能模塊的設計和實現,對軟件整體結構有清晰的認知,知道模塊之間的邏輯關係,能完成初級研發任務,對技術邊界有一定的認知。主力程序員的發展方向有兩個,一個是走項目經理,再到諮詢專家的路線,另一個就是走架構師,再到技術專家的路線。如果走項目經理的路線,則需要深入瞭解行業知識。而對於架構師方向來說,更應該瞭解各種技術方案的應用場景,以及相應的性能指標,尤其是技術關鍵點的解決方案,工作能力強的主力程序員經過2到3年的時間會成長為團隊的核心研發人員。

核心開發人員的主要工作任務往往是產品的容器部分開發,這個過程能夠對軟件產品有深入的學習,核心研發人員往往要跟著產品線走,大部分核心研發人員未來都會成長為架構師或技術專家。

我從事軟件開發工作多年,目前也在負責移動互聯開發團隊和大數據團隊,我會陸續在頭條寫一些關於軟件開發方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。

如果有大數據方面的問題,也可以諮詢我。

謝謝!


IT人劉俊明


尚學堂卓越班三個原則,程序員成長為架構師:

考試入學②變態嚴格管理③VIP一對一管理和輔導,從零開始2000小時,兩年時間,成長為高端人才,不再是低端碼農。


北京尚學堂


架構師不會編程


分享到:


相關文章: