當前位置:
首頁 > 最新 > 想要成為架構師拿高薪,不要只是嘴上說說而已

想要成為架構師拿高薪,不要只是嘴上說說而已

成功的反義詞不是失敗,而是從未行動。有一天你總會明白,遺憾比失敗更讓你難以面對。

不是所有人都有義務忍受你的不足帶給他們的痛苦。無論是誰既然選擇包容你,那麼你就要懂事,知理,懂得感恩。

今天評論了很多博客,突然理解評博客的好處,既有技術上的拓展,又有心靈的洗禮。吾日三省吾身,只說不做,有何價值。

其實回想以往的經歷,不是沒有改變,只是相比改變的速度比較慢,可是時代就是這樣的,都在飛速進步,不用停下腳步,只有腳步稍慢就是自己的錯,跟不上速度的那就需要更加努力吧。

每個程序員、或者說每個工作者都應該有自己的職業規劃,如果看到這裡的朋友沒有自己的職業規劃,希望你可以思考一下自己的將來。

LZ常常思考自己的未來,也從自己的思考中總結出了一些東西。LZ認為一名程序員應該有幾個階段(以下時間都算上實習期):

第一階段—-三年

我認為三年對於程序員來說是第一個門檻,這個階段將會淘汰掉一批不適合寫代碼的人。這一階段,我們走出校園,邁入社會,成為一名程序員,正式從書本上的內容邁向真正的企業級開發。我們知道如何團隊協作、如何使用項目管理工具、項目版本如何控制、我們寫的代碼如何測試如何在線上運行等等,積累了一定的開發經驗,也對代碼有了一定深入的認識,是一個比較純粹的Coder的階段

第二階段—-五年

五年又是區分程序員的第二個門檻。有些人在三年里,除了完成工作,在空餘時間基本不會研究別的東西,這些人永遠就是個Coder,年紀大一些勢必被更年輕的人給頂替;有些人在三年里,除了寫代碼之外,還熱衷於研究各種技術實現細節、看了N多好書、寫一些博客、在Github上分享技術,這些人在五年後必然具備在技術上獨當一面的能力並且清楚自己未來的發展方向,從一個Coder逐步走向系統分析師或是架構師,成為項目組中不可或缺的人物

第三階段—-十年

十年又是另一個門檻了,轉行或是繼續做一名程序員就在這個節點上。如果在前幾年就抱定不轉行的思路並且為之努力的話,那麼在十年的這個節點上,有些人必然成長為一名對行業有著深入認識、對技術有著深入認識、能從零開始對一個產品進行分析的程序員,這樣的人在公司基本擔任的都是CTO、技術專家、首席架構師等最關鍵的職位,這對於自己絕對是一件榮耀的事,當然老闆在經濟上也絕不會虧待你

Java程序員你是否有了明確的職業發展規劃?

就現在經濟大環境而言,很不樂觀,Java程序員的日子也很不好過,無論是還在找工作的、還是已經入職多年、哪怕做到項目經理技術經理的,壓力都異常巨大,似乎處處充滿危機。但是,仔細分析一下,出路還是有的,甚至解決溫飽、過上有房有車沒貸款的生活也是很可能的。首先,在如今這個浮躁的社會,大多數人的心態也是浮躁的,只要你能潛下心來,深入研究某個技術,有了一技之長,溫飽問題肯定就可以先解決了。

1、 走向架構師

對於任何一個Java開發人員來說,架構師都是一個令人嚮往的角色。那麼從程序員與架構師有沒有比較明顯的區別呢?其實架構師和程序員的界限並不是很大,比如現在仍然在每天寫代碼。其實成長首先來自於自身的學習,而閱讀成熟項目的代碼會使人受益匪淺,其次就是來自於所從事領域的經驗,要了解分散式系統的特點,在做項目時,要能夠關注性能、擴展性、可靠性、可用性等指標。

架構師其實就是一個漫長的積累過程,從準備期到動蕩期我們都是不停的探索,學習。大部分的架構師的年齡都是在35歲左右,這個階段就是程序員的黃金期。那麼我們如何以一個架構師的標準來加強自己的能力呢?程序員要成為一名架構師發展,需要進一步加強技能的修養。,對於互聯網公司來言,最重要的技能是對網路和分散式系統的理解,網路上面的書籍很多,比較麻煩的是分散式系統,除了分散式在現在大型互聯網企業中,對於技術知識,個人推薦還得掌握高性能、深入淺出。性能調優、Spring,JVM等技術。當然了,良好的駕馭管理開發團隊的能力,良好的人格修養,能夠讓架構師在開發項目中遊刃有餘,不會出現意料之外的干擾,更能從內散發出人格魅力。

2、 走向項目經理

也有一些程序員工作機遇比較好,不但負責了項目的設計工作,而且負責了項目管理工作。對項目經理這個工作有了一定的嘗試。因此,這類程序員可以審視一下自己,是否合適這項工作。如果自己對這種工作比較滿意,而且具備項目經理的要求,則可以向項目經理這個方向發展。項目經理承擔著項目管理的職責,對項目負主 要責任。它和程序員的作用也不相同,項目經理的重點已經從編程轉移到對人、對技術、對進度、對項目的管理。由於軟體的項目經理與軟體項目的相關性太大,因 此,他必須要了解軟體開發的各個環節、了解開發的各種技術和運用、了解開發隊伍人員的水平和特點。所以他依舊和程序員脫不了干係。從程序員到項目經理可以使得項目經理更好地理解程序員在項目中的地位和作用,了解軟體開發的各種規律性的東西。從而保證項目的正常完成。而且,項目經理的收入在公司中的地位也是 比較高的。因此,我認為走向項目經理是程序員的另一個發展空間。我想提醒一下,程序員在擔任項目經理之前最好要把軟體設計工作做好,這樣在做項目經理的時 候,就會有很好的基礎。

3、 走向管理者

很多程序員希望自己能成為公司中的主管、經理、老總、老闆,這樣無論是收入和在公司的地位都相對比較高一些。另外,一方面程序員可能厭倦了年復一年的編程工作,對工作產生了抵觸情緒,希望能擺脫這種步步緊逼的工作狀態。走向管理者其實要求程序員要比一般人做更多的準備,要做更多的轉型工作,並不是想當管理者 就能成為管理者的。但是,如果程序員有這個志向和愛好,有積累了這方面的工作經驗,自己也感覺在這個方面能夠發展,更重要的是有這樣的機會,走向管理者也 是可能的。由於軟體公司的管理者畢竟不同於一般公司的管理者,專業能力越強,管理起來就越得心應手的,沒有專業能力的管理,遇到的問題很多,也很難解決。 因此,我的建議程序員最好要把編程、項目設計、項目管理等基礎打打好。這樣轉型到管理者成功率就會高一些。

4、 原地踏步

當然也有一些程序員惰性比較大,滿足於現狀,享受著眼前的勝利果實,也無可非議。對待這些程序員,我們不要強求他們改變自己的想法,我建議是原地發展,把本職工作做得更好,把自己的技術水平往上再提高一步。在這個過程中他們的能力和自信心都會得到提高,他們的想法不會一直一成不變的。磨刀不誤砍柴功,刀快了自然會去砍柴的。

不管做哪一行,都該儘早做好職業規劃,人都是需要有一個目標去激勵自己,Java程序員更是如此。朝著一個目標逐步提升自身實力總會比原地打轉好,相信聰明的你該知道怎麼做。

據不完全統計,截至目前(2017.07)為止,中國Java程序員的數量已經超過了100萬。而且,隨著IT培訓業的持續發展和大量的應屆畢業生進入社會,Java程序員面臨的競爭壓力越來越大。那麼,作為一名Java程序員,怎樣努力才能快速成長為一名高級的程序員或者架構師,或者說一名優秀的高級工程師或架構師應該有怎樣的技術知識體系,這不僅是一個剛剛踏入職場的初級程序員,也是工作三五年之後開始迷茫的老程序員,都必須要面對和想明白的問題。

Java程序員的基本技能

基本語法

這包括static、final、transient等關鍵字的作用,foreach循環的原理等等。今天面試我問你static關鍵字有哪些作用,如果你答出static修飾變數、修飾方法我會認為你合格,答出靜態塊,我會認為你不錯,答出靜態內部類我會認為你很好,答出靜態導包我會對你很滿意,因為能看出你非常熱衷研究技術。

集合

非常重要,也是必問的內容。基本上就是List、Map、Set,問的是各種實現類的底層實現原理,實現類的優缺點。

集合要掌握的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的實現原理,能流利作答,當然能掌握CopyOnWrite容器和Queue是再好不過的了。另外多說一句,ConcurrentHashMap的問題在面試中問得特別多,大概是因為這個類可以衍生出非常多的問題,關於ConcurrentHashMap,我給網友朋友們提供三點回答或者是研究方向:

ConcurrentHashMap的鎖分段技術

ConcurrentHashMap的讀是否要加鎖,為什麼

ConcurrentHashMap的迭代器是強一致性的迭代器還是弱一致性的迭代器

設計模式

當然咱們不能這麼功利,為了面試而學習,設計模式在工作中還是非常重要、非常有用的,23種設計模式中重點研究常用的十來種就可以了,面試中關於設計模式的問答主要是三個方向:

你的項目中用到了哪些設計模式,如何使用

知道常用設計模式的優缺點

能畫出常用設計模式的UML圖

多線程

這也是必問的一塊了。因為三年工作經驗,所以基本上不會再問你怎麼實現多線程了,會問得深入一些比如說Thread和Runnable的區別和聯繫、多次start一個線程會怎麼樣、線程有哪些狀態。當然這只是最基本的,出乎意料地,幾次面試幾乎都被同時問到了一個問題,問法不盡相同,總結起來是這麼一個意思:

假如有Thread1、Thread2、ThreaD3、Thread4四條線程分別統計C、D、E、F四個盤的大小,所有線程都統計完畢交給Thread5線程去做匯總,應當如何實現?

JDK源碼

要想拿高工資,JDK源碼不可不讀。上面的內容可能還和具體場景聯繫起來,JDK源碼就是實打實地看你平時是不是愛鑽研了。面試過程中被問了不少JDK源碼的問題,其中最刁鑽的一個問了String的hashCode()方法是怎麼實現的,幸好平時String源代碼看得多,答了個大概。JDK源碼其實沒什麼好總結的,純粹看個人,總結一下比較重要的源碼:

List、Map、Set實現類的源代碼

ReentrantLock、AQS的源代碼

AtomicInteger的實現原理,主要能說清楚CAS機制並且AtomicInteger是如何利用CAS機制實現的

線程池的實現原理

Object類中的方法以及每個方法的作用

框架

老生常談,面試必問的東西。一般來說會問你一下你們項目中使用的框架,然後給你一些場景問你用框架怎麼做,比如我想要在Spring初始化bean的時候做一些事情該怎麼做、想要在bean銷毀的時候做一些事情該怎麼做、MyBatis中$和#的區別等等,這些都比較實際了,平時積累得好、有多學習框架的使用細節自然都不成問題。

資料庫

資料庫十有八九也都會問到。一些基本的像union和union all的區別、left join、幾種索引及其區別就不談了,比較重要的就是資料庫性能的優化,如果對於資料庫的性能優化一竅不通,那麼有時間,還是建議你在面試前花一兩天專門把SQL基礎和SQL優化的內容準備一下。

不過資料庫倒是不用擔心,一家公司往往有很多部門,如果你對資料庫不熟悉而基本技術又非常好,九成都是會要你的,估計會先把你放到對資料庫使用不是要求非常高的部門鍛煉一下。

數據結構和演算法分析

數據結構和演算法分析,對於一名程序員來說,會比不會好而且在工作中絕對能派上用場。數組、鏈表是基礎,棧和隊列深入一些但也不難,樹挺重要的,比較重要的樹AVL樹、紅黑樹,可以不了解它們的具體實現,但是要知道什麼是二叉查找樹、什麼是平衡樹,AVL樹和紅黑樹的區別。記得某次面試,某個面試官和我聊到了資料庫的索引,他問我:

你知道索引使用的是哪種數據結構實現嗎?

Java虛擬機

談談Java虛擬機中比較重要的內容:

Java虛擬機的內存布局

GC演算法及幾種垃圾收集器

類載入機制,也就是雙親委派模型

Java內存模型

happens-before規則

volatile關鍵字使用規則

這還只是Java程序員的最基本要求,你不可能在基礎的程序員上面干一輩子所以我們只會慢慢的往上走,下面是我收藏的一個系統的學習圖譜,如果需要可以加入我的Java架構/分散式/高性能交流學習群:454377428

以下是我收藏的一個系統學習的圖譜,一個七個專題:

並發編程專題

源碼分析專題

性能優化團隊協作專題

微服務架構專題

項目實戰專題

分散式架構專題

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java進階 的精彩文章:

資深架構師親述自己從一名碼農進階架構師的程序人生

TAG:java進階 |