謝謝邀請!

作為一名IT行業的從業者,同時也是一名計算機專業的研究生導師,我來回答一下這個問題。

首先,目前IT行業內大量的程序員確實無法成長為架構師,主要原因集中在三點,其一是自身的知識結構不足以支撐向架構師方向發展;其二是崗位工作任務受限;其三是行業迭代速度太快,學習壓力較大。

早期的架構師主要集中在後端領域,針對於不同的開發領域,對於架構師的要求也不盡相同。總的來說,架構師的任務主要集中在三個方面,其一是整體技術框架設計;其二是技術選型;其三是解決難點問題。所以對於程序員來說,如果想成長為架構師,需要做好以下幾個方面的知識儲備:

第一:豐富的開發經驗。開發經驗通常是軟體架構師的基本要求,通常軟體架構師都是從初級程序員、主力程序員、研發級程序員等崗位一步一步成長起來的,每一個階段都會積累一定的開發經驗,這些經驗對於架構師的方案設計會起到重要的作用。對於大量的程序員來說,從主力程序員向研發級程序員發展會存在較大的困難,主要原因就是基礎知識結構的問題,不少程序員通過讀研的方式完成這一步升級。

第二:豐富的知識結構。架構師的知識結構不僅僅局限在技術層面,還需要掌握大量的行業知識,不同行業領域往往有不同的特點,要能夠根據這些特點來完成具體的方案設計。

第三:緊跟技術發展趨勢。架構師一定要緊跟技術發展趨勢,同時能夠對於未來的發展方向有較強的認知能力,這對於架構師的方案設計會起到重要的作用。對於技術趨勢的認知能力,是判斷一名架構師能力的重要因素。

我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智慧領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

如果有互聯網、大數據、人工智慧等方面的問題,或者是考研方面的問題,都可以在評論區留言!


架構師並不是一個很好玩的升級路線。

相對於架構師的開發工作。研發工作更有趣,更容易得到社會的承認,不論是圖形學,還是人工智慧,區塊鏈,甚至黑客(網路安全),憑藉你的智慧和努力,可以在短時間內取得成就,並達到一個很漂亮的高度。研發方面是拼年輕,智商和體力的工作,有眾多的天才少年取得漂亮的成果,每年有大量新的技術突破和文獻等著大家研究。你做的每一件事情,都能表現出漂亮的成果,全局光照,計算機視覺。或者很容易賺到很多的錢,自動駕駛或者區塊鏈ico,就算做遊戲外掛,其收入也大得超乎你的想像。

而架構師不是,架構師拼的只有經驗,正確的方法和項目數量。《C++程序設計新思維》裡面有一句話:「只有天才的程序員沒有天才的構架師。」 在構架師的世界裡不存在天才,只存在重構。一定要有正確的方法(敏捷開發),然後就是無數個項目和時間的鋪墊。然而對一個架構師應該明確,我們的職責是內部質量而不是外部質量,我們要把軟體做的強壯且易易擴展。但你會發現,對於外行麻瓜來說,這根本不吸引人,麻瓜老闆經常說一句話:你功能做不出來我們公司就破產了,別他媽的再花時間重構了。

至於為什麼架構師很少

內部原因是:架構師太無趣了,相對於圖形學光照演算法,你卻強調測試驅動重構持續集成。研發工程師會得到大量的外部激勵,所有人都去讚揚他們的成果。而構架師需要從自身產生激勵的能量,比如對代碼的潔癖,重構在不改變功能的情況下不斷優化代碼質量,一個分層,一個正確的依賴關係,甚至一個精簡美麗的命名,都需要由衷地感到興奮和刺激。否則很難熬下來。

外部原因是:浮躁的社會容不下一個架構師成長的時間和空間。一個框架師需要大量的項目經驗,超級長的編碼時間。堅持正確的方法和一個融洽配合的團隊。國外的架構師都是大鬍子,而國內程序員到30歲,老婆就催著要去做管理崗位了。和研發工作拼智商不同,架構師就拼的是經驗,沒大鬍子沒五六十歲很難成為xx之父這個級別。

行業原因是:架構師容不下架構師。架構是藝術不是科學,沒有一個統一的標準,每個成型的架構師心裡都有一套屬於自己的程序結構和原則,你可以看到十個圖形學程序員基於一個演算法合作,但你很難看到兩個架構師做一個項目不打架的。架構師需要有自己的團隊來驗證自己的觀點和共同進步,但就如同食肉動物永遠是食草動物的十分之一,行業也沒那麼多團隊給架構師來糟蹋。

經歷過很多項目洗禮,並有自己的想法和能力的架構師,必然是稀有動物。

但看起來無聊的架構師有什麼用呢?

他是輔助英雄,給整個團隊加各種屬性光環:降低代碼中的混亂(熵),讓團隊中初級的程序員做出高級的代碼,提高單位時間效率避免加班,讓團隊更容易進入未知領域,大幅度降低企業成本。

我現在做的混合現實領域,這是一個新的領域,有一個優秀的架構師可以在沒有前人經驗的情況下開疆闢土,並且可以帶起來整個團隊的開發質量,降低成本給客戶更多的獲利空間。


感謝邀請!

平常,開發的團隊一般都是10多人組成。幾個團隊間一般會存在一個技術面最廣、技術經驗較充足的人,叫做架構師或者說是TL。而架構師的存在,一般在眾多的碼農中占的比例少之又少,可能連碼農總人數的10% 都達不到。軟體架構師也存在初中高級。

碼農都會寫代碼,對計算機編程語言都有自身的理解。但是很多時候,程序員或者說是碼農只是機械的完成自身的編碼工作。為了完成任務,成長有限。

看到這裡,很多人都會說:編碼時間長了,經驗積累的足夠,自身也就逐漸成為了資深技術專家。想法其實不能說是不正確,在一個人見多識廣後,自然自身的內涵也就足夠的豐富。從碼農的角度出發。除了架構師,很少有35歲以上的人士會在互聯網做程序開發。而一個人想要通過機械性質的編碼積累經驗。需要多少年成長才能見多識廣呢?是否會有碼農堅持到那一時刻呢?一個值得商榷的問題?

碼農是一份年輕人為主的職業。平均從業者的年齡都是20多歲。慢慢熬、慢慢積累在碼農中也不能說錯。但是很多人在軟體開發領域積累一定的經驗後就會轉型不做開發。

所以說,長久時間的碼農很少。而在短暫的碼農開發軟體的工作中,脫穎而出,成長起來的人更少。

些許拙見,供您參考。

從事互聯網開發多年,歡迎大家騷擾


從事軟體開發多年,在編程行業真正的架構師比例少的可憐,就目前國內軟體開發環境而言,真正意義的架構師還不是很多,因為大部分的代碼框架幾乎從開源代碼社區裡面拿出來,然後定製成自己公司產品需要的,其中研究框架的時間比較長的,並且能夠深度定製的程序員就算是高手了,因為很多開源的代碼更新速度非常快速,能跟上開源社區的代碼更新速度的企業已經是實力非常強的公司了,國內企業現在真正意義上的從頭開始設計一個框架然後推向市場相對比較少。

國內軟體水平處於什麼狀態

經過十幾年的發展,國內編程人才的平均水平已經上來了,雖然在頂級程序員由於在編程底蘊以及生態系統這塊有差距,但基層的程序員水平已經上來了,國內很多互聯網公司做的產品有些已經不弱於歐美等企業,這些都是國內程序員水平提升的結果,而且現在由於培訓行業在國內普及,入門級別的程序員在國內數量巨大,所以很多人喊著國內程序員行業已經飽和了,已經不適合再去從事程序員的工作了。

事實上國內軟體行業內需依然足夠多,特別是現在的三四線城市都陸續出現了軟體公司,而且規模和數量都在提升,國內企業對中高級程序員的需求量還是非常巨大,五六年大小公司對於這類的人才招聘一直沒有停止過,而且薪資水平還維持在非常高的水準,了解這個行業現狀對於規劃自己的職業生涯還是有著非常大的好處。

如何成為優秀的程序員

架構師這種職位可遇不可求,基本上國內架構師都是自己本公司內的優秀的軟體工程師,成為了優秀的程序員並且在公司內部深得公司的信任願意給這種突破的機會,抓住了後邊的就會給與架構師的待遇,不是每個程序員天生就是做架構師的料,關鍵還在於平時的積累,有了機會抓住了,要成為架構師先要自己成為一個優秀的程序員,優秀的程序員需要具備什麼樣子的因素,現在就根據自己技術生涯的一些經歷分享給大家。

基本功紮實。很多程序員在入門之前由於在學校裡面比較重視基礎,還能看看基礎,在成為了程序員之後就開始放鬆了對這方面的要求,所以導致很多程序員見到有筆試的公司,直接就選擇了放棄走人,不能講這類的程序員水平不行,但起碼不是優秀程序員的範疇, 優秀的程序員是經得住基本功考驗的,是不怕這些所謂的筆試題目的。

演算法紮實。很多程序員做了很長時間還不覺得演算法挺重要,演算法貫穿整個技術生涯,如果沒有意識到這點說明意識層面還沒理解到,證明需要彌補的東西還是非常多,有些程序員可能是學習了一門編程語言就匆匆去找工作了,運氣還不錯還找到工作了,沒有很好的規劃技術生涯路線,一個標準的程序員需要的一門基礎的編程語言,熟悉數據結構,並且穿插著學習演算法,這三樣也是優秀程序員的標配,學習技術不是由著自己性子去做事,需要有規劃,這其中不能少了演算法的因子。

錘鍊編程思想。很多程序員覺得能夠寫代碼,時間長了經驗到位了慢慢就能熬成資深技術專家了,程序員不是靠著熬日子過的,需要不斷的提煉編程思想,舉個簡單的例子,做網路編程如果懂得了一門編程語言的編程經驗,相信切換到別的語言只需要很短時間內就能搞定,而且積累總結類似的場景以後遇到這種場景都能靈活應對,還能同步遷移到類似的場景,不能只是為了做而作,僅僅就是為了完成任務,那麼提升的空間有限,不能因為工作承擔的東西就這麼點,而不去補充其餘的東西,善於總結也是優秀程序員需要具備的一種意識。

成為架構師沒有所謂的模板,而且有些人一輩子也沒有這種機會,但想要達到這種境界就需要先讓自己成為一個優秀的程序員,這樣子遇到有理想的企業抓住機會就上去了,一旦進入這個級別後面的編程生涯就會有根本的變化了,關鍵在於平時一點一滴的積累,讓自己長期處於一種高效的學習狀態,有太多的程序員經歷了幾年的適應期就提前讓自己進入了舒適期,結果隨著年齡的增長技能沒有相應的跟上導致年齡大了競爭力下降,出現了老了被企業淘汰的悲劇,什麼樣子的態度決定什麼樣子的人生,也就決定了什麼樣子的結局,希望能幫到你。


個人認為架構師有如下特點和職責

1.對編程語言足夠深入,無論是基礎技術,還是所使用語言自身的技術實現,都要清楚。比如除了對java語言靈活運用,要深入理解jvm機制,編譯原理。

2.對行業所需要的連帶技術一樣要有足夠深度。比如要深入理解mysql存儲引擎機制,能夠發現這些中間件,框架存在的坑。

3.能夠根據現有業務提供領域模型,並落實

4.梳理系統性能,可靠性,安全性,做出合理的設計和改造

5.具有前瞻性,能夠把握技術方向,選型,不隨波,不盲目追新

6.有很強的溝通能力,領導能力,帶領團隊攻堅


真正的軟體架構師對各方面的職業素養都要求比較高。架構師的工作,不是平時工作的簡單堆疊,除了專業技能要過硬外,還要思維活,想東西細緻全面,需要自己去主動去接納工作以外的大量知識。此外,在性格方面也有一定要求,一個軟體架構師往往還需要具備善於溝通的品質。

總而言之就是要技術好、思維活、會交際。大多數程序員做不到架構師的位置主要是因為自身能力達不到,其次是一個公司裡面架構師佔比本來就想小。

第一:缺少接觸的機會

一般程序員在公司負責的工作主要是維護日常的需求,在原有的架構上進行修改,所以很少會接觸到架構層面的東西。長期缺少接觸相關的知識及業務的機會,久而久之離架構師的標準也會越來越遠。

第二:知識儲備受限

年輕的程序員在知識儲備上無法達到成為架構師的標準。

現代的高可用架構一般為:RDS、Cache、MQ、後端服務、監控服務。而隨便拿其中一個點,都有著非常多的技術點知識點需要掌握。

比如在多系統交互中,如何保證MQ中的消息能被對方系統消費,如何設計高可用的服務負載均衡,這些都是需要很多經驗才可以解決,但是一般的程序員又不容易接觸到架構設計。

而年紀大點的程序員要麼是後期缺少折騰的的動力,要麼在職業發展途徑走到不同的分岔路口,最終走上架構師這個樹枝上的寥寥無幾。

第三:安於現狀的心理

小富即安的心理。很多程序員滿足於現狀,缺少堅持不斷學習不斷提高的動力,每個月拿著萬把塊錢的工資,心安理得,懶得去折騰。

第四:架構師佔比的影響

一個公司架構師在廣大碼農裡面佔比還不到10%,能成為架構師的一般都在公司里擔任研發和管理的角色,想像一下公司團隊的人員金字塔你就知道競爭力有多大了。


1、碼農和架構師是兩個工種,而且簡直不一樣。

2、碼農只需要根據需求把程序實現。

3、架構師要掌握性能、網路、伺服器、數據、軟硬體、緩存、前後端框架、資料庫等項目開發中的無數個內容。

4、架構師還要能表達,把其他人說服。

5、架構師還要一定程度的考慮預算和商務問題。

6、架構師要熟悉多種編程語言和資料庫。


從統計角度看,這個問題有點像在問,一個班級,為什麼大部分同學當不了班長一樣。一個班較多的也就五個班長,一般都是兩個班長。架構師在工作組織中,本身就不需要佔整體人數的很高比例。一個工作小組,有一個架構師就夠了。所以,不談絕對的專業能力,只考慮相對能力,總會有一小部分人做架構師,而且只會是一小部分人。就算所有人都一樣牛逼,也只會有一小部分人幸運的做上架構師。這是工作組織的性質。不過,另一個角度,就是考慮時間的跨度,一個人一生是成長的,他20歲時,不是架構師,不一定在他30歲時就做不上,題目問的應該也是這個意思吧。如果是的話,那麼能做上架構師的占行業總人數比例應該比我說的上一個比例高一些。


醉了,又是有人說,讓說這話的人去搜集數據,我不要調查抽查,我要全國架構師和工程師,在職離職樣本量在100萬以上的數據,然後幫你做個數據分析,再看結果啊。美國人聽說地球是圓的,他們就買機票繞地球一圈,發現地球是真的圓的。中國人聽說地球是圓的,立刻去地平說的貼吧,發現地球是平的。。。。。證據,給我證據,不要沒有證據聽別人說啥就是啥。


缺少整體的指導性。架構師負責一整套軟體的設計和實現,理論上架構師的工作應該更傾向於top-level,細節的問題應該由開發者來實現。

而碼農就是所謂的開發者,如果碼農可以通過工作和學習掌握整套系統的架構和原理,那碼農就可以去做架構師,可以去合理而系統地設計一套產品出來,而不限於只是針對某個功能貢獻自己的一段代碼。


推薦閱讀:
相关文章