為什麼很多程式設計師沒有升級到架構師?

2020-10-30 朝學朝用

對我們程式設計師來說,發展的途徑要麼是走管理崗,從開發升級到項目經理甚至是部門經理;要麼走技術升級路線。不過在技術路線方面,無法升級到架構師的程式設計師不在少數。一方面,在不少公司的高級開發崗位上,無法讓程式設計師實踐甚至接觸到架構師的技能,另一方面,有不少程式設計師甚至不清楚架構師所需要掌握的技能和升級途徑。所以從結果上來看,至少有5成的程式設計師止步於「高級開發」的程度,這是非常令人可惜的。

我這幾年一直努力地從高級開發升級到架構師,目前雖然職位上沒達到,但好歹多少也能幹些架構師方面的活了。在本文裡,將結合我自身和其它一些程式設計師的經歷,分析不少程式設計師無法升級到架構師的普遍原因,由此向大家展示從高級開發升級到架構師的難點,並在此基礎上給出相關的升級建議。

1 很多程式設計師在日常工作裡無法接觸到架構師的技能

大多數的程式設計師能在工作中接觸到高級開發的技術,所以從初級開發升級到高級開發,難度並不大,但架構師就不同了。

比如在外包公司裡,程式設計師大多是做重複勞動,業務變了,但用到的技術還是增刪改查。或者在一些規模比較小的公司,項目組出於成本和質量監控的考慮,也未必會讓程式設計師從事架構方面的工作。哪怕在一些技術含量比較高的網際網路公司,出於業務封裝的角度,一些高並發高可用的實現往往被封裝在方法裡,程式設計師僅僅是通過調用方法實現功能,未必能在代碼層面,顯式地看到架構方面的技能。

接觸不到相關技能,單靠看視頻看資料積累起來的技能,在面試過程中往往會不堪一擊,從而無法應聘架構師的崗位,這反過來制約了程式設計師向架構師發展的腳步。

我有時候在面試高級開發的時候,會深入問些架構方面的問題,比如我問,你們系統裡,模塊間的通訊用的是什麼組件 ,不少高級開發甚至是一頭霧水,或者在他們眼裡,更多的是調用方法實現功能。

2 不少程式設計師往往會深挖單機版的技能

很多工作中得過且過的程式設計師,在實現的功能通過測試以後,或許就無所事事了,而且這類程式設計師不在少數,在小公司或外包公司裡,這類程式設計師往往會更多,說實現的,他們的競爭力和從培訓班裡出來的程式設計師沒什麼兩樣,或許就更熟悉業務背景。

或者有些程式設計師雖然上進,但會深挖單機版的技術細節,比如我問String對象的== 和equals方法有什麼差別,或者,JVM虛擬機調優有哪些實踐要點,此類回答他們會回答非常到位。這固然要比純粹會寫代碼的程式設計師要好,但此類技能頂了天只能算高級開發的技能。如果在升級時過度追求這方面的技能,無異於緣木求魚。

3 列舉架構師平時要幹的活,確實和高級開發有差距

上文是從客觀和主觀兩個方面,講述了架構師升級的難處,在講述升級方法前,我們先來看下架構師究竟要幹什麼活,以此來明確努力的方向。

1 需要搭建高可用的框架,比如就拿最簡單的搭建資料庫服務來說,得考慮如果一臺MySQL伺服器宕了,如何保證業務切換到另外一臺機器上。

2 需要考慮高並發的因素,從這個點展開,架構師至少需要會用nginx,mycat,netty,redis之類的工具,以及考慮搭建實現負載均衡的集群。

3 需要把設計好的架構部署上線,或者哪怕上線動作是由運維來做,但架構師至少要知道如何把nginx集群等組件部署上線的活,由此架構師需要了解必須的linux命令和腳本,以及了解jenkins之類的部署工具。

4 上述技能不是簡單會用即可,如果在開發部署和運行過程中由問題,架構師得負責解決。這就要求架構師不能僅僅靠看視頻知道如何搭建系統,更得具備針對netty等組件的debug能力,還得能通過看日誌,知道集群的運作情況,如果集群出了問題,還得知道如何快速解決。

5 不能僅僅關注技術,更得結合業務,把諸如搶紅包之類的需求通過架構實現,這就要求架構師得知道各種組件的優劣,以此能選型並設計方案。

從上述對架構師的需求來看,從高級開發升級到架構師很難,也在情理中了。

4 從運維入手,熟悉架構師的入門技能

升級到架構師很難,但絕非不可能,對於高級開發而言,從運維入手,或許能熟悉架構師的技能。

1 比如先從ant腳本,jenkins腳本和linux shell腳本入手,能知道系統的部署方式,以及熟悉必備的linux調試技能。

2 通過觀察nginx或dubbo或zookeeper配置文件,了解各組件的運作方式,並能通過這些了解高並發高可用系統裡負載均衡和失效轉移等配置方式。

3 可以觀察線上相關的日誌,了解系統部署的情況,以及從架構層面了解諸多組件間的關聯。

在上述步驟裡提到的腳本和日誌,在平時工作中只要上點心,應該可以看到,或者我們可以和運維人員多交流請教,上述組件部署和配置的知識也不難知道。在這個過程中,暫時沒涉及「修改配置」和「搭建組件」等技能,畢竟這屬於熟悉階段。

5 多解決實際問題,了解組件的關鍵配置,並了解組件的底層代碼

程式設計師在熟悉基本的部署和架構方面的技能以後, 就可以參與解決一些實際的問題了。在公司裡,測試和上線階段出現的問題不能算少,其中也會包含很多和架構相關的問題,比如kafka沒配好,導致消息積壓,或者dubbo超時時間配置過長,導致調用鏈路超時失效,或者再如redis超時時間過長,導致OOM異常。類似問題的種類五花八門,只有想不到的,沒有不可能出現的。

剛開始,程式設計師可以跟在資深人員之後查問題,或者找到問題後,再手動復盤一下,學習架構師分析和解決問題的入手點,一來二去,一定能熟悉組件的配置,並了解組件的底層代碼,更能熟悉配置各種框架組件的實施方案。

這個階段依然屬於「見習」,但至少能從實踐角度,掌握架構師所需的技能。對比自己通過看視頻,以閉門造車的方式積累架構師的技能,通過上述步驟得到的相關經驗來源於實際,無疑值錢得多。

6 必要時,得通過跳槽,爭取架構師的實踐機會

其實在小公司甚至是外包公司裡,都有機會了解甚至實踐上文提到的架構師相關技能。程式設計師通過上述步驟掌握架構師的相關技能後,如果再加以實踐機會,就能很快成為名副其實的架構師。

這種實踐機會在大公司裡不難找,但在小公司裡或許就不多了,不過也不要緊,這時如果再出去面試架構師的崗位,基本上就沒什麼難度了。我們來看下架構師的面試問題。

1 如何部署nginx(或其它組件),從而實現高可用?

2 Redis集群裡,容災一般是怎麼做的?

3 Kafka消息隊列裡,如何實現消息重複?如何確保消息不被重複消費?

4 或者是問底層的問題,比如說下netty裡的讀寫索引工作方式。

或者在目前階段,大家未必能回答好上述問題,但一旦在運維層面了解過組件的搭建方式,或者通過排查實際問題了解過組件的運作和交互方式,再專研下相關底層代碼,哪怕沒太多的架構師實踐經驗,此類問題也不難回答。

或許一個沒太多實踐經驗的架構師,在公司裡日子會很難過,可以會讓領導和組員感覺實踐經驗不足,但大多數架構師也都是通過實踐一點點積累相關經驗的,在這個階段裡,如果再肯多聽多看多問題,升級到資深架構,就指日可待了。

7 總結,升級到架構師後,會有更多的機會

其實對於我們做IT的人來說,升級到架構師未必是唯一的發展途徑,但不是每個人都適合搞管理。如果走的是技術加成路線的話,從架構師到技術專家,或許是一條比較合適的發展途徑。

對於高級開發而言,或許真有30歲或35歲現象,畢竟高級開發所需的技能很容易被畢業生或培訓生掌握,年紀一大了就沒競爭優勢了,但正是因為升級到架構師不是那麼容易,到35歲時,或許還有競爭的能力。

而且,一旦升級到架構師,退則可以找個小公司做技術負責人,以求小富即安,從而不會像高齡碼農那樣被淘汰;進則可以再到大廠裡去磨練一番,然後再通過各種途徑拓展影響力,那麼真就可以說成為技術大牛了。反之,如果止步於高級開發,雖然也能通過跳槽提升工資,但格局始終無法像架構師那樣開闊了。

