架構師一般做到多少歲_《迷茫中的我們該如何突破瓶頸——成長為一名架構師》...

dce1cea2d908c97ad9ff1f10af406ad6.png

如何成長為一名架構師?

架構師是一個既需要掌控整體又需要洞悉局部瓶頸并依據具體的業務場景給出解決方案的團隊領導型人物。一個架構師得需要足夠的想像力,能把各種目標需求進行不同維度的擴展,為目標客戶提供更為全面的需求清單。很多程序員想成為一名架構師,但是對于其中的技能掌握程度,以及編程功底的要求?設計能力的要求有哪些?

我簡要從以下6點經驗來談,從技能的角度拋磚引玉。

88b3bb33687b11a5c3a42cd565b0da8b.png

一、編程基本功:數據結構和算法

1.數據結構相關的哈希表、鏈表、二叉樹等等

2.常見的算法有哪些?至少下圖的算法我認為應該要掌握。

比如:HashMap如何擴容,重點就是考底層數據結構。

5ac9b7871b38e7ce5b3be18f5025e910.png

二、編程基本功:Java編程

這些都算是編程基本功底:多線程、JVM、并發容器、并發類、NIO等。

7dc0a8dcfc276bfe503f7839635c2e30.png

三、Web開發

其實web開發這個領域,如果你要掌握好了,發展也非常不錯的。

比如:現在的H5、小程序等,對于掌握前端技術的開發人員,競爭力也是杠杠的。

當然作為后端開發人員,多掌握點前端的技術,那也是必須的。

47c4918d8c6bcf8f647bf998e29f8823.png

四、數據庫

重點就看圖了,這里涉及的技術還是蠻多的,mysql、oracle、nosql相關的mongodb,以及如今大家都熟知的分庫分表、讀寫分離等技術。

這些都是大家熟知的,我補充點設計相關的:數據庫設計范式、索引、事務、數據庫相關的慢查詢、長事務。

這些也算是數據庫技術的編程功底。

bfeafb62c31ddb0b33e0f69cbf211fec.png

五、研發相關的框架工具

Java程序員對于下圖應該都是比較熟悉的,這些框架與工具都是經常使用。

aa697ffcb04dfe8117ef5ca5f177bf2f.png

六、架構設計

談到設計,就不得不提到項目中的概要設計和詳細設計,這就會涉及到UML。

除此之外,整個項目的設計,這個時候考驗你的架構設計能力。

35de371095b3b0f88b9918d2c4f7ad71.png

這里的架構設計,包含的系列非常多,特別是Redis、應用程序拆分、拆分后涉及到的RPC微服務等技術,以及后端數據庫的拆分技術,以及拆分后的分布式集群部署。

程序員如何突破成長瓶頸?

對工作1-3年的程序員來說,依據個人情況提前規劃未來職業發展方向,這很重要。譬如,在未來3-5年甚至更久,工作要做到什么程度?往哪個方向發展?通過怎樣的路徑才能實現目標?如果沉浸在當下“程序員高薪”的論調中歲月靜好,總歸有一天會面臨網上熱議的“程序員中年危機”,以至于最后不得不步入轉行或提前退休的尷尬局面。

作為經常跟IT人接觸的我,我一直認為這個話題對程序員非常重要,今天和大家詳細聊聊。

職業規劃的重要性

人生和職場就像下象棋,你只有明確了目標才不會在每一步上迷茫,之所有迷茫,是因為不清楚自己最終想要什么,下一個階段的目標在哪里?

某公司表示薪資上浮20%-30%,我應該跳槽加入嗎?

我最近收到了幾個offer,應該去哪一家更好?

從大公司去小公司,是否值得去嘗試?

想成為架構師,但不知道自己的技術是否能勝任?

從程序員轉行,但不知道未來自己的競爭力會變弱嗎?

……

其實,追求短期利益(眼前)或長期利益(未來),取決于你自己的決定。

我的建議是,不要在你經歷之后,再去回顧職業生涯,初期跳槽漲薪確實很快,但到了中后期,跳槽再也帶不來前期的漲幅,反而在頻繁的跳槽過程中,失去了很多機會,技能與業務的能力也沒能積累沉淀下來,這將直接導致很多人在即將步入中年時感到異常焦慮,不知道自己未來的路何去何從。

