爲什麼要做職業規劃
我個人再學習之前會做一個學習計劃,但只是短期的。學習計劃的好處是再某段特定是的時間,有明確的學習指導,並且學習計劃再一定程度上起到了監督作用。
剛剛開始就業,對於我而言最寶貴的資源就是時間了,而如何充分的利用我的時間資源是我最需要考慮的問題。因爲在工作期間,既要完成工作內容,也要堅持完成自己的學習計劃。如果沒有明確的規劃,我很容易被工作帶亂的節奏,導致自己涉獵廣泛但並不精通,並且長期如此,可能就隨波逐流,導致學習熱情一減再減。
我本人本科並不算很好,還因爲考研錯過了最佳就業時間,也錯過一年多的學習時間。在多種條件不利於我的情況下,我只能不斷的學習,並且對某個方向持之以恆的學習,充分利用時間學習纔會使自己達到預期的樣子。但是最近我發現一個問題,學習的東西會很多,也會很雜,因爲互聯網的東西確實很多,那我該學什麼,爲什麼去學這些知識是一個重要的問題。多年學習經驗告訴我,人的精力是有限的,不可能面面俱到,我該追求的是"一專多能",這就需要我對自己的職業,對自己的技術棧要有一個明確的規劃,這樣纔不會盲目的去學習,白白消耗自己學習熱情。
做職業規劃的預備知識
- 開發的成長過程中的職位;
- 初級工程師:做一些增刪改查的小模塊;
- 中級工程師:做邏輯較複雜的模塊;
- 高級共工程:做核心模塊;
- 項目經理:系統的整體架構;
- 部門經理:多項目的管理;
- 總裁:多部門以及企業的發展規劃
另一種分類
- 實習生
- 底層代碼工人
- 底層程序員
- 程序員
- 初級工程師
- 中級工程師
- 高級工程師
- 項目經理
- 軟件設計師
- 軟件架構師
- (有可能的話)創業做老闆
自己評測一下自己現在處於什麼水平:我現在處於初級工程師水平
- Java工程師成長之路的一些寶貴建議
-
從事開發一定要編寫代碼,而且是將自己最近學習的技術引用到代碼中。個人覺得前期模仿優秀的開源項目,模仿幾個之後可以參與別人的開源項目或者自己編寫開源項目,融合自己所學的所有知識。
-
現在不要侷限於一個技術,要做到一專多能。但要先專,再多能(我現在階段要專精一個技術,以後不會)。
-
理論實踐雙休,不要落下任何一方。不要覺得開發就是敲代碼,我們注重理論知識的學習,用理論來指導實踐。理論相當於內功,代碼技術相當於外功,內外兼修纔有大成就。
-
初期我們要有意識的去積累設計,架構,測試,交流,管理,情商等多方面的經驗
-
在年輕時熟練掌握程序語言,而後是獨立承擔和組織一個完整的項目,在後是能夠帶領一個小組完成項目。在這過程中,你要與內部交流、溝通,要與用戶交流、溝通,要做出項目計劃並督導完成。
-
學習東西要知其然並知其所以然。(要會應用並且指導其設計原理,並且自己可以寫出一個縮減版的例子)如果只是達到應用層面,是永遠無法培養獨立解決問題的思考方式的。
-
要在不斷的學習中建立自己代碼庫,解決問題的方法。要好好總結自己解決問題的思考方式和思考路徑,而不光只是最終的代碼結果。
-
提高軟件知識和技術只是問題的表面,本質是要提高自己認識問題、分析問題、解決問題的思想高度。
-
不要侷限於一門語言,在設計和解決問題時,可以跨語言借鑑別的的語言解決方案。對於這條我的理解是,前期要有這樣的意識,不要侷限於一門語言,但要真正應用到,需要我先專一門語言之後,再去廣泛涉獵其他語言的優秀解決方案,千萬記住前期不要廣泛涉獵,會很浪費時間(預預計兩年)。
-
要想培養自己解決問題能力,和培養良好的編碼習慣,閱讀源碼是很好的一張方式。閱讀源碼要在會應用之後,在閱讀源碼之前最好了解常用設計模式,這樣方便自己理解源碼設計者的設計思路。
-
以工程師的眼光觀察、分析事物和世界。我覺得要有一定的基礎纔能有獨立分析和解決問題的基本素質。
-
要鍛鍊自己的文檔編寫能力,由於時軟件工程專業,在學校也編寫過幾個完整的系統開發文檔
- 關於如何學習的寶貴建議
-
要養成自我學習能力,工作期間大家都很忙,基本沒有時間回答你的問題。
-
學習建議通過視頻入門,在通過閱讀書籍更加全面系統的學習該知識。
-
個人覺得書籍資源比視頻資源更好尋找,因爲大多視頻白嫖嘛,我們還要篩選資源,書籍資源每個知識領域都有經典書籍
-
看書建議,一本書最少看三遍。其實讀多少遍根據自己而定,最重要的是將書中知識變成自己的智慧,爲自己所用。
-
永遠不要太相信自己的記憶力,前一兩遍屬於涉獵,但是後面的閱讀一定寫自己的讀書筆記。這裏的筆記不是知識點總結,而是自己理解一個知識點的思路。(知識點總結可以直接看書籍目錄)
-
前面提到書籍目錄,這是學習中很重要的一個資源,目錄也幫助我們節省了做知識點總結的時間,讓我們更加關注於知識,而不是忙於做筆記。要回顧知識點時,直接翻開目錄回顧就行,遺忘知識點,模糊知識點直接翻到相應頁回顧。
-
看書一定要看經典,高質量的書,所以在選擇書籍時不要草率。以爲看書是全面,系統,深入瞭解知識,並且耗時久,一本好書讓你的這個過程更加的有價值。
- 關於時間規劃方面的寶貴建議
-
三八原則:一天24小時,工作8小時,睡覺8小時,業餘時間8小時。業餘的8小時決定你的人生成敗!(有的人可能因爲加班沒有八小時的業餘時間)。
-
在一般情況下,每三個月對自己所做的工作進行一次總結,每半年對職業規劃重新評估並進行相應的調整。
Java技術棧
職業規劃
-
如上Java開發的不同職業劃分,我的技術的最終目標是成爲優秀的架構師,預計5年後踏架構師行業,8年成爲優秀的架構師。
-
2020年之內達到中級Java工程師水平(距離現在一年時間)。
-
2021從事中級工程是開發工作,獨立完成複雜模塊實現(距離現在兩年時間)。
-
我覺得我再往後規劃都是很虛的,我會一年做一次規劃。但是總體路線就是從 初級工程師 -->中級工程師 -->高級工程師—>項目經理—>架構師---->優秀架構師
最近一年學習計劃
- Java語言基礎:集合,異常,i/o,併發,面向對象
- 設計模式
- 關係型數據庫:MySql/Oracal
- 非關係型數據庫:Redis(緩存),MongoDB
- 框架:Spring,SpringBoot,SpringCloud , Mybatis/Mybatis-plus
- JVM知識,建議JVM和併發編程聯合起來學習
- 搜索引擎:Elasticsearch
- 容器:Docker
- 數據結構和算法,前期開發中基本用不到,但是長遠發展時很重要的。(leedCode刷題)
- JDK集合源碼分析,SpringIOC源碼
- String StringBuffer List HashMap TreeMap LinkHashMap JDK源碼分析
以上是我在最近一年內要掌握的技能,學習程度要達到知其然並知其所以然的程度
學習方式:
- 通過視頻和開源項目快速達到應用層面,並利用博客記錄使用學習記錄。項目完成通過看書和文檔進行深入學習,並用博客記錄學習筆記。在通過做項目經學到深層次知識應用到實際開發中,達到知其然知其所以然,在將思想應用的實際開發中。
- 所閱讀書籍必須三遍以上,必須要將學到的急時用項目開發來檢驗。在某個技術達到一定層次,一定要在相關社區瞭解該技術最新情況,活躍於社區中,於他人討論技術。
學習順序
-
Java基礎回顧,Java集合源代碼
-
設計模式學習,瞭解常用設計模式
-
帶着設計模式進行工作和閱讀Java集合源代碼,閱讀優秀的開源項目
-
以我現在的框架水平,可以達到運用spring boot進行開發。搭建自己開源項目,項目基本已經決定好了。運用到的技術如下:
- springboot
- redis,MongoDB
- Elasticsearch
- MyBatis-plus
- MySql
- Linux
-
深入理解所有技術,學習SpringIoc源碼,springboot源碼(到7月中旬)。
-
學習JVM+併發,並學習Java併發方面源碼(10月份)。
-
重構所作項目(或者新建開源項目),考慮負載,高併發(12月)。
-
學習springCloud, Docker,微服務相關知識。(2月份)。
-
整合之前所有的技術,搭建開源項目,完整做完一個項目。自己獨立完成所有功能,鍛鍊自己獨立解決問題能力(4月份)。
-
在這期間,整理自己的代碼庫,將一些可行的解決方案進行整理。寫博客分享自己的學習成果。
-
一個重要而不緊急的事情就是算法數據結構學習。這一塊知識我慢慢學,一邊啃《算法》,一邊在leedCode刷題。爭取一年之類刷滿365到題,內容包括(數組,鏈表,棧,隊列,字符串,樹一部分),
-
數據結構和算法是我非常重視的一塊,對於我以後的發展至關重要,我會不斷深入學習該剛方面知識。
-
一年之後根據自己所掌握的技術,進行下一年的學習計劃指定。
一年之後要達到的水平
-
熟練應用常用框架技術,數據庫技術,容器技術。
-
理解springboot spring 設計原理,理解Java如何解決併發問題,並能借鑑其思想解決自己項目中的併發問題。
-
瞭解springCloud,會應用,但不必深入
-
具備獨立解決併發問題的能力,是通過自己在閱讀源碼,閱讀優秀開源項目之後培養的能力,而不是百度 谷歌得到的解決方案。
-
能夠獨立完成複雜模塊,並編寫高質量,整潔,優美的代碼。
-
達到能夠熟練運用常用的設計模式來設計我的代碼,培養代碼抽象的能力。
-
在所制定的開源項目計劃完成之後,整合所學知識之後,能夠流暢的看懂
《Java編程思想》這本書。