首頁>Club>

怎麼拓寬自己的知識面,讓自己在java這條路走的更遠更好?

4
回覆列表
  • 1 # 永楓Mitaple

    感謝題主好問題,能夠給我一個總結盤點的機會。我回憶了自己的學習歷程,反思總結如下:

    繪製知識技能圖譜

    既然是希望自己能夠進行系統性地學習,那麼第一件事情就是整理學習相關技術的知識體系。

    知識體系的素材可以來源於搜尋引擎、專業論壇(如InfoQ、CSDN)、視訊、學習平臺(如極客時間、GitChat)、GitHub等渠道。如果是日常看到一些好的程式設計類文章,也記得使用筆記工具剪裁下來,待時而用。這個時候的我們,不用過於考慮學習邊界,先蒐集了再說。

    當蒐集素材進入疲勞期,或者被某類知識吸引,你就可以開始停下蒐集學習素材的腳步,開始盤點素材,用思維導圖工具(如Xmind)繪製知識技能圖譜。繪製技能知識圖譜的時候,記住一個重點:別糾結完整性、別糾結合理性、別糾結美觀,先有了再說。事實上,程式設計能夠歷練我們執行落地的習慣,先寫出一段程式碼,執行、除錯、跑通,然後繼續優化,繼續迭代。這種做事情的方式,正是我們日常做任何事情該有的姿態。

    同樣,當你繪製知識技能圖譜進入疲勞期,或者被某類知識吸引,你就可以停下來,選擇你本次學習的邊界了。選擇學習邊界可以參考如下思路:

    根據自己感興趣/認為更重要/日常工作契合度各維度進行判讀選擇;先定個小目標,切忌過度設計目標;如果存在不止一個知識的興趣點,強制自己排出優先順序,就選一個

    如果學習邊界定好了,就可以進入下一個階段了。

    尋找書籍和視訊教程

    定好了學習的範圍,我們就需要開始找學習資料了,用於後續進行深度學習。學習資料包括書籍網路視訊教程、技術文章、標準

    無論是書籍,還是網路視訊教程,其實他們的最大的好處就是:用別人已經梳理好的知識體系,幫你快速建立對某項知識的認知。

    在過去的10年,我一直有閱讀紙質書籍的習慣。閱讀巔峰時期時,每個月看一本書。那個時期在買書的時候,我會快速看目錄,如果知識體系結構清晰,知識內容讓我感興趣且是我需要的,我就會購買,然後制定閱讀計劃在一個月內看完。

    後來,知識付費一度火熱,網路視訊教程也不乏精品,我養成系統化地看一些網路視訊教程。這些學習資料,有來自極客時間、GitChat、嗶哩嗶哩等知名渠道。

    關於技術文章,建議大家關注一些知名的IT大V,或者諸如InfoQ、人人都是產品經理(不要問我程式設計師為什麼要看產品經理的內容,你懂的)此類的平臺。大V和平臺上經常會有一些精華文章,能能夠讓你學到好東西。

    關於標準,由於近幾年接觸了標準化的相關知識,發現標準是最嚴謹的知識體系了,在構建認知上是最好的參考

    大家可能會問,這些資料良莠不齊,我們如何面對?其實很簡單,我們結合自己繪製的知識技能圖譜,對這些內容進行分級,取我們所需即可。不要預期能夠一蹴而就,甄別知識和學習知識是一個長期的過程

    最後,用自己認為最舒適的方法和節奏,開始享受學習吧。

    結合工作設計個人專案

    敲黑板了,學習一定要閉環,否則即使你學習時腦洞大開、漲知識,最終也不會沉澱下來成為個人的知識體系。學習一定要閉環、學習一定要閉環,重要的事情說三遍了

    那麼,學習如何閉環呢?那就是要理解你的輸出。前面的兩部分內容,我已經植入了輸出,知識技能圖譜就是我們前面兩個部分最具象的輸出。

    學習還有什麼具體的輸出呢?讀書筆記是其中一種。還有一種最直接的,就是設計個人專案,然後Coding(程式設計)。這是程式設計師Style的輸出,也是提升程式設計能力的最核心途徑。讀萬卷書,不如寫萬行程式碼。

    這裡給大家一個建議,這個專案一定要結合工作應用進行設計。

    我也嘗試過結合個人興趣進行設計,但是效果確實不太好。後來自己幾次反思,發現在學習過程中產生的“興趣”,其實是模糊不切實際的,當你越來越深入學習的時候,這個興趣會很容易變得現實,那麼個人專案的設計初衷就會產生問題,導致無法執行。

    結合工作應用進行設計,有具象的應用場景,甚至能面對實際迫切的要求。完成個人專案,不僅能固化學習成果,還能解決工作需求,甚至贏得領導和同事的認可,如此多贏,我們為什麼不選擇呢?

    學習領域驅動設計

    到了學習抽象思維能力部分了,我直接給出我個人的最佳答案:就是看這本書,《實現領域驅動設計》。領域驅動設計標榜的是“軟體核心複雜性應對之道”,可見一斑。這本書相對於《領域驅動設計 軟體核心複雜性應對之道》,有更多的實踐,是值得反覆研讀的書籍。一個Java軟體開發工程師,只懂得三層架構、資料庫驅動開發、增刪改查之類的知識,其實是蠻可悲的。

    最後,再推薦一個系列的書,作為各位進階學習的內容。這個系列是《面向模式的軟體架構》系列,共5卷。

    愉快地程式設計和覆盤

    作為一個java程式設計師的進階之路,簡單的三部曲:

    這裡談到覆盤,覆盤其實是一個技術活,而且方式多種多樣。程式設計師最重要的覆盤輸出,就是重構

    我經常和別人說,“每年我都會閱讀自己的程式碼和技術棧,感覺十分傻,然後推翻重新來一遍。”聽眾一般會覺得這是一個玩笑話,我講這句話的過程中也不乏誇張的成分。然而,我確實如此一年一年地重構自己的架構和程式碼。

    關於重構,以後有時間我再做進一步的分享。

    好了,程式設計師,享受學習和程式設計吧。記得,始終保持心情愉悅

    以上是我的回答,望採納。

  • 2 # 職場中的白蘭地

    實際上,不管是Java還是其他的程式設計師都要面對這個問題。未來的職場競爭是複合能力的競爭,不僅需要專業能力,還需要管理能力、溝通協調能力等其他更為底層的能力。

    提升專業能力的核心在於掌握專業底層邏輯

    我們都知道,程式設計師的晉升和成長是需要時間維度的,有時間上的積累才稱得上專業。但這種積累並不只是程式碼掌握得有多好,或者你能做多少專案,這些都是執行層面的事。更重要的是能否通過你做的那麼多專案抓住背後的邏輯。

    發現沒有,進入管理層面,你的整個關注點就變了,從執行層面的某個具體的“點”到整個專案來龍去脈的“線”,這是專案經理和程式設計師最大的區別。

    舉個例子。我們公司負責技術的陳總,本身只是普通本科計算機專業畢業,但到公司1年後就被委任技術經理,管理著很多“985”、“211”院校的高才生。為什麼是他?每次技術部開專案推動會,他都是發言最多的,不僅瞭解自己的工作具體是哪些,還要了解自己在整個專案中的位置是什麼。

    不僅如此,他剛開始主要負責的是資料庫方面的工作,每次主動跟產品同事溝通,資料調取速度怎麼樣,有沒有延遲等等。他做好自己的工作後,還會主動幫其他技術同事解決問題。當然這不僅是培養人緣關係,更重要的是他能夠通過幫忙把整個專案中的每個點連起來,方便自己對整個專案的理解。

    整個專案完成後,他會建議大家一起先將整個專案模擬真實情況運轉,發現問題及時修改,避免了很多漏洞和BUG。雖然他提拔比較快,但是整個技術部門沒有一個不服的。

    技術部門在整個企業組織中起到支援和賦能的作用,要幫助企業解決效率的問題,包括企業的內部效率和外部效率。內部主要是溝通和協調,外部是連線和觸達客戶。為什麼現在都在提數字化?尤其在疫情之後,提的人原來越多。因為大家發現,在疫情期間具有數字化能力的企業受到的衝擊都比較小。比如餐飲行業的西貝莜麵村,零售行業的屈臣氏和天虹百貨。線下沒有客流,但是我有數字化能力,可以把客戶引流到線上進行轉化,比如利用微信小程式、各種直播實現轉化等等。還有,為什麼在疫情期間釘釘和企業微信火了?就是因為企業要線上辦公,要線上觸達和互動客戶。

    說了這麼多,其實是想告訴你,技術的頂點一定是和業務和運營相結合的。數字化肯定是企業未來都要具備的能力。對你來說,雖然目前只是一個程式設計師,但要有這種大局意識,看得清方向,才能選得對路。不管你現在的主要工作是Java還是PHP、Python、DevOps,多從業務角度思考你的工作,百利而無一害。不管是雷軍還是周鴻禕,這些技術出身的大佬最後能夠創業成功,離不開將自己的技術能力和業務能力融會貫通。

    其次,多瞭解這個時代的商業變化情況如果沒有業務的支援,技術創造不了任何價值。就像現在很多企業都有CRM(會員管理系統),能夠用好的能有幾個?之前我們給一個區域性的珠寶行業做技術開發,發現他們的CRM中客戶的資料還是固話號碼,不僅如此,導購開個會員卡還得手動記錄客戶資訊,客流一多就得排隊,非常影響體驗。問他們的技術負責人,他說這個系統基本就沒怎麼用過,程式碼還是最早的C#寫的,現在改都不好改。這就是典型的被時代拋棄的例子。

    最後,跳出你程式設計師的身份。被甲骨文公司辭退的那些人當中不乏名牌高校畢業生和海歸,與其說他們被甲骨文公司辭退,不如說他們被這個時代所拋棄。出現這種情況,我的看法是他們只把自己當做了技術人員,被身份或崗位所限制。這個時代被公司拋棄不可怕,最可怕的是被客戶拋棄,沒有客戶你就沒有收入。雖然技術崗位不直接面對客戶,但要知道客戶才是給你發工資的那個人。

    希望這1000多字能對你有一些啟發,也不枉我碼了40分鐘。

  • 3 # 鬼淡君

    關於學習,關於充電,關於補系統性的課程,對於一個程式設計師,或者說網際網路開發的工作者來說,是毋庸置疑的。然而,僅僅靠悶頭充電,能更系統,能更快速的找到和別人差異化競爭的路徑嗎?答案是:NO!

    除了學習知識之外,提供幾點建議:

    1、參加一個有技術力量的組織、社群、或者工作坊,那些行業的高手,技術的達人,老鳥老法師都藏在這裡面,大膽的去結識他們!如果你在北上廣深還有杭州等城市,這樣的組織遍地都是,創業咖啡裡,活動行社群裡都可以找到。如果你在成都、南京蘇州這些網際網路環境還不錯的城市可以找老鳥推薦邀請一下!

    2、找到一個技術老法師,拜師!或者一群狂熱的創新者,包括產品經理,演算法達人,AI達人,你才能瞭解前沿和趨勢,再針對性補強可以事半功倍!記住,永遠找最優秀的人學習!

    3、多找國外的專案和APP的技術分析材料,有翻譯的找翻譯版本,沒翻譯的自己找高手一起翻譯!4、自己嘗試做一些程式,然後丟擲去檢驗,不僅能讓技術精進,還能有成就感!

  • 4 # 小張在浙

    1.空杯心態。

    職場絕不只是一道好菜,而是一場盛宴。不能因為小小的成績就得意忘形,或者甘於認命。尤其是

    當我們剛入職的那幾年,更要學會空杯,既不能因一時的失敗或挫折而一蹶不振,更不能因小小的

    成績就扯高氣揚。

    我們要時刻“空杯”,勇於放下,這樣才能取得更好的成績,才能在今後的道路上走得更穩、更遠。

    2.堅持學習。

    一些程式設計師覺得自己加班已經夠累了,就幾乎不再學習,但其實從長遠發展來看,大家還是應該盡

    可能多的通過不斷地練習、不斷地閱讀來進行自我提升。

    學技術切記急於求成,只要方法正確,長期堅持,量變一定會引起質變。但如果總是進入不了學習

    狀態,建議可以考慮換個學習環境,比如去大學的圖書館、附近人少的書店等等。離開舒適區,試

    著讓自己有所突破。

    3.把事做精。

    只有對自己要求越高,才能進步的越快。很多程式設計師開始工作的時候,總是快而不精,做事做的不

    夠細緻,希望快速拿出結果證明自己,但卻反而什麼也證明不了。把事情做精的唯一方法:就是要

    強迫自己多花心思多花時間在這件事情上。

    曾經看到過一位技術牛人的分享心得:“老闆給你佈置了一個任務,你要花百分之150的精力做到

    100分,這樣在老闆那裡你就能拿得到80分或者60分。”

    4.掌握系統化的學習方法。

    如果學習到的知識不成體系,那麼遇到問題時就會很難快速解決。有些程式設計師在編碼遇到問題時,

    喜歡百度搜索,如果百度上找不到答案,這個問題就解決不了。或者在開發中需要用到某個技術

    點,就只去學那一點點,程式調通後就不再深入研究,淺嘗輒止。

    程式設計師應該遇到一個問題,解決一個問題,需要一項技術,就深入學習一項技術,而不是為了一時

    的應付。

    那麼又該如何系統化學習呢?

    首先要確定學習的知識領域,需要達成的學習目標,其次就是針對目標制定學習計劃,列出學習框

    架,然後再把知識點逐步填充進去,最後把這些知識點關聯起來,形成一個系統化的知識體系。

    5.練習練習再練習。

    練習的大前提是有足夠多的時間。而時間對於工作者來說是非常珍貴的資源,特別是在國內這種大

    環境下,程式設計師常常是“996”、“997”的工作狀態。

    如果想要快速成長,即使每天都很忙碌,你也應該預留時間來進行練習,哪怕只是半個小時,一

    周、一個月、一年下來,幫助就很大的。

    當然,練習也不是一天裡寫一萬行程式碼,也不是重複寫一百行程式碼,而是在一百天裡,每天寫下一

    百行程式碼。它需要一定的技巧,不懈的堅持,還有一些合理的休息。

  • 5 # 沒基礎學程式設計

    一、深入瞭解JVM的原理,不懂原理的人只能做一些表層工作,是寫不出構架級程式碼的;

    二、多讀一下阿里的程式碼規範文件,並且認真執行(寫出來的程式碼長得和阿里的風格一樣,質量也高,到哪裡你都能拿高工資,受領導喜歡);

    三、要學會用“思維導圖”,理清業務邏輯,將業務流程圖轉換成系統流程圖與資料流圖;【思維導圖軟體:xmind,mindmanager等】;

    四、要學習設計模式的思想,深入理解每種設計模式的底層邏輯,讓自己的思維更開闊。

    五、多看一些邊緣相關的書籍,擴充自己的知識邊界,一個人的能力是有邊界的,這邊界取決了知識的廣度與深度。

  • 6 # 有趣的程式碼

    1.工作實踐。參與一個好的專案,是可遇而不可求的,在工作中實踐,首先需要投入大量的時間和精力,另外需求分析,系統設計,出現問題都會有團隊一切來協作完成,這對於個人能力迅速提高是效率最高的。

    2.系統學習。建立適合自己的學習路線規劃,不僅限於拓寬知識的廣度,而且要加強知識的深度學習,包括技術的原理,如果自己設計的話,如何設計和實現,多問自己幾個為什麼。

    3.重視開源。開源系統搭上網際網路的翅膀,可以飛的更快,更遠,更高。根據自身條件參與自己感興趣的開源專案,同全球最酷的程式設計師一起為開源環境作出貢獻。

  • 7 # 戲說程式人生

    1.你要多看論壇去幫別人解決問題

    2.多看下課外書籍或視屏,結合自己思維去思考

    3.多找高手交流,這樣才能知道自己有差距,才能知道如何去彌補

    4.最重要的還是自己學習完去實踐

  • 8 # IT人劉俊明

    作為一名從業多年的Java程式設計師,同時也出版過Java程式設計書籍,所以我來回答一下這個問題。

    首先,Java程式設計師的業餘時間是比較有限的,所以要想有效利用本就不多的業餘時間獲得能力上的提升可以考慮以下幾個渠道:

    第三:參加一個開源專案。目前採用Java語言開發的開源專案有很多,不少程式設計師就是通過參與開源專案的方式來提升自身的研發能力。在開源專案的選擇上有三個原則,其一是選擇發展前景比較廣闊的專案,這樣的專案會有較好的持續性;其二是與自身的崗位開發任務有關聯,這樣可以方便的完成技術遷移;其三是選擇一個自己感興趣的專案,興趣是驅動學習最好的方式之一。

    我從事網際網路行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大資料和人工智慧領域,我會陸續寫一些關於網際網路技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

  • 中秋節和大豐收的關聯?
  • 清朝滅亡後,身份尊貴的格格都嫁給了誰?過著怎樣的生活?