跳槽和轉行如果僅僅只是工作逃避的手段,未來你將面臨更大的焦慮,未來也根本談不上什么有什么核心競爭力。但如果跳槽和轉行,是謀定而后動,圍繞你的主線職業去發展,這是完全不一樣的結果。

總之,在職業的選擇上,絕不能有“逃避”二字,逃避將會讓你無處藏身,你只有明白了這個道理,你才會去克服眼前的困難,學會承擔,這樣的人生才有未來。

程序員的職業發展方向

1、架構師(專注技術,側重技術)

每一個程序員都有一個架構師的夢想,這個方向是很多技術人的第一選擇,從年薪十幾萬的程序員成長為年薪幾十萬甚至過百萬的架構師,給力的薪酬已足以讓不少程序員心動不已。若未來你想成為架構師,那么現在至少需要清楚了解架構師的主要職責是什么?有目標有方向地堅持學習。

2、項目經理(技術一般,側重管理)

往管理方向發展的職業路徑,項目經理主要側重于項目管理工作,主要能力是計劃、溝通及組織協調。溝通和表達是開發人員短柄,所以想往此線路發展的同學,從日常的工作、生活中就得逐步加強鍛煉這方面能力。

3、技術經理(技術和管理結合)

技術經理需要帶領團隊前行,在國內的技術經理,大部分都在30歲左右。一般,程序員在30歲是一個職業分水嶺。

技術經理的這個階段的工作重點不再是專注于技術,而是在培養團隊,帶領團隊為主。如果你沒有讓團隊的成員變得更好,沒有分享,沒有利益分享的想法,沒有去幫助大家成長的想法,這樣的程序員不太適合這個崗位。

總之,這個職位成全大家而不是自己才是重點。

4、產品經理(轉崗)

如果你對技術發展路徑、管理發展路徑都不感興趣,那么不妨考慮轉產品經理,移動互聯網時代,產品經理的角色越來越重要,一個好的產品經理有可能帶給公司顛覆性的發展,收入各方面也還不錯,我認識的一些程序員,也有轉行做產品經理,并且做得還不錯的。

5、CTO(管理+技術結合,側重管理)

需要有一定的技術能力和團隊管理能力。CTO的工作更偏業務、偏管理,以及商業等,主要職責包括團隊管理、開發流程、公司戰略、業務增長以及各類技術疑難問題的解決等,可以說是一個比較全方位的發展方向,一句話,CTO的主要職能是管理+技術+業務+商業的綜合發展。

成長為Java架構師必須突破的11個技術點

1、Java基礎技術體系掌握牢固:

JVM內存分配

垃圾回收

類裝載機制

JVM性能優化

反射機制

多線程

網絡編程

常用數據結構和相關算法

2、對面向對象的軟件開發思想有清晰的認識、熟悉掌握常用的設計模式:

熟練使用UML工具以及各種流程圖

經典的設計模式會手寫以及熟知使用場景

概要設計與詳細設計

面向對象的核心思想需要運用在代碼編程中,例如:高內聚低耦合

3、目前流行開源框架,除了熟練使用,還需要掌握核心原理和實現

Spring

Springmvc

MyBatis

建議看源碼以及debug配合掌握實現原理。

4、熟悉Oracle、MySQL等SQL,以及MongoDB等NoSQL開發。

特別是MySQL,相關的索引優化、SQL查詢優化、慢的事務優化等,以及MySQL的分庫分表等也需要掌握。

MongoDB等典型的NoSQL大數據場景設計

5、CDN,以及分布式緩存系統Redis或 Memcached的設計和研發

CDN與分布式緩存的設計原理其實是一致的,重點你需要掌握兩者之間的區別和使用場景。

6、熟悉底層中間件等分布式技術

分布式技術涉及范圍比較廣,例如相關的消息中間件就會涉及到3個以上,為什么要選擇Kafka或者

RabbitMQ,選擇和比較需要掌握。

除此之外,很多內部系統還會涉及到JBPM工作流中間件等。

7、精通shell編程,熟練應用awk、sed、grep、strace、tcudump、gdb等常用命令。

8、有大型分布式、高并發、高負載(大數據量)、高可用性系統設計開發經驗。

大型分布式就會設計到高并發解決方案,以下有相關的知識。

9、對配置管理和敏捷研發模式有所了解。

jekins、nexus、git等

敏捷開發、極限編程等。

10、熟悉常見的一些解決方案及其原理

單點登錄、分布式緩存、SOA、全文檢索、消息中間件,負載均衡、連接池、流計算等。

11、能大概知道市面上主流技術的特點及業務瓶頸

例如秒殺系統等如何設計。

總結

不管選擇什么樣的路徑,都離不開提前規劃、充分準備,機會總會留給有準備的人。程序員是個相對公平的職業,你若盛開,蝴蝶自來,薪酬也會隨能力得到明顯增幅,那么大家在應對中年危機時更加游刃有余了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534823.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534823.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php-fpm初始化失敗,FPM的初始化 - [ PHP7的內核剖析 ] - 在線原生手冊 - php中文網

FPM的初始化接下來看下fpm的啟動流程,從main()函數開始://sapi/fpm/fpm/fpm_main.cint main(int argc, char *argv[]){... //注冊SAPI:將全局變量sapi_module設置為cgi_sapi_modulesapi_startup(&cgi_sapi_module);... //執行php_module_staru…

python 高級語言特性_Pytohon學習筆記(一)Python編程語言歷史及特性

Python編程語言歷史及特性編程語言:用戶:問題空間計算機: 解決問題解空間抽象機器代碼-->微碼編程-->高級語言shell編程:ptyhon控制語言:膠水語言適合領域:web,Django字節碼:bytecode面向過程:以指令為中心,由指令處理數據 如何組織代碼結局問題面向對象:以數…

php laravel 返回統一格式,封裝的統一的Laravel響應類,返回數據類

封裝的統一的Laravel返回數據類namespace App\Library;class Response{const OK 0;const BAD_REQUEST 1000;const PARAM_ERROR 1001;const SQL_ERROR 4000;const FORBIDDEN 4003;const SERVER_ERROR 5000;public static $errMsg [self::BAD_REQUEST > 請求錯誤,self:…

python3連接數據庫步驟_Python3連接Mysql8.0遇到的問題及處理步驟

最近在使用Python開發系統,需連接mysql數據庫,我用的是Python3連接MySQL8.0,其中老是報錯以下問題:網上給了各種各樣的方法,大多是通過各種方式修改密碼。最簡單的方法是更換了root密碼的認證方式解決的,新…

360手柄搖桿漂移修復_徹底解決你的Switch手柄搖桿問題,最省錢的完美修復。

我想很多Switch的消費者都遇到了一個問題,用久了之后的手柄失靈,移動不精準,卡頓,自動位移等現象。玩個游戲都非常的糟心。動一下搖桿角色都會自動移動...這些問題的出現主要原因是搖桿內部進了灰塵,才導致各種現象的出…

libzdb 連接mysql,數據庫連接池庫libzdb使用教程

Libzdb挺強大, 支持Mysql Oracle SQLite PostgreSQL,支持C和C Object C,不能在Window下用(看源碼是因為基于Linux線程機制編寫實現)。遺憾的是找個資料太費勁,只能到Libzdb官網:點此進入 ,今正看著上面英文…

請給出計算231-1的python表達式_【填空題】計算2 32 -1的Python表達式可以書寫為____...

【填空題】計算2 32 -1的Python表達式可以書寫為____更多相關問題【判斷題】軍隊和國防建設指導思想實行戰略轉變的實質是:從立足于早打、大打、打核戰爭的臨戰準備狀況,轉到和平時期建設的軌道上來。【單選題】社會學家認為,一門專業必須具有專業特征,護理專業的特征是( )A. 滿…

數值分析方程求根實驗matlab,數值分析實驗之非線性方程求根(MATLAB實現)

一、實驗目的1. 了解一般非線性方程的求根是比較復雜的事情:要討論(或知道)它有無實根,有多少實根;知道求近似根常用的幾種方法,每種方法的特點是什么。2. 用通過二分法(區間半分法)、不動點(也Picard)迭代…

python多線程輸出_萌新python多線程

剛開始學習多線程的時候鬧了個笑話在使用python線程打印東西的時候發現自己定的的線程數據沒有打印,找半天都沒有找到問題,也沒好意思問,自己憋了半天才發現問題!代碼如下:import threadingdef SayHi():print(say hi !)def SeyHello():print(say hello !)print(start)threading…

php5.6擴展編寫,php 5.6版本中編寫一個PHP擴展的簡單示例

php 5.6版本中編寫一個PHP擴展的簡單示例這篇文章主要介紹了php 5.6版本中編寫一個PHP擴展的簡單示例,本文給出擴展實現代碼、編譯方法、配置方法和使用例子等內容,需要的朋友可以參考下有時候在php本身沒有滿足需求的api時候,需要自己寫相應的擴展,擴展…

iis php 數據庫亂碼,如何解決php插入數據亂碼問題

php插入數據亂碼的解決辦法:首先要設置數據表的字符集為utf8;然后修改字符集格式;接著建立字符集為utf-8的數據庫;最后通過php mysql語句插入數據即可。mysql數據庫亂碼問題解決辦法我們在使用數據庫(mysql)的時候最怕的就是數據庫…

python 文檔字符串_新款Python文檔字符串生成器來了

又一款懶人神器問世了:Visual Studio Code的擴展,基于CodeBERT的Python文檔字符串生成器。看來現在,這群偷「懶」的程序員們連文檔字符串都不想自己寫了。基于CodeBERT的生成器跟正常的DocStrings用法一樣,你只需要輸入三引號「“…

php 棧實現歷史記錄后退,棧:如何實現瀏覽器的前進和后退功能

受限制的線性表先進后出實現一個棧數組實現叫順序棧public class ArrayStack {private String[] items;//存儲數據的數組private int count;//棧中的元素private int n;//棧的大小public ArrayStack(int n){this.items new String[n];this.n n;this.count 0;}//入棧操作publ…

vc 通過句柄修改窗口大小_VC應用(1)通過VC修改銷售訂單行項目的字段

VC是SAP中非常重要的功能,過去多年來,我參與了不少使用VC的項目,我將通過多篇文章介紹VC的一些應用,本文介紹通過VC修改銷售訂單行項目的字段01 概覽在銷售訂單創建時,對于可配置物料來說,不同的配置可能會…

mysql增加實例,MySQL的簡單使用筆記:增加實例以及啟動

增加實例增加實例這里指的的在源碼編譯安裝完MySQL之后建立一個初始的數據庫實例,占用某一端口,或者是使用新端口啟動新的mysqld進程。MySQL需要一些基礎的數據庫以及表來完成基本的設定,比如控制連接的mysql.user表:123456789101…

springboot starter工作原理_98,談談SpringBoot的工作原理

對技術的探索,一切源于好奇心,保持好奇心,才能讓人更年輕。至今,我們已經有了很多創建SpringBoot項目的經驗,比如我們要創建一個支持web開發的項目,我們只需要引入web-starter模塊即可。那么,Sp…

精英主義 遺傳算法 matlab,遺傳算法優化 - osc_lfs4vsih的個人空間 - OSCHINA - 中文開源技術交流社區...

1.遺傳算法簡介遺傳算法是一種基于自然選擇和群體遺傳機理的搜索算法,它模擬了自然選擇和自然遺傳過程中的繁殖、雜交和突變現象.再利用遺傳算法求解問題時,問題的每一個可能解都被編碼成一個“染色體”,即個體,若干個個體構成了群體(所有可能解).在遺傳算法開始時,總是隨機的產…

python 類靜態屬性_如何從Python中的類中引用靜態屬性?

您面臨的問題是因為您不了解類聲明的作用域是如何工作的。類聲明在其自己的作用域內執行。執行完成后,將創建一個新的類對象,并將獲得的范圍作為其__dict__附加到該類。在注意:類范圍是從方法范圍內搜索的而不是!這意味著當在方法…

php后臺管理員登錄密碼錯誤,如果后臺管理員的密碼錯誤,我該怎么辦,還有兩種找回密碼的方法...

Dedecms是中國著名的網站管理核心. 由于編織夢想簡單易用,因此可以進行二次開發,并且可以實現各種網站. 在使用dedecms的過程中,如果忘記了夢想管理后臺的密碼怎么辦?神山個人博客分享了兩種修改(重置)管理員密碼的方法.1. 下載織…

python logging模塊 默認_python logging模塊

函數式簡單配置importlogginglogging.debug(debug message) #計算或者工作的細節logging.info(info message) #記錄一些用戶的增刪改查的操作logging.warning(warning message) #警告操作logging.error(error message) #警告操作logging.critical(critical message) #批判的 直…