相關焦點

  • 為什麼大部分的程式設計師成不了架構師?
    其實現在的「架構師」大多數都停留在8這個層次,甚至很多在5這個層次就當上title上的架構師了。總之,成為架構師,不僅僅是工作上的簡單積累,更需要主動接納工作外的大量知識,同時,對性格上對於非技術能力上也有一定的要求,不僅如此連思維方式都很重要,外加職業發展中又有很多岔路,最後走到架構師這根樹枝上的就寥寥可數了。
  • Android程式設計師現狀:沒有架構師的命,卻得了架構師的病
    今天我們來聊聊我們自己,我們Android程式設計師的現狀。各位朋友也都是從標題看起點進來的。確實,標題很扎心,也很真實。架構師是程式設計師晉升的頂點,誰不想成為一名架構師呢?為什麼大部分程式設計師從入行到轉行,自始至終還是一個碼農呢?我們帶著思考看下去。
  • 架構師or普通的程式設計師,架構師優秀在哪幾方面?
    今日跟隨小編一起來看看為什麼架構師比普通的程式設計師有哪些不一樣的架構師對產品和技術的選擇僅限於評估,沒有決策權。最終的決策權屬於項目經理。架構師提出的技術計劃為項目經理提供了重要的參考信息。項目經理將權衡項目預算,人力資源和時間表的實際情況,最後進行確認。
  • 【暢言】從程式設計師到架構師的方法與邏輯
    架構師是什麼?架構師這詞其實很有意思,很多人的Title是這個,但其實我們對架構師都幹什麼並沒有太統一的認識。往大了說,比爾蓋茨當年好像也稱自己為架構師,往小了說隨便一個小的軟體上做設計的也說自己是架構師。所以如果把這個詞泛化而不局限於特定的場景,估計單是說清楚什麼是架構師就要花費不少口水。
  • 程式設計師沒有天才:暴風影音首席架構師鮑金龍訪談
    認識他的人都稱他是天才,而他總是謙卑地稱自己是「苦才」,也許就像他自己所說:「程式設計師的世界不承認天才,如果我是天才,早就死翹了」。他叫鮑金龍,暴風影音首席架構師,混跡於網際網路程序界資深元老。程式設計師就像一個不按常理出招的棋子,它走得每一步都會讓我們費解很久,始終不能理解。比如幾乎全部職業的優秀員工都很勤奮、工作努力,不過程式設計師例外,那些優秀出色的程式設計師都有點懶。
  • java程式設計師為什麼要向架構師轉型
    們把具備以上能力的人才稱之為java架構師。在中國,每年有成千上萬的軟體開發人才供不應求,並且具有設計和實現系統架構能力的人才也在不斷湧現對於軟體開發人員來說,成為一名合格甚至優秀的Java架構師是他自己奮鬥的方向。 當前,許多公司,特別是大公司,都不乏程式設計師。 他們缺少的是Java架構師。
  • 從初學者到程式設計師,再到架構師,阿里大牛構建成Java知識體系
    前言怎樣的經歷,才能讓一名Java初學者成為開發程式設計師,再到高級架構師呢?這個問題,不僅困惑著一個剛剛踏入職場的初級程式設計師,也是工作幾年之後開始迷茫的Java開發們常常思考的一部分。如果您也一樣困惑,希望這篇文章可以給到一些幫助。我常問自己:程式設計師是吃青春飯的嗎?還是自身的能力達不到年齡的要求?
  • 程式設計師如何向架構師發展?
    苦李,今天和我們公司前端大佬閒聊,說到從更高層次看待項目,例如,封裝前端組件庫,維護組件相關文檔等,他說到,重要的不是怎麼實現業務代碼,而是個人能為團隊帶來什麼。我想問下,後端代碼如果要優化,如何從更高的角度來進行,或是平時編寫代碼如何建立一種高層次架構思維,有哪些具體方面可以讓自己為團隊帶來價值。
  • 從java工程師到一名架構師需要學習哪些?
    要成為程式設計師金字塔中的「架構師」並成功進入BATJ和其他大公司,必須掌握紮實的技術。 同時,您還需要一些面試技巧,還需要掌握以下5個要點!  Java架構師的職業地位和前景如何?主流技術是什麼?  有鑑於此,今天我將分享建築師技能體系的完整學習途徑java架構師
  • 為什麼80%的碼農都做不了架構師?
    一般來說技術團隊的金字塔頂尖往往是技術最牛的人做架構師(或TL)。所以架構師在廣大碼農中的佔比大概平均不到 20%。 所以,80%碼農幹上許多年,還是做不了架構師;正在辛苦工作的程式設計師們,你有沒有下面幾種感覺?
  • 阿里P8耗時一年最終總結出系統架構設計程式設計師向架構師轉型之路
    軟體行業技術開發從業人員眾多,但具備若干年開發經驗的普通開發人員往往面臨個人發展的瓶頸,即如何從普通開發人員轉型成高層次的系統架構師和技術管理人員。想成為一名架構師,應當具備全面的知識體系,需要進行系統的學習和實踐。很多開發人員有往架構師轉型的強烈意願,但苦於找不到好的方法和路徑。
  • 如何成為前端架構師?
    前端架構師,聽起來像是個很高大上的名詞,在大多數程式設計師眼中,架構師一般都來自於後端開發, Java或 C++,這些人往往有十八般武藝,能夠解決企業中出現的各種問題。前端架構師的概念已經漸漸進入了前端工程師的視野,無論何時,只要前端工程師還在工作,面試官就會問到,你的未來計劃是什麼?
  • Java架構師之路:Java程式設計師必看的10本書的電子版
    我想就我自己讀過的技術書籍中挑選出來一些,按照學習的先後順序,推薦給大家,特別是那些想不斷提高自己技術水平的Java程式設計師們。Java程式設計師到架構師推薦閱讀書籍,文末有彩蛋~~1、《Java編程思想》註解:在有了一定的Java編程經驗之後,你需要「知其所以然」了。
  • 武漢課工場Python培訓:普通程式設計師和優秀架構師究竟差在哪裡?
    武漢課工場Python培訓:普通程式設計師和優秀架構師究竟差在哪裡?對工作多年的程式設計師而言,日後的職業發展無非是專精技術,轉型管理,晉升架構師三種選擇。成為一名優秀的架構師,更是大多數技術人的追求。但想要做架構,空有一身技術是遠遠不夠的,知識的深度和廣度,往往會決定一個架構師的架構能力。而這些知識,從你踏入IT行業那一刻起,甚至更早就應該開始儲備了。那麼到底什麼是架構師?一個合格的架構師需要具備哪些能力呢?
  • 深入阿里總結的最完整架構師成長路徑
    說到底就是一個普通的打工仔,一個&34;,程式設計師也叫做碼農。2. 關於職業規劃很程式設計師每天都在寫代碼,每天都很忙,而當面試官問他:「你的職業規劃是什麼?」程式設計師答:「沒有」。那如果讓你選擇一個角色你會選擇什麼?比如技術主管。程式設計師答:「CEO吧」。我。。。。。。
  • 人人都是架構師:架構是一種能力,不是頭銜
    為什麼架構師不work在來阿里之前,我是在eBay的payments部門工作,當時有一個架構師叫Scott,所有的設計和方案都需要獲得他的approve才能通過,結果他成了整個團隊的bottleneck,很多事情都block在他那個地方。
  • JAVA架構師成長路線,你準備好了嗎
    ——猿人《猿碼天地》每一個程式設計師心中都有一個架構師夢,俗話說:「不想當架構師的程式設計師不是好碼農」。對於程式設計師而言,架構師幹的工作是很高大上的嗎?答案是肯定的。系統架構師負責設計系統整體架構,從需求到設計的每個細節都要考慮到,把握整個項目,使設計的項目儘量效率高,開發容易,維護方便,升級簡單等。那麼對於JAVA架構師而言,需要掌握哪些必備的技能呢?我們將通過思維導圖的方式,列出架構師的必備技能。
  • 擁有一個思維習慣,成為的架構師
    比如為了解決用戶隨時隨地購物的業務問題時,程式設計師利用 web 技術構建電子商務 App,而當需求升級為幫助用戶快速選購商品時,程式設計師會利用數據算法等技術手段構建推薦引擎。技術如果脫離了業務,那麼技術應用就無法很好的落地,技術的研究也將失去場景和方向。而業務脫離了技術,那麼業務的開展就變得極其昂貴和低效。
  • 架構老炮兒:談談 80% 的人關於架構師的誤解
    最近,我看到一個群裡關於架構師的討論:「架構師很『高大上』啊,平常畫畫架構圖,對我等程式設計師指指點點不就可以了。」「感覺我們公司架構師沒啥用啊,可有可無吧。」「我們都一樣,都是接到需求給實現嘛。」確實,業界對於架構師一直存在一些誤解,像上面的這種觀點不在少數。
  • 程式設計師、架構師、技術經理、技術總監和CTO分別都是幹什麼的?
    此階段大概要經歷3年,程式設計師的職責如下:  1、負責公司運營系統的設計與開發工作  2、運營數據處理和分析高級程式設計師高級程式設計師學名工程師。到了這個level,英文名可改叫做engineer或developer。