Java程序員如何提升自己,有什麼網站推薦GitHub夠用嗎?

blackSnow


這個問題要看目前處於什麼“段位”。

如果目前的段位屬於初級,最缺的是知識的豐富程度和實戰經驗,那就通過多練習,多磨練來不斷提升自己的水平。這個階段可以通過CSDN等網站來多學習一些經驗。同時還得多看一些框架性的書籍。

如果目前屬於中級段位,說明基礎知識都沒問題了。這時需要對Spring全家桶、Hibernate等進行系統性學習。還得熟練掌握Redis、MQ等中間件軟件的,不斷提升自己架構級能力。

如果目前已經出於較高段位,那就可以通過GitHub等網站多多瞭解Java語言的底層原理、Java各類衍生產品的底層原理和實現方式。還可以自行設計或者參與到很多產品的設計和實現工作中。這樣就會越來越牛了。


greatfeather


Do more

做的更多,做的比你主管安排給你的任務更多。我在HW的時候,負責一個版本的開發,這個版本的工作量大約是2000行左右,但是我除了做完這個功能,還將關聯的功能全部掌握清楚了,代碼(大約10000行)也全部看了一遍,做完這個版本後,我對這個版本相關的整套業務全部很熟悉了。經過一兩次會議後,大家發現我對這塊掌握最熟了,接下來就有趣了:產品討論需求找我、測試有問題也找我、老大對外支撐也找我;後來,不是我負責的功能他們也找我,即使我當時不知道,我也會看代碼或者找文檔幫他們回答。。。。。。最後我就成了我這個系統的“專家”了。雖然這個時候我還是做業務的,還是寫業務代碼,但是我已經對整個業務都很熟悉了。以上只是一個簡單的例子,其實就是想說:要想有機會,首先你得從人群中冒出來,要想冒出來,你就必須做到與眾不同,要做到與眾不同,你就要做得更多!怎麼做得更多呢?可以從以下幾個方面著手:1)熟悉更多業務,不管是不是你負責的;熟悉更多代碼,不管是不是你寫的這樣做有很多好處,舉幾個簡單的例子:需求分析的時候更加準確,能夠在需求階段就識別風險、影響、難點問題處理的時候更加快速,因為相關的業務和代碼都熟悉,能夠快速的判斷問題可能的原因並進行排查處理方案設計的時候考慮更加周全,由於有對全局業務的理解,能夠設計出更好的方案2)熟悉端到端比如說你負責web後臺開發,但實際上用戶發起一個http請求,要經過很多中間步驟才到你的服務器(例如瀏覽器緩存、DNS、nginx等),服務器一般又會經過很多處理才到你寫的那部分代碼(路由、權限等)這整個流程中的很多系統或者步驟,絕大部分人是不可能去參與寫代碼的,但掌握了這些知識對你的綜合水平有很大作用,例如方案設計、線上故障處理這些更加有含金量的技術工作都需要綜合技術水平。“系統性”、“全局性”、“綜合性”這些字眼看起來比較虛,但其實都是技術大牛的必備的素質,要達到這樣的境界,必須去熟悉更多系統、業務、代碼。3)自學一般在比較成熟的團隊,由於框架或者組件已經進行了大量的封裝,寫業務代碼所用到的技術確實也比較少,但我們要明白“唯一不變的只有變化”,框架有可能要改進,組件可能要替換,或者你換了一家公司,新公司既沒有組件也沒有框架,要你從頭開始來做。這些都是機會,也是挑戰,而機會和挑戰只會分配給有準備的人,所以這種情況下我們更加需要自學更多東西,因為真正等到要用的時候再來學已經沒有時間了。以java為例,大部分業務代碼就是if-else加個數據庫操作,但我們完全可以自己學些更多java的知識,例如垃圾回收,調優,網絡編程等,這些可能暫時沒用,但真要用的時候,不是google一下就可以了,這個時候誰已經掌握了相關知識和技能,機會就是誰的。以垃圾回收為例,我自己平時就抽時間學習了這些知識,學了1年都沒用上,但後來用上了幾次,每次都解決了卡死的大問題,而有的同學,寫了幾年的java代碼,對於stop-the-world是什麼概念都不知道,更不用說去優化了。Do better要知道這個世界上沒有完美的東西,你負責的系統和業務,總有不合理和可以改進的地方,這些“不合理”和“可改進”的地方,都是更高級別的怪物,打完後能夠增加更多的經驗值。識別出這些地方,並且給出解決方案,然後向主管提出,一次不行兩次,多提幾次,只要有一次落地了,這就是你的機會。例如: 重複代碼太多,是否可以引入設計模式? 系統性能一般,可否進行優化? 目前是單機,如果做成雙機是否更好? 版本開發質量不高,是否引入高效的單元測試和集成測試方案? 目前的系統太龐大,是否可以通過重構和解耦改為3個系統? 阿里中間件有一些系統感覺我們也可以用,是否可以引入 ?只要你去想,其實總能發現可以改進的地方的;如果你覺得系統哪裡都沒有改進的地方,那就說明你的水平還不夠,可以多學習相關技術,多看看業界其它公司怎麼做,BAT都怎麼做。我2013年調配到九遊,剛開始接手了一個簡單的後臺系統,每天就是配合前臺做數據增刪改查,看起來完全沒意思,是吧?如果只做這些確實沒意思,但我們接手後做了很多事情:解耦,將一個後臺拆分為2個後臺,提升可擴展性和穩定性;雙機,將單機改為雙機系統,提高可靠性;優化,將原來一個耗時5小時的接口優化為耗時5分鐘還有其它很多優化,後來我們這個組承擔了更多的系統,後來這個小組5個人,負責了6個系統。Do exercise在做職業等級溝通的時候,發現有很多同學確實也在嘗試Do more、Do better,但在執行的過程中,幾乎每個人都遇到同一個問題:光看不用效果很差,怎麼辦?例如:學習了jvm的垃圾回收,但是線上比較少出現FGC導致的卡頓問題,就算出現了,恢復業務也是第一位的,不太可能線上出現問題然後讓每個同學都去練一下手,那怎麼去實踐這些jvm的知識和技能呢?Netty我也看了,也瞭解了Reactor的原理,但是我不可能參與Netty開發,怎麼去讓自己真正掌握Reactor異步模式呢?看了《高性能MySQL》,但是線上的數據庫都是DBA管理的,測試環境的數據庫感覺又是隨便配置的,我怎麼去驗證這些技術呢?框架封裝了DAL層,數據庫的訪問我們都不需要操心,我們怎麼去了解分庫分表實現?諸如此類問題還有很多,我這裡分享一下個人的經驗,其實就是3個詞:learning、trying、teaching!1)Learning這個是第一階段,看書、google、看視頻、看別人的博客都可以,但要注意一點是“系統化”,特別是一些基礎性的東西,例如JVM原理、Java編程、網絡編程,HTTP協議。。。。。。等等,這些基礎技術不能只通過google或者博客學習,我的做法一般是先完整的看完一本書全面的瞭解,然後再通過google、視頻、博客去有針對性的查找一些有疑問的地方,或者一些技巧。2)Trying這個步驟就是解答前面提到的很多同學的疑惑的關鍵點,形象來說就是“自己動手豐衣足食”,也就是自己去嘗試搭建一些模擬環境,自己寫一些測試程序。例如:Jvm垃圾回收:可以自己寫一個簡單的測試程序,分配內存不釋放,然後調整各種jvm啟動參數,再運行的過程中使用jstack、jstat等命令查看jvm的堆內存分佈和垃圾回收情況。這樣的程序寫起來很簡單,簡單一點的就幾行,複雜一點的也就幾十行。Reactor原理:自己真正去嘗試寫一個Reactor模式的Demo,不要以為這個很難,最簡單的Reactor模式代碼量(包括註釋)不超過200行(可以參考Doug Lee的PPT)。自己寫完後,再去看看netty怎麼做,一對比理解就更加深刻了。MySQL:既然有線上的配置可以參考,那可以直接讓DBA將線上配置發給我們(注意去掉敏感信息),直接學習;然後自己搭建一個MySQL環境,用線上的配置啟動;要知道很多同學用了很多年MySQL,但是連個簡單的MySQL環境都搭不起來。框架封裝了DAL層:可以自己用JDBC嘗試去寫一個分庫分表的簡單實現,然後與框架的實現進行對比,看看差異在哪裡。用瀏覽器的工具查看HTTP緩存實現,看看不同種類的網站,不同類型的資源,具體是如何控制緩存的;也可以自己用Python寫一個簡單的HTTP服務器,模擬返回各種HTTP Headers來觀察瀏覽器的反應。還有很多方法,這裡就不一一列舉,簡單來說,就是要將學到的東西真正試試,才能理解更加深刻,印第安人有一句諺語:I hear and I forget. I see and I remember. I do and I understand ,而且“試試”其實可以比較簡單,很多時候我們都可以自己動手做。當然,如果能夠在實際工作中使用,效果會更好,畢竟實際的線上環境和業務複雜度不是我們寫個模擬程序就能夠模擬的,但這樣的機會可遇不可求,大部分情況我們還真的只能靠自己模擬,然後等到真正業務要用的時候,能夠信手拈來。3)Teaching一般來說,經過Learning和Trying,能掌握70%左右,但要真正掌握,我覺得一定要做到能夠跟別人講清楚。因為在講的時候,我們既需要將一個知識點系統化,也需要考慮各種細節,這會促使我們進一步思考和學習。同時,講出來後看或者聽的人可以有不同的理解,或者有新的補充,這相當於繼續完善了整個知識技能體系。這樣的例子很多,包括我自己寫博客的時候經常遇到,本來我覺得自己已經掌握很全面了,但一寫就發現很多點沒考慮到;組內培訓的時候也經常看到,有的同學寫了PPT,但是講的時候,大家一問,或者一討論,就會發現很多點還沒有講清楚,或者有的點其實是理解錯了。寫PPT、講PPT、討論PPT,這個流程全部走一遍,基本上對一個知識點掌握就比較全面了。


鬥戰勝佛


首先有提升自己的觀點是非常棒的,根據我的實際情況簡單說一下:

1. JDK源碼

在會用的前提下,去學習原理。其中線程池、Future、併發包裡的線程安全類、以及鎖的根基AQS、volatile,synchronized的原理等等都要去看。源碼部分能用到的就要去看下實現原理。

2. JVM層面

寫程序一定要知道程序在內存中是如何存放已經管理的,各種回收機制,利弊,使用場景,如果優化,好好的去研究

3. 設計模式

業界有一句笑話“搞JAVA的人天天加班在想怎麼設計”,足以看出設計模式在Java中的主要性。針對設計模式我也要多說幾句,不要只看,要講學到的東西應用到自己的實踐中。

4. Java優秀的框架源碼學習

spring,springmvc,mybatis,tomcat,netty,dubbo 任何一個就夠自己研究幾個月的。

5. 數據存儲層Mysql相關的知識

一般對於Java程序員來說,DB的相關知識特別的薄弱。對於DB的索引、隔離級別、優化以及底層原理都需要搞懂

6. 中間件相關

分佈式內存數據庫-Redis,MQ-Kafka,RPC-dubbo,服務治理-Zookeeper。像redis是C++寫的,可以去了解實現原理,Kafka很龐大也可以只學習原理。dubbo啃代碼吧,寫的很好。

7. IO方面的知識

Java最擅長的領域就是Web開發,與網絡打交道IO只是是缺不了的。比如可以從《Netty權威指南入手》學習,Tomcat中除了容器也是與IO相關的知識。

可以看書,當然書一定不要只看一遍。我一般是一本書至少看兩遍。第一遍粗略的讀,知道有這個回事就可以。第二遍精讀,鑽牛角尖的讀,碰到不了解的知識點就要去研究。(為什麼要讀兩遍,我一直有一個觀點就是,作者在寫的時候整本書的知識點就已經都掌握了,先粗略看一遍對全局知識點有了大概的瞭解後再來看書肯定有不一樣的見解)一段時間過後,再返回來讀一遍,絕對會有不一樣的收穫(自己掌握知識水平不同,看書的理解也會不同)。

差不多先這些吧,夠研究幾年的了


略懂IT


本人10年開發培訓經驗,期間經歷了Java Web,Android,H5,大數據,PHP等多個不同的方向的開發,也做過軟件培訓公司的金牌講師,很有興趣回答你這個問題。

IT行業是可以說是一個需要不停學習,不斷充電的行業,如果不能夠及時的更新自己的技能和知識儲備,那麼離淘汰也就為期不遠了。

我說一下自己的學習充電的地方吧。

Android技能提升:Android開發者論壇,安卓巴士;

Java技能提升:csdn論壇,開源中國,github,還有各種框架自己的官方網站,比如Spring Boot與Spring cloud官網。


我從事互聯網開發10年,主要的研究方向集中在Java web微服務架構領域,Android移動端研發,HTML5前端方向,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信你一定會有所收穫。

如果有Java,Android,H5等開發方面的問題,或者是開發求職方面的問題,都可以在評論區留言,或者私信我。


一一哥Sun


我覺得程序員寫到最後拼的還是思想。

因為代碼寫來寫去還是那樣,倒是一個編程思想一個架構這就是個人想法問題。

為什麼同樣寫代碼你只能寫業務邏輯,別人卻能寫出框架。這就是思想的不同。

所以我覺得程序員提升還是多看看別人先進的設計思維,github這個網站有很多優秀的開源項目足夠提升了



猿猿嘚不嘚


我是鬍子哥,結合我的經驗我從以下三個方面回答你
  • 確定自己的職業規劃和未來發展方向
  • 如何提升自己
  • 網站推薦
一、確定自己的職業規劃和未來發展方向
為什麼要確定自己的職業規劃和未來發展方向?如果你沒有明確的發展目標,對於未來需要掌握的技能也不會有明確的規劃,就像瞎子走路一樣,你會很迷茫,會產生焦慮感。雖然你可能可以到達一定程度的目標,但是這個過程的時間成本是巨大了,而且進步是最慢的。其實對於個人的定位發展和企業定位發展是類似的,從戰略規劃—目標分解—執行—結果反饋—優化每一個環節都不可少。一步錯步步錯,到了一定的年齡就失去核心競爭力,屆時得不償失。
在我們走向遠方的路上一定要停下了深度思考,如果你覺得你很勤奮努力,但是沒有深度的思考,你的方向就會有缺失,從而迷失了方向。深度思考是保障你向正確的方向發展,勤奮努力是保障你把正確方向相關聯的任務執行到位,從而達到你想要的預期目標。
比如你是Java程序員,你未來可以是架構師、可以是研發總監、可以是CTO、可以是產品經理、可以是產品總監、可以產品VP等。你有了規劃和目標,結合你自身目前的情況找差距,你會很清楚的瞭解自己如何到達目的地。
二、如何提升自己
上面我們說到要確定自己的職業規劃和未來發展方向,希望你讀到這裡的時候已經有了大概的方向感。那首先祝賀你,你離你要實現目標的距離不遠啦。做為一名Java程序員工,如何提升自己的技能,你可以從以下方面做起,希望能幫到你。
  • 熟讀和深度學習源碼的相關知識
你可能會問,我已經會用了為什麼還要這麼做。 源碼涉及的知識要點還是非常廣泛深入的。你會用很好,你還要學習的是裡面如何實現,以及架構涉及的設計模式。裡面的架構和實現是非常優美的,比如有線程安全的,也有線程不安全的,哪些適用於併發設計,哪些不適合,如果你不熟悉,你的代碼可能會一團糟。熟讀和深度學習源碼的相關知識對於未來實現中間件架構、業務架構、代碼優化、原有組件擴展都會有很大的幫助,這也是未來發展的基礎。
你可能會問要讀哪些代碼,比如JavaSdk,Spring,SpringBoot,Mybatis等,JavaSdk是最基礎也是最重要的。
  • 掌握架構設計思維與應用
架構設計思維和你的職業規劃也是一個道理,沒有掌握架構設計思維的人會永遠停留初級階段。架構設計為業務服務,是為了讓服務擴展性、穩定性、可靠性等有良好的支撐,服務走的更遠,支持更多業務的開展。整個系統得不到合理的架構設計規劃,隨著業務的增長,在不遠的將來系統就會變的臃腫,維護性差,冗餘不可複用,Bug多,運行過程可能會導致系統崩潰。
如何掌握架構設計的思維,給你推薦幾本書,架構之美、UML和模式應用、面向模式的軟件架構 (一共5卷,每卷都值得讀,分別是模式系統(卷1),併發和聯網對象模式(卷2),資源管理模式(卷3),分佈式計算的模式語言(卷4),模式與模式語言(卷5))、重構、代碼大全。以下是分佈式架構、微服務架構、性能優化的相關知識點彙總希望能給你帶來更多方向和收穫,如圖。

  • 掌握項目管理和開發工具
當你處於一個產品或者項目團隊中,掌握項目管理的技能很有必要,產品或項目開發是一個相對複雜的過程,涉及產品需求對接、UI、架構設計、開發測試、發佈等流程。對於如何建立溝通技能、優先級安排,開發進度安排、問題如何協調解決、激活戰鬥力也變的很重。可以推薦一本書人月神話。目前很多公司都採用敏捷開發,可以深入學習瞭解下。
現在團隊高效協作離不開工具的支持,需要掌握配置和使用技能。比如Maven、Gradle、Jenkins、Sonar、Git、Jira等
  • 建議堅持寫技術Blog

作為一個理工科的程序員來講,可能不願意去寫作。建議養成寫作的習慣,真的很好,知識的沉澱需要有一個承載的地方,它可以幫助你進一步思考和總結,對於代碼實現、架構、技術問題的解決能力都會有一個質的飛躍。當你回頭看的時候,你發現寫Blog真是一件好事情,非常有價值。

三、網站推薦

Github有很多開源的好項目,作為拿來主義肯定省時省力,但對於你練好內功完全不適用。所以說只靠Github完全不夠用。可以學習的網站還有CDSN,stackoverflow,iteye(javaeye),infoq,ifeve(併發編程)等向你推薦下。

就回答到這裡吧,希望能幫到你,覺得不錯的話請給個贊或評論,您的助力都是激勵我前行的動力,感謝🙏!

產品鬍子哥


我覺得首先作為一名程序員不要侷限於一門語言,至少我個人認為提升自己有兩個方向,一個是技術流,技術流又有兩種,一種是某領域深度技術研究,比如你對流媒體技術有所瞭解並且想對這一領域進行深入那你可以制定你的學習路線專攻這一塊,另外一種技術流是掌握技術面多,比如說會多門語言,服務器知識,容器虛擬化等等,另外一種不想走技術流的那就走業務流,對業務分析需求提煉的把控分析,對項目的理解和運用到的技術進行妥協,說完方向,那就說下如何提升自己:

1.上自學網站學習(極客學院,慕課,51cto,github)

2.領會和揣摩現實工作中你上級童鞋的做事辦法和思路

3.要相信自己可以改變自己

以上就是道和術的一個小範圍解釋,希望你以後會遇到真正口述這個哲理的人



陸地神仙老尹


最好的的提升方式就是實戰!


一直以來都想學Java,看了不少書,視頻教程,但是真的要動手,就舉步維艱!
今年年初剛好有個需求,ANDROID 的PDA 掃描二維碼後,隨即通過藍牙的方式打印標籤;當時不知哪來的勇氣居然敢報價(2w+),竟然中單了[捂臉].
高興半秒後,接著就是緊張😓,之前沒有任何實戰經驗,這個軟件要求忙高,用在醫療行業. 接單之後一點也不敢怠慢.
第一步:把項目的技術難點找出來;
第二步:難度分類,先易後難。對於基本的增刪改查都要網上找例子的新手,只能投入時間,不斷找實例練手;
第三步:解決高難度問題:app 藍牙連接sewoo 便攜式藍牙打印機(類似斑馬便攜式打印機),並且打印標籤.
第四步:軟件完善:經過前面幾步的歷煉,對java已經有了一定的功底,線程,消息這些都已經熟練了,但是軟件的僅僅停留在能用的水平,真正交付給用戶還需要打磨昇華;
1.設備開機自動連接藍牙打印機;
2: 獲取藍牙打印機的電量;獲取打印機狀態(就緒、缺紙、機蓋是否合上);
3:掃描引擎參數設置(Mobydata,zebra 兩款PDA測試;
4. 最高難度還是處理打印中文字體。PDA掃描二維碼,此QR code特殊至極,把中文字體以二進制的形式存存儲,PDA需要解碼,參照24點陣的顯示,之後把解碼內容再轉換為 打印機指令 CPCL,這一步真是嘔心瀝血,翻閱了無數前人資料,研究漢字點陣字體,24x24,12x12.... 歷經無數次失敗,當第一次終於打印出漢字時,那種喜悅是就像[愛慕].

要提升自己就要歷煉.

\n

{!-- PGC_VIDEO:{"thumb_height": 1440, "vposter": "http://p0.pstatp.com/origin/tos-cn-p-0000/daf4f2fb858a446b873c3d23201ac8dc\

精創智能


步入階段的JAVA程序員,提升已經是很難了,而且這個階段的學習往往會比較多樣化。因為在編程的過程中,你肯定或多或少接觸過一些其它的技術,比如大數據、分佈式緩存、分佈式消息服務、分佈式計算、軟負載均衡等等。

這些技術,你能精通任何一項,都將是你未來面試時巨大的優勢,因此如果你對某一項技術感興趣的話,這個時候可以深入去研究一下。

這項技術不一定是你工作所用到的,但一定是相關的。

而且在研究一門新技術時,切忌朝三暮四。

有的今天去整整大數據,搞搞Hadoop、hbase一類的東西。

過不了一段時間,就覺得沒意思,又去研究分佈式緩存,比如redis。

然後又過不了一段時間,又去研究分佈式計算,比如整整Mapreduce或者storm。

結果到最後,搞得自己好像什麼都會一樣,在簡歷上大言不慚的寫上大數據、分佈式緩存、分佈式計算都瞭解,其實任何一個都只是浮於表面。到時候面試官隨便一問,就把你給識破了。

一定要記住,作為一個JAVA程序員,平日裡所接觸的技術可能會很多,但是想要讓一門技術成為你的優勢,那麼一定是你對這門技術的瞭解強過絕大多數人才行。

因此在這個階段,你就不能再簡單的去學習前3年的內容了,雖然前面的學習如果還不夠深入的話依舊要繼續,但這個時候你應該更多的考慮建立你的優勢,也可以稱為差異性。

差異性相信不難理解,就是讓你自己變得與眾不同。你前面三年的學習足夠你成為一名基本合格的Java開發者,但你離成為一名優秀的Java開發者還有很大的距離。

所謂優秀,即能別人所不能。而你前三年所學習的內容,是很多做過幾年的Java開發都能夠掌握的。那麼為了讓自己有差異性,你就需要另闢蹊徑,找一個方向深入研究下去,以期在將來,你能夠成為這個領域的專家,比如分佈式計算領域的專家,大數據領域的專家,併發領域的專家等等。

此外,你除了建立你的差異性之外,還要去彌補你基礎上的不足,直到現在,都沒有提及基礎知識。原因是基礎是很枯燥無味的,學的太早不僅容易懵逼,而且懵逼的同時還容易產生心理陰影,以至於以後再不想去研究這些基礎。但基礎又是你深入研究一些領域時所必須掌握的,比如你去研究分佈式計算,你不懂算法你玩個毛毛?比如你去做分佈式緩存,你對計算機系統的內存不瞭解,你如何去做緩存?

如何去更好的學習新的技術?

1.這個技術的作用和意義是什麼? 2.它比較適合用在哪裡?3.這個新技術跟之前瞭解過的技術有哪些相似之處,是否可以想通。清晰的理解能力,大家都知道,程序員就是講用戶的需求用代碼實現,如果你想成為項目主管,負責整個項目,那麼你一定要理解用戶的需求,一旦項目失敗,整個責任都是你一個人承擔,所以想要達到更高職位的人,一定還要學習更多的額東西,程序員是嚴謹的一群人,如果對於用戶提出的需求沒有更好的理解,這個項目產品一定會失敗,所以那些想要成為項目主管的人要培養自己的理解能力。

持續學習

有很多人在剛開始學軟件開發的時候就會問,是不是需要一直學習啊,其實他的潛臺詞就是能不能一勞永逸,對於這樣的人是不適合學習開發的,包括現在任何領域,如果可以學一次就不學,那麼這個領域一定是個已經廢了的領域,學習Java開發需要不斷深入的學習新的知識。如果你打算不學習新的知識,你永遠只能做最低級的程序員,就是我們說的碼農。

分享

一個聰明的程序員一定是善於分享的,因為在分享的過程中,不僅是對於舊知識的一種複習,而且還會遇到你不懂的問題,這樣也會促使你去弄懂這個問題,長時間下來可不得了,是對自己的一種無形的提升。而且你還會幫助很多人。

給年輕的初級程序員的幾條建議


1.蒐集各種信息網站

一個聰明細心想要發展更好的程序員,一定是會在工作學習的過程中把自己遇到的一切問題和解決方案,還有比較好的網站,總結到電腦中的筆記本中,這些東西都是見證你成長的,是屬於你自己的知識庫,因為裡面的東西都是你自己寫的,幹什麼的你都知道,可以反覆使用,我曾經就見過一個前端大牛,10多年整理的筆記各種語言的,那真的是一種無形的資產,還有各種編輯器,我們做的這個東西就是一個非常大的信息採集器。

2.注意一下自己的溝通能力

程序員不是人們口中所說的很悶的那種人,這個跟性格有關係,其實無論是做什麼工作,最後還是跟人打交道,一個會說話的人往往比一個技術NB的人要發展的好,就好比浙江人做生意永遠比東北人做生意厲害,完全可以甩東北人好幾個裡地。你想要得到更好的發展,技術NB只是一方面,但是我得告訴你,想要掙更多的錢,溝通是非常重要的,至於怎麼培養,你自己去想。

3.找到一個具有發展的平臺

平臺真的太重要了,你有雄心壯志也很有才華,但是你沒有一個好的平臺,那都是不行的,關鍵還是看老闆,其實在大公司的話適合養老,因為大公司後來招聘的員工基本不會有什麼發展的,只是工資高點,穩定,如果提高發展,還是那種創業型公司,這個平臺怎麼找,我也不知道,但是我需要提這點,看你自己是什麼人,想做什麼事情,就適合什麼平臺,有的人適合養號,有的人適合創業,這都是性格所致。


莫非8125


對程序員來說,github確實是一個非常好的選擇,很多優質項目都在github上託管,通過github確實可以閱讀到大量的優秀代碼,但是個人認為只依靠github還是遠遠不夠的。推薦網站主要有兩類,一類是各種交流平臺,如:CSDN,Stack Overflow等;另一類是各優秀項目的官方文檔。另外還可以結合GitHub和自己熟悉的IDE工具閱讀項目的源碼。

除網站之外,閱讀和實踐也是必不可少的,我自己閱讀的書籍有:《深入理解Java虛擬機 JVM高級特性與最佳實踐》、《Java併發編程的藝術》。


分享到:


相關文章: