java后期发展方向_Java程序员的4个职业发展方向,该如何把握黄金5年?
在Java程序界流行著一種默認的說法叫“黃金5年”,意思是說,一個Java程序員從入職的時候算起,前五年我選擇直接影響著整個職業(yè)生涯的發(fā)展方向和薪資走向。
而這5年,也決定了一個程序員能否成為職業(yè)大牛的可能。那么,在這黃金5年,Java程序員如何做才能實現(xiàn)自我突破呢?
對初學者建議
首先,對尚未進入職場工作的在校生以及準備轉行Java的同學的建議:
一定要從最基礎的知識學起,學習Java基礎的時候,應該盡量多動手寫,寫出來運行一下,會發(fā)現(xiàn)很多問題。
學完基礎內容之后,對Java有一個基本的了解之后,不要著急著進入更高級的學習,嘗試用Java語言寫出一些簡單的程序鍛煉自己。
參加工作1-2年之間
在這段時間里,想必對Java已經(jīng)有了一個較為深入的了解。首先,要非常熟悉設計模式,日常要多看一些關于代碼編寫優(yōu)化的書,提高自己的代碼能力,能夠寫出一手優(yōu)雅的代碼;
其次,在工作過程中肯定接觸過并發(fā),應該更加深入地去了解并發(fā)的相關知識;
最后,要對所使用的框架和Java的類庫有一定的研究,還需要去看一些JDK中的類的源碼,包括自己日常所使用的框架的源碼。
總而言之,這個階段,需要做的是深入了解Java底層和Java類庫,也就是JVM和JDK的相關內容。
參加工作3-4年之間
處于這個階段,說實話很難再提升代碼能力了,因為這個階段的學習會比較多樣化。在前三年的工作中,相信或多或少都會接觸一些其它的技術,比如大數(shù)據(jù)、分布式緩存、分布式消息服務、分布式計算、軟負載均衡等技術,你能精通任何一項,都將是你未來面試時巨大的優(yōu)勢。
因此,如果自己對某一項技術感興趣,這時可以深入去研究,即使這項技術不一定會在工作時用到,但一定是相關的。
參加工作4-5年之間
到了這個階段,應該遇到了所謂的“技術瓶頸期”了。不要急于提高自己的技術,此時更重要的是提高你的影響力。可以嘗試去一些知名公司提高你的就業(yè)背景;也可以發(fā)表一些技術文章去影響更多的人;還可以去Github創(chuàng)建一個屬于自己的開源項目,打造屬于自己的產(chǎn)品。這個時候提高自己的影響力主要是可以給自己創(chuàng)造更多的機會,所以,這個階段最大的任務是提高自己的影響力,為未來工作生涯做準備。
對于軟件開發(fā)同學而言,首先要客觀認識自身的情況,想清楚自己現(xiàn)在要什么、未來要什么,做好職業(yè)規(guī)劃,從而選擇不同類型的企業(yè)。
Java程序員職業(yè)發(fā)展規(guī)劃和方向
走向架構師
程序員與架構師之間的主要區(qū)別是什么呢?
架構師,是Java開發(fā)人員非常向往的一個角色。架構師需要擁有完善和扎實的技術體系,具備較好系統(tǒng)分析和設計能力,豐富的項目研發(fā)經(jīng)驗。架構師是一個漫長的積累過程,大部分架構師的年齡在35歲左右,這個階段就是程序員的黃金期。程序員要向一名架構師發(fā)展,需要進一步加強技能的修養(yǎng)。對于互聯(lián)網(wǎng)公司來言,最重要的技能是對網(wǎng)絡和分布式系統(tǒng)的理解,比較麻煩的是分布式系統(tǒng),除了分布式,在現(xiàn)在大型互聯(lián)網(wǎng)企業(yè)中,還需掌握高性能、深入淺出、性能調優(yōu)、Spring、JVM等技術。
走向項目經(jīng)理
當然,也有一些運氣比較好的程序員,不但負責項目的設計工作,而且還負責項目的管理工作,對項目經(jīng)理這個工作有一定的嘗試。因此,這類程序員可以審視一下自己,是否合適這項工作,如果自己對這種工作比較滿意,而且具備項目經(jīng)理的要求,則可以向項目經(jīng)理這個方向發(fā)展。
項目經(jīng)理的工作重點已經(jīng)從編程轉移到對人、對技術、對進度、對項目的管理,因此,項目經(jīng)理必須要了解軟件開發(fā)的各個環(huán)節(jié)、了解開發(fā)的各種技術和運用、了解開發(fā)隊伍人員的水平和特點。在日常的工作和生活中就得側重鍛煉這方面的能力,還要學習一些項目管理的知識,例如:PMP、CMMI、敏捷開發(fā)管理等。
從程序員到項目經(jīng)理可以使項目經(jīng)理更好地理解程序員在項目中的地位和作用,了解軟件開發(fā)的各種規(guī)律性的東西,從而保證項目的正常完成。
而且,項目經(jīng)理的收入和地位在公司里也是比較高的,因此,走向項目經(jīng)理是程序員的另一個發(fā)展空間。
走向管理層
很多程序員希望自己能成為公司中的主管、或項目經(jīng)理等管理人員,無論是收入還是地位都會相對高一些。另外,還有一些程序員可能厭倦了日復一日枯燥而繁瑣的編程工作,希望借助走向管理崗擺脫這種步步緊逼的工作狀態(tài)。
當然,走向管理者就要求程序員要比一般人做更多的準備,做更多的轉型工作。
由于軟件公司的管理者不同于一般公司的管理者,專業(yè)能力越強,管理起來就越得心應手,沒有專業(yè)能力的管理,遇到的問題很多,也很難解決。
所以,想要往管理者發(fā)展的程序員,一定要把編程、項目設計、項目管理等基礎打好,這樣轉型到管理者成功率就會高一些,而且到時候也能更加得心應手。
Java程序員應該掌握的技術
通信協(xié)議
各個子系統(tǒng)之間要進行通信,必須要選擇一種或多種通信協(xié)議,現(xiàn)代比較常見的是基于HTTP的協(xié)議。所以,了解更多協(xié)議對于學習安全也有很大的幫助,比如MySQL和PostgreSQL的協(xié)議都有安全的設計。
序列化
系統(tǒng)之間通過網(wǎng)絡傳輸或者存儲到文件時,肯定只有一種格式,就是字符串。要將復雜的數(shù)據(jù)結構與字符串之間進行轉換,就需要用到序列化,簡單的序列化如JSON和XML,稍微復雜些的有protobuf、thrift等。
需要了解所有這些序列化方式之間的優(yōu)勢和劣勢。比如JSON和XML只能用于傳遞數(shù)據(jù),而protobuf與thrift還可以用來做RPC協(xié)議,至少要確保每種序列化方式都自己嘗試過hello world。
數(shù)據(jù)庫
要形成自己的數(shù)據(jù)庫選取風格,就需要先對自己常用的數(shù)據(jù)庫有足夠深入的了解。對于關系式數(shù)據(jù)庫,除了一般的Create、Query、Delete、Update操作外,還需要能自行建立索引、數(shù)據(jù)庫的平行擴展、了解如何進行性能調試,以及了解常見查詢操作的性能級別、常見的查詢性能瓶頸點。
存儲
需要關注的是每個目錄下的文件數(shù)不應該太多,當一個目錄下文件數(shù)(實際是inode數(shù)量,包括文件和目錄)超過1000時,性能就很差了。所以,建議將一個系統(tǒng)中要存儲的對象ID做16進制,隨后每2位16進制做成一級目錄,這樣可以確保每個目錄下的文件數(shù)不會超過256個。現(xiàn)代云計算,如Amazon S3已經(jīng)把存儲的問題解決的很好了,如果可能,盡量用好。
應用框架
多注意了解自己關注方向的所有框架的優(yōu)勢和劣勢,選擇最適合自己的,而不是選擇最新的。接口
主要是指接口協(xié)議,或者RPC協(xié)議。系統(tǒng)之間進行RPC調用很常見,注意選擇自己能熟練使用的,并且有所深入研究,并了解其常見的限制。RESTful API就是個比較常見的選擇,但是性能并不好,自己要對性能等參數(shù)有量化的了解,而不是簡單的一句好或不好。短連接接口在三次握手時是串行操作,要了解其為何耗時。
除了要在如上的各種不可或缺的組成部分中有所了解,還要能清楚地知道一些常用系統(tǒng)模塊的原理,并能夠很深入的玩起來。
幾個值得注意的方面:
1、HTTP服務器:常見的無非是nginx、apache,自己要能進行基本配置,包括靜態(tài)文件、fastcgi轉發(fā)等。
2、 關系式數(shù)據(jù)庫:常見的如mysql、postgresql、sqlite,自己要對每一種都有深入的了解,可以做一遍常見操作的性能測試,并牢記于心。比如sqlite雖然并不需要走網(wǎng)絡,但是實際查詢性能很差。
3、NoSQL數(shù)據(jù)庫:memcache、redis、mongodb等,近幾年有很多,挨個了解其實現(xiàn)原理,以及各種常用操作的性能,當有需要時,隨時能拿得出手來用。
4、云計算平臺:幾種常見的云計算平臺的應用方式要有了解,如Google的資源方式和Amazon的VPS方式,每種云計算平臺往往還會提供一大堆附加服務,比如可靠數(shù)據(jù)庫,存儲,緩存等,也要分別有所了解。
5、 加密/簽名技術:常見如truecrypt、openssl、gnu pg、sha1、md5、scrypt等,了解各種加密/簽名技術的安全性、字長等,并都能自己做過hello world。
原作者:Java后端進階
原文鏈接:Java程序員的4個職業(yè)發(fā)展方向,該如何把握黃金5年?
原出處:公眾號
總結
以上是生活随笔為你收集整理的java后期发展方向_Java程序员的4个职业发展方向,该如何把握黄金5年?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux(Ubuntu 19.10)下
- 下一篇: java中为什么设计包装类,Java 中