03.05 碼了幾年代碼的程序員,有一定的開發經驗應該如何提升自己?

韓雨虹


一位優秀的Java程序員應該具備哪些技能?寫了幾年代碼了,我該如何提升自己?這是大多數工作1-3年Java程序員們都關心的問題。


1、高級程序員/架構師技能圖譜

現將我整理的一份高級Java程序員技能樹分享給大家,希望能給工作1-3年的程序員們釐清思路、指明方向。




由於篇幅關係,還有很多技能樹內容就不一 一列舉了,想要領取完整學習技能圖譜,文末有領取方法。


2、深度基礎上延展廣度

我在這裡先說明一下,技能樹所列舉的內容並不是讓大家全部都要會,這既不科學也不現實,建議大家先專注1-2門深入鑽研做到精通,在此基礎上,再廣泛學習延伸技術廣度,精通意味著你在這個領域是專家,你擁有這個領域的核心競爭力,而廣泛學習,即你會得越多,市場競爭力越高,收入也會更高!


3、系統高效學習事半功倍

如何才能系統高效地學習提高,送你最新整理的高級java/架構師學習資料包,助力進階。

1、程序員高讚的經典學習圖書9本;

2、技術進階系列專題資料合集88期(配合圖譜,學習更科學);

3、完整學習技能圖譜(知識點一目瞭然,上圖只是其中一部分技能樹)。

領取方法:關注優知學院,轉發+私信發送關鍵詞【架構師進階】,立即領取。

2019學習就要先人一步!堅持學習,每天進步一點,至少能讓我們成為一個比大部分人優秀點的人。


優知學院


接觸過很多的程序員大家都有同樣的困惑,就是項目不論大小都是做過的。也感受到過項目做成的喜悅,當然也有受挫。可是把自己拿出來覺得還不算是高手,和真正很厲害的程序員相比差距還是有的。其實程序員想要提升自己,就是要不滿足現狀。

1.基本功是要紮實的

這裡我指的是離散數據、數據結構還有算法、操作系統、編譯原理等等,這些都是計算機專業的基本課程。不要因為工作幾年了就覺得這些東西不重要了。雖然這些基礎更偏理論一些,但是實際項目當中還是需要它們來做支撐的。其實我們回頭看來,在很多的項目當中的瓶頸都是因為基本功不紮實造成的。所以我們現在就回顧基礎知識。當了有了很多經驗再回頭去看的時候,一定發現已經有了不同角度的理解。

2.從現在開始養成良好的編程風格

也許大家都有自己的編碼風格,在這裡給大家的建議是不管之前是什麼風格的。我們從現在開始都養成好的習慣,也就是變量命儘量開始,規則都統一。代碼行縮進編排。大家都知道該怎樣排除代碼中的錯誤,但是往往忽視了對註釋的排錯。但是註釋也是程序的一個重要組成部分,它可以是你的代碼變得更加容易理解,如果代碼已經清晰的表達出來了我們的思想,那麼就不需要再去加註釋了。如果註釋和代碼不一樣,真的是很糟糕的習慣;

3.多讀源碼

題主說的是有幾年代碼經驗的程序員,那麼也就是大家都是可以寫的程序員。那麼如何能讓自己的程序寫的更好,除了上面一條養成風格以外。我們還可以多去看別人的源碼,這裡不是說誰的什麼項目的都要去看。選擇一些經典的源碼。

  • 比如我們要研究操作系統的程序員就可以深入的讀一下linux最早起版本的源代碼


  • 如果想要研究數據結構和算法的話就可以仔細的讀一下STL庫或者是boost庫

讀源碼的話一定是要細讀的,深入理解其中的含義。主要在這裡就是鍛鍊自己能跟的上編寫者的思維。時間久了,我們讀這些東西都會成為自己的,並且咋實踐中得到應用。

4.多思考和交流

程序員需要的不僅僅是coding,還要大量的時間去思考問題,也許這就是我們“禿”的原因。有的時候思考的時間是遠遠的大於coding的時間的。不要著急手動代碼,一個新的項目需求,如果沒有進行足夠的分析和設計就直接動手去寫的話,大家都知道bug一定很多。要留出來思考的時間,一直到把需求分析透了,並且在編碼的過程中會遇到很多的問題,並且都解決了在開始編碼。另外就是多交流,三人行必有我師,三個臭皮匠頂一個諸葛亮,多問問身邊人的問題看法會對我們有很大的幫助和啟發。


傳智播客


關於題主所關注的,我目前也面臨這個問題,工作了三年多後,技術到了一個瓶頸,管理上不上、下不下的那種,工作繁忙之餘,可選擇的發展方向受限,而沒有明確的目標,又困於目前資本寒冬的大形勢,面對如此嚴峻的環境,使人不能不居安思危。未來將走向何方,又怎麼熬過這個寒冷的冬天,有時憂慮到徹夜難眠。或許遇到了什麼情況都能接受吧,但是要面對總還需要勇氣,但技術總要有努力的方向,無論從什麼角度出發,任何時候,有所準備總是不會錯的。

我也將我接下來的計劃做一個分享,希望對於同處於迷途中的小夥伴一些幫助,同時也是對自己計劃的進一步梳理和清晰。初步的計劃是在JAVA虛擬機和源碼方面下功夫,同時在理解中間件技術的基礎上,增加對系統架構的理解,加強應對複雜業務場景的架構能力,同時結合經歷過的電商場景,針對一些特殊場景的設計能力。

具體的,深入閱讀並消化JAVA虛擬機,增加對JAVA內存模型和JVM調優的認識,結合同事的分享,讓自己在這一領域有自己的認識。花一定的時間去研讀Dubbo中文文檔,並結合Apache Dubbo源碼,在原有Dubbo理解的基礎上,深入理解其內部實踐機制,達到對Dubbo源碼有一定了解的同時,學習其編碼風格,增強自己的編碼能力。在這兩塊之外,一直在做的JDK源碼和Spring源碼的研讀需要進一步加快,同時取得一定收穫。在有餘力的基礎上,Netty、RocketMQ等相關的源碼或許也有一定研讀的必要。除此之外,在實用性方面,增強對Spring Cloud的生態的理解和實踐,在強化原有Eureka、Consul、Feign、Ribbon、Config、Zuul等認識的基礎上,瞭解Stream、Task、Sleuth、Data Flow等對應的業務場景和設計原理。除此之外,刷leetcode試題也是一個不錯的途徑。

我要分享的大致就這些,個人的想法比較零碎,但是隻要堅持下去,相信自己會有所收穫,對所謂的中年危機,也將更有信心去面對。



夕陽雨晴


1.多看書,尤其是各種中間件,數據庫,協議的實現,語言的基礎

2.不斷重構現有的項目,個人認為,無論工作經驗多少年,每次對一個系統進行重構,都會有新的認識

3.嘗試自己編寫或參與開源項目

4.進入一家大型公司核心部門,參與大規模,大數據量,高併發項目設計和開發

5.參加大會,與行業內高手交流

6.考取企業認證,rhca ocm等

7.重複造輪子,實現常用的中間件,緩存系統等

8.在大型公司吸取經驗後進入中小型公司,成為leader,架構師,架構設計一個業務系統或大型項目


kid7157887


這個階段要累積經驗和開拓知識面,開始構建自己的知識體系,構建自己的技術棧,選定開發的軟件類型,比如電商系統,還是企業管理系統,還是視頻軟件,還是音樂軟件等等。這個階段要選定自己要深入研究的領域,並扎進去。

如果是決定基礎知識體系不足,是可以先把基礎學科全部過一遍。

深入解剖和研究一些頂級開源項目的源碼也有助於你的提升。

物色一個專業而靠譜的團隊併成為一員也是大有作用的。

以上是我的分享,祝你編程愉快。


程序猿創業筆記


Java中編程最常見的套路編程:先寫Action層,再寫Service層,再寫Dao層這種方式基本都已經有10幾年的歷史了,這種工業代碼就是這樣,你要想提高編程能力,主要還是編程思想,多看看源碼,多上GitHub上找點優秀的開源項目看看,多自己練練手,多多少少還是有點裨益的。


Java螞蟻


既然已經碼了幾年代碼了那麼基礎方面應該是不會太差了,提升的話就要看你發展的方向了。前端的話可以學習新的框架,後端也可以嘗試一下前段做全棧開發。當然如果你對大數據和人工智能領域有興趣的話也可以嘗試學習一下,提升自己最好選擇一個自身感興趣的方向不然就是浪費時間。有空的時候去git上多看幾套源碼,多看看書特別是基礎知識方面只有紮實的基本功才能有為後續的提升提供不斷的動力。


夢白遊


反問:

1、碼了幾年是指3年、5年、10年、15年還是20年?

2、有一定的開發經驗?這個“一定”怎麼區分?

3、提升自己的編程能力?溝通能力?還是什麼?


首先,時間是一個被動因素。時間經歷 ≠ 經驗經歷。只有有意識的提升自己的能力,時間才能最大化被利用。


一定不要誤認為,時間越久的程序員越吃香,關鍵要看這個時間久,是重複的時間還是刻意提升的時間。


其次,一定不要想當然的認為經驗豐富。經常看見面試者的簡歷裡有一定的經驗,有深入的經驗,結果才問了三個相關問題,就開始說得模糊不清。這樣的經驗一聽,就知道只是知道大概的概念,會簡單的使用,根本談不上深入,練“一定”都達不到。


一定的經驗,至少說,要清楚安裝使用,常用的用法,優缺點適用不適用場景,深入則要對進本原理有過初步的研究,知道如何參考模式設計新模式,落地實踐避免踩坑等。


經驗不是說出來的,而是不斷實踐總結提煉出來的。


最後,要搞清楚現在到底想要提升什麼?先搞清楚what,再去想how,這樣效果才是最好的,不要說,別人都說提升自己,那自己也跟著提升自己。


你自己到底缺失在哪裡?哪些是掌握的?哪些只是知道表面?只有你最清楚。


關於提升自己,我有三點建議:

1、不斷學習

2、持續實踐

3、反思修正


類比到編程上,可以是不斷學習經典的設計模式,也可以是不斷學習新的流行技術,關鍵在於去學習。


然後,在實踐中應用,發現問題,記錄問題。


第三步,總結反思,多問why,多問換個場景能不能用,然後再去實踐。


總結一下,方法很簡單,簡單到大多數人都忽略,但是隻要真正做完過的人都知道,每一步都不簡單,能發散出很多很多點出來。


提升自己,不是一天就能完成的,需要的是持續的行動。


說言風語


程序員的天花板從來不在程序方面,多學點別的


xiaot666


多瞭解行業,理順一個行業的業務,然後用軟件去解決它,這就是軟件的價值!


分享到:


相關文章: