為什麼大部分碼農做不了軟體架構師?

小團隊一般 10 人左右,其中常常是技術最牛的人做架構師(或TL)。所以,架構師在廣大碼農中的佔比大概平均不到 10%。而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。

所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢?


1:碼農分為真的能寫代碼的,以及自認為能寫代碼的。

2:真的能寫代碼的碼農又分為自認為寫的不錯的,以及真的還不錯的。

3:真的能寫不錯代碼的碼農又分為會鑽研會不斷優化的,以及安於現狀的。

4:會鑽研的碼農又分為喜歡廣度了解新技術蜻蜓點水的,以及深入鑽研用到知識的。

了解廣度的碼農又有少部分願意深入某些技術,喜歡深入研究的又往往缺乏廣度知識。

5:極少深度廣度都關注的碼農又分為為技術而技術和為業務而技術的。

純為技術而技術的碼農在國內的軟體行業需求太少,且需求的往往不是應用軟體領域了。

6:為業務而技術的深度廣度都了解的碼農,又需要有良好的溝通能力。

7:而溝通好的,又有一部分當PM去了。

8:然後剩下的,又有一部分慢慢脫離實際開發(不再做任何實現)或者開始依靠拿各種中間件搭積木來作為「架構」手段。

9:除去這些,剩下對業務有一定了解,對技術廣度上有多種涉獵,深度上對部分技術研究徹底,還有很重要的一點,考慮問題足夠細緻全面。

10:細緻全面善於溝通,技術上深度廣度都沒問題, 又喜歡這個工作,還會不時做底層實現,從業務和開發兩個角度出發,搭出「架構」來是為了開發效率,為了運行效率,為了開發質量,為了業務靈活和運行穩定,為了維護方便等等這樣的人,個人認為可以稱為「架構師」。

而真能滿足這種需求的,別說題主的10%的比例,1%能不能達到我也持懷疑態度。其實現在的「架構師」大多數都停留在8這個層次,甚至很多在5這個層次就當上title上的架構師了。

總之,成為架構師,不僅僅是工作上的簡單積累,更需要主動接納工作外的大量知識,同時,對性格上對於非技術能力上也有一定的要求,不僅如此連思維方式都很重要,外加職業發展中又有很多岔路,最後走到架構師這根樹枝上的就寥寥可數了。


成為架構師,需要經驗和眼界

老碼農分為兩種:游擊隊和板凳王

坐穿板凳有利於積累經驗,而不利於開拓眼界

游遍四海有利於開拓眼界,而不利於積累經驗

碼農的生活是高壓的,唯有熱情可以驅使你一邊吃著蘋果,一邊又去摘梨

然而,又有多少熱情沒有隨時間而冷卻呢


寫了10年作文不一定寫得出好長篇。


根據我的經驗,大部分公司對於「架構師」的定義就是top 1%的程序員。

「這是我們組的架構師」 =&> 「這是我們組最好的程序員」

「這是我們部門的架構師」 =&> 「這是我們部門最好的程序員」

「這是我司的架構師」 =&> ...

這就解釋了為什麼好多人幹上好多年還沒有成為架構師。

可是這樣很合理啊。我難以想像10個人的組裡有9個架構師是一個多麼壯觀的景象。


頭銜職位有限,你自己已經回答了。

具體原因也不複雜,和別的行業一樣,平凡平庸的人永遠是多數,很多人做十年也達不到高程的水平,苛責沒意義,因為他們從一開始就不應該入這行,迫於生計沒選擇而已。

一個程序員能否成為所謂架構師(和其他職業頭銜)首先取決於平台與機遇,也就是公司要提供認可這些頭銜才行,多數中小公司不提供架構師頭銜,高程、主程、主管、經理,負責人,Lead等等,因為多數程序員供職於業務驅動的公司,而只有大公司才有技術驅動的資本,而能技術驅動的公司才會有對技術職位的細分。

架構師有時候也只是職場的一個頭銜,其實資深技術普遍都有架構能力,架構又不是什麼魔法,不過是知識、經驗。直覺的積累與運用而已。


補充幾點大家沒說到的。

金字塔結構

自古以來,金字塔結構(人群分個三六九等、高中低三檔)在人類社會的各行各業中普遍存在,這是客觀規律。恐怕再過千萬年,也是如此。

人類社會為什麼普遍、長期存在金字塔現象?其他動物,比如螞蟻、大雁社會,有嗎?這個問題就很深了,刨根問底有難度,也許應該問上帝。

金字塔結構/現象從根本上決定了大多數人做不了軟體架構師。不光軟體工程行業如此,能做技術領導的始終必然只是位於中上層的少數人。

英文水平差

據說中國有 700 萬碼農,英文不好似乎是一個比較普遍的現象。英語,尤其讀寫不好,把合格的架構師候選人選砍掉一大半。

小富即安的心理

很多碼農每月拿到萬把塊錢,就心安理得了,不再有更高的追求。求穩求安定,這符合大多數人的心理。不滿於現狀,堅持不斷學習,努力提高自己的開發技術和管理水平,擁有強烈進取心,想一朝一日做編程高手、軟體架構師的人畢竟是少數。

二三流企業的壓制

架構師不是隨便什麼人可以做的。在一個企業團隊里,架構師作為研發和管理骨幹,具有特殊的地位和權利。

知識結構的缺陷

。。。


架構師,程序員,產品經理的區別,大概就是建築行業里建築師,建築工人,甲方業主的區別。產品經理說我要建這麼這麼一棟樓,架構師說好吧,我來幫你看看是做成磚木結構還是框架結構,房型怎麼設計,水電氣怎麼布局,預算多少,然後程序員上陣,按照圖紙把樓建起來。運營是大樓的物業管理,負責營運大樓。

軟體開發越來越成為傳統行業(即便在互聯網企業),一個成熟的軟體團隊內部自然會分化出這些角色,各展所長。但非常不同的是,建築工人很少能自發成長為建築師,後者都是科班出身,因為建築學科已經高度發達,需要掌握結構力學,美學等技術,現在軟體行業還沒有這麼高的成熟度,程序員和架構師接受的都是一樣的計算機教育,所以程序員可以自學升級到架構師,走一條不同的升級打怪路線。

那麼,架構師是什麼人呢?

按所工作的不同軟體層分,有網路架構,系統架構,數據架構,業務架構,應用架構,平台架構。

按所解決的問題領域分,有電商架構,支付架構,搜索架構,安全架構,性能架構,遊戲架構,多媒體架構,等等等。

按其工作的深度來分,有集成架構,業務架構,模塊架構,框架架構,中間件架構,軟體架構,引擎架構,伺服器架構,甚至編程語言架構。

是不是太亂了?好比在設計師的世界觀里一切東西都需要設計。軟體也需要精心設計,在優秀的程序員眼裡,每一行代碼都需要架構!都體現了架構。

為了解決問題,程序員自然需要架構,他們中的佼佼者被冠以架構師的名號,獲得了一定的話語權,逐步成為一個職業分工,我想,這就是架構師的本來面目。


好多裁縫也做不了時裝設計師!


因為英語差


架構師不是程序員,視野決定高度


我倒覺得架構師更加做不了碼農_(:3」∠)_最近棄坑的首要原因是寫好了架構懶得實現細節


你要知道,程序員有三種:

1、設計師

2、工程師

3、代碼工人

根據金字塔原則,處於底層的代碼工人當然是數量最多的群體,而能勝任架構師的卻只是頂上的少數設計師


架構師首先是發現問題,然後用模式化的方法解決問題。發現問題那就需要經驗、需要遇到各種坑,最後分析問題,解決問題,中間需要各種發散和抽像歸納等。


因為大部分中小型軟體(項目)只談功能,不談架構。

一個初創的互聯網企業,起步往往就是公眾號+APP,運營一年下來用戶也就幾萬最多幾十萬,日活才幾千,沒有性能問題,也沒有很多子系統,於是既沒有技術架構,也沒有業務架構。

這種系統開發的唯一難度是需求,代碼方面說個不好聽只要參考書上Hello world的例子絕對夠用,至於資料庫,用SQLServer就能滿足。

如果這個企業長不大,這裡面的開發人員就沒有通過業務實戰架構的機會,如果這些開發人員換了工作還是搞小項目,就一直沒有搞架構的機會,怎麼可能成長為架構師。

我接觸過的架構師,基本搞大型項目練出來的,從業務說,大項目從業務需要接十幾個到幾十個網元(子系統),業務邏輯結構非常複雜,所以需要梳理業務架構;從技術說,動不動就是幾千萬用戶量,幾十萬的並發數,所以需要技術架構。

遇不到敵人,自然變不成老兵。


架構師需要思維嚴謹邏輯好,有一定程度的代碼潔癖追求精益求精,性格隨和不能對人刻薄,做事有計劃執行力強


為什麼大部分民工做不了包工頭?


幹活搬磚的需要有人啊,但是工頭數量有限啊。

:)


這句話我的理解是沒有思想 沒有自己的思維 寫出來的代碼就像車間造機器一樣,給你個模版 做就完事了,成為軟體架構師 他做出來還要自己修飾一番。。。這就是區別吧!


為什麼大部分公務員不能當省委書記?


很簡單,因為人的能力有限,可以不誇張地說,同行不同人的能力(綜合)可以差幾萬陪到幾十萬倍,所以有些人想做架構師,再練800年吧


做著做著程序員就成了期貨交易員了...


就像畫動漫的升級到畫原畫的。

我國古代數學歷史早,但是一直不成系統。

從「術」提煉出「道」,很難,這是規律。


為什麼大部分學生考不上985?


推薦閱讀:

大學可以逃課自主學習嗎?
求解一個C語言問題?
C++模板默認參數能不能是模板類本身?
在編程和演算法領域,有哪些經典問題?
有哪些適合實習程序員使用,性能上能媲美 Macbook Pro 的筆記本電腦值得推薦?

TAG:程序員 | 編程 | 軟體工程 | 軟體架構師 |