工作2年還是隻會增刪改查,Java程序員如何進階?

吳偉亞


做JAVA開發的三年一個坎,你應該慶幸你還有一年的時間可以用來提升,讓自己不要後悔!

不過話說回來,在平時的工作中其實90%的工作量都是增刪改查,或者是對增刪改查的改進,那些所謂的高併發,多線程,高可用系統,分佈式系統,負載均衡,緩存,數據庫讀寫分離,分庫分表等等全部都是圍繞增刪改查來做改進的!


比如說緩存是因為數據庫的讀寫壓力大的時候,為增加讀寫效率而引進的,使用緩存的內存讀寫代替了數據庫的硬盤讀寫!

比如說數據庫的讀寫分離或者分庫分表都是在單點數據庫的壓力過大,性能低的時候引入的無論架構怎麼設計都是為了得到更好的讀寫效率!

再比如說,高可用,分佈式都為了避免單點服務出現異常,導致讀寫服務不可用,從而引入的集群部署或者分佈式部署!


由此可見,增刪改查是我們最核心的功能,只不過我們引入了其他的架構,完善我們的功能,讓我們的增刪改查更加的快速!

在實際的開發過程中,要多思考系統的瓶頸在哪?增刪改查的壓力在哪?怎麼改進?不要網上搜一堆亂七八糟的,覺得很屌的東西,學完之後發現他根本不知道是做什麼的,一切的開發圍繞我們的業務來展開,然後才是增強體驗性,搭建快速穩定的架構!

那我們應該怎麼來進階呢?

1,大局觀:不要只是盯著自己開發的功能,要知道整個系統的整個架構是什麼?使用什麼技術?服務之間怎麼通信?整個服務的性能怎麼優化?全面的來考慮,不然晉升的肯定不會是你!

2,不要一心撲在公司的工作上,要有自己的時間去學習最新的技術,去拓寬自己的知識,明白別的公司用的是什麼?主流開發技術開發是什麼?

3,一定要多總結,不管是平時的工作中或者學習中都能學到很多有用的東西,要把它轉化成demo記錄在自己的技術文檔裡面,方便以後自己查閱和使用!不是做過就算了,一定要記錄下來!

我晚上加班的時候,除非有急事,不然都學習自己的!然後才能感覺自己有很大的提升!我自己記錄了很多做過的,學過的JAVA相關技術,以後會一直分享,需要的話請關注!


此生唯一


我遇到很多包括工作3-4年的同事,還是隻會增刪改查,這其實跟很多程序員的工作環境有關,有的公司可能像服務器、併發這塊的公司完全不用你來處理,而正好很多程序員也比較安於現狀,就是所謂的舒適區,他們習慣了。其實這主要還是在個人。工作兩年左右的程序員應該會多多少少聽到到除了業務層面的其他東西,比如分佈式,高併發之類的。

本人工作3年,可以說工作兩年時候也是和作者一樣的,只接觸到增刪改查,那麼後來我是堅持學習工作用到的技能之外的東西才遇到一份不錯的工作。

redis

redis可以說現在任何一個項目都離不開它,那麼redis我建議你看下他是如何持久化的,rdb和aof持久化的觸發策略,rdb和aof持久化的區別,redis支持的數據類型,redis對於過期鍵的處理方式,redis集群、分片

docker

當下最火的容器技術,最基本的要理解下鏡像和容器的區別,如何用docker搭建一個定製化的鏡像,如何用docker搭建一個自己的開發環境

mysql

可以說數據庫方面mysql是最主流的,增刪改查一般說的就是對它的操作,確實太基礎了,你應該學習下:mysql最左原則,mysql創建索引的標準,垂直分割和水平分割的使用場景,主從模式,mysql索引用到的數據結構b+樹,b+樹和b樹的區別


數據結構與算法

高級程序員進階的必經之路,之前看到有篇帖子說面試程序員時要造飛機大炮的,結果進來就是擰螺絲的,這裡的飛機大炮有一部分就是數據結構與算法,紮實的基本功對於一個高級程序員來說必不可少


修煉內功的程序員


我的經歷應該跟題主比較類似,我是今年5月剛換的工作,上一份工作我從畢業開始一直幹了5年,我的前公司是框架部封裝好的框架,再在框架基礎上二次開發,而且是公司以業務為主導的,不看重技術,開始1~2年還好,可是隨著時間的推移,很多人會吐槽學不到新知識,感覺每天只是在做著重複的工作,沒有任何提高,導致先先後後跟我一起進公司的幾個同學都辭職了。

其實這五年時間的最後倆年都萌生過跳槽的想法,原因就是覺得太安逸了,學不到新技術,想想自己五年後甚至十年後依然是這樣,就覺得壓力很大。有人說,只會增刪改查的程序員最多稱為碼農,一名真的程序員,技術應該是隨著工作年限不斷增長的,5年時間,混的好的已經是架構師、技術總監級別了,再看看去年的自己,每次面試處處碰壁,一遇到技術面試就啞火。然而,經過一年的沉澱,今年終於換了一份還算滿意的工作。

Java程序員如何進階

  1. 自學,生於憂患死於安樂,能夠2年內意識到自己只會增刪改查而想有所改變,已經是一個好的開端了,從去年跳槽受打擊後,我平時就會利用下班和週末的時間去網上看一看教程,也會買一些相關的書籍,主要針對目前比較流行的技術,填充自己的短板。
  2. 跳槽,互聯網公司千差萬別,有業務為主導的,也有技術為主導的,可以試著面試一些技術與時俱進的公司,最好是沒有框架的,面試受挫沒關係,我的方法就是多試試,每次面試前先針對技術要求做好準備,面試失敗再及時把面試官問的幾個技術點搞懂,我也是面了十幾家才拿到offer,因為我下定了今年必走的決心。
  3. 轉管理崗,很多公司的領導雖然是技術出家,但是後期專心於業務和項目、人員的管理,假如對管理崗感興趣,也可以試著朝這個方向轉型,畢竟沒有人會敲一輩子的代碼,程序員到35歲後,年齡越大,技術方面的競爭力越小,因此轉型是必然趨勢。

總而言之,作為一名程序員,就需要不斷給自己充電,工作中和空餘時間都是提升自己的機會,無論是技術還是管理,靠的不是時間的堆砌,而是自身的努力。


以上為個人觀點,歡迎在評論中發表自己不同的觀點,喜歡的加個關注,謝謝。


架構師的成長史


你才工作了兩年的時間,可以非常熟練的做增刪改查,就已經很不錯了。實際上在我們公司有一些程序員已經開發了好些年的時間了,甚至連一個遞歸都寫不好。

作為一個工程師,想要提升自己的能力的話,僅僅是依靠公司裡面的項目,絕對是沒有很大的發展的。你需要自己去拓展一些項目,比如說你可以去參與一些開源的項目。

又或者你可以自己從頭到尾的來設計一套系統,可以從簡單的系統開始設計,比如說設計一個新聞系統或者設計一個留言板之類的,然後不斷的去優化它,不斷的去提升它。

不要小看這樣一個小小的系統,當你逐漸的能夠把一個小系統給設計的越來越完美的時候,然後你就可以去嘗試做一些比較大的系統啊。因為當你全盤的去操作和開發一個系統的時候,你的整個思路就不是侷限於這個系統上的某一塊功能,而是整體的這個思想就貫徹到你的大腦當中了,這對於你的技術提升是非常有幫助的。

多想多做,而不要僅僅是完成工作,然後就去玩遊戲了。

以上文字只是我的個人觀點,如果各位看官有不同的觀點,歡迎在評論區中討論留言。



FungLeo


話不多,給你個網址 java全棧知識體系 https://www.pdai.tech


Java全棧知識體系


看到這個問題,我快速回想了自己這十多年的程序員經歷,感覺我所有工作的實質好像都是在做增刪查改;但哪些是在提升工作能力,哪些是在做重複性的工作,以及怎樣應對,我談談自己的看法。

增刪查改,也要分場景看

舉個例子,開發一個商城頁面,展示銷售量最高的十件商品。

當頁面一分鐘訪問量只有100次的時候,我們可以執行100次select top 10;但是當一分鐘訪問量有100萬次的時候,這還會是一個簡單的查詢麼?

我在上一家單位的時候,所做系統的業務很簡單,就是把一批數據,按照模板,加工成待發送的短信、電郵,基本上沒有特別難的地方。

但是數據量很大,基本上每天都會處理生成幾千萬條數據,那時候公司還都是IOE的架構,只有單臺Oracle支撐;也就是在這段時間,我練就了一身數據庫優化的本領;但是想象一下,如果數據量再增加10倍呢?如果數據量再增加100倍呢?

毫無難度的增刪查改,建議趕緊跳出安逸狀態

如果每天做的都是毫無難度的增刪查改(沒有複雜業務,系統也沒有多大的壓力),建議還是早些跳出這個安逸的狀態,就算你對現在的工作環境很滿意;因為說不定到什麼時候,你就會摸到職業發展的天花板,甚至會面臨失業的危機。

還是上一家公司的這個項目,我在這個項目工作第三年的時候,基本上把能做的都做完了,優化基本上也到極限了,最後半年的工作狀態是:需求來了,做一下設計,然後讓其他同事開發;我朝九晚五,上班有大把的空間時間;還好我利用這些時間去學習,看流行的技術框架,後來跳槽,工資上升了一大截。

如果你正處於這種工作狀態,我建議:

  • 一定要清楚地認識到:作為程序員,只做簡單的增刪查改,是很危險的;

  • 考慮一下能否把項目做得更好,是否可以負責更多的工作;

  • 多學習一些流行的技術,並考慮能否應用到工作中(眼界很重要);

  • 跳槽,尋求更大的平臺,很多時候,程序員的成長都是被逼出來的。

  • 不要享受安逸!

最後,敬大家一碗雞湯:你現在的生活水平,是你三年前的工作狀態決定的;而你現在的努力程度,會決定你三年後的生活;軟件開發是個逆水行舟,不進則退的行業,既然選擇了這個行業,那麼就要努力地“敲”下去。

希望我的回答,能夠幫助到你!我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。


會點代碼的大叔


這是Java程序員中大部分初級程序員很容易走上的路,如果自己不主動學習,只靠公司完成的任務很難對自己技術水平提升。

我是Java開發者,看看身邊工作了一年到三年的同事,能力參差不齊。

之前聽一個工作了一年半的研究生同事分享自己的心得,當著部門總經理的面,說剛開始工作薪資不重要(也暗示了一些東西),主要應該花費精力和財力去提升自己。

工資不高是小事,把錢投資自己是大事

買技術書籍買技術課程,如果走正規渠道花費的都不是小數目,但是對於自己的能力提升,這點金錢和精力也是值得的。

很明顯他屬於工作之餘會找自己的技術棧去深挖。乃至於他僅僅工作兩年就可以擔任技術組長,可以負責某個核心模塊的開發任務。


這也說明一件事,增刪改查只是為了完成初級的工作,當你自己主動去學習去提升,才會不斷因為自己的能力充足而被賦予更多技術層面更高的任務。

關注“極客宇文氏”,一名有料的軟件工程師。

極客宇文氏


對一個已經兩三年的Java程序員來說,如果主要工作還是增刪改查,這是相當痛苦的一件事情。互聯網行業是一個發展快、變化快的行業,身處這個變化莫測的行業,總讓人感覺既興奮又不安。


在Java程序員的職業生涯中,如何才能不斷提升自己的核心競爭力,實現自身技術能力進階,也一直是一個大家都比較關心的話題。下面簡單羅列了Java程序員學習進階的幾個方向,供大家參考。


編程基本功:數據結構和算法

1.數據結構相關的哈希表、鏈表、二叉樹等等

2.常見的算法有哪些?至少下圖的算法我認為應該要掌握。

比如:HashMap如何擴容,重點就是考底層數據結構。

編程基本功:Java編程

這些都算是編程基本功底:多線程、JVM、併發容器、併發類、NIO等。

Web開發

其實web開發這個領域,如果你要掌握好了,發展也非常不錯的。

比如:現在的H5、小程序等,對於掌握前端技術的開發人員,競爭力也是槓槓的。

當然作為後端開發人員,多掌握點前端的技術,那也是必須的。

數據庫

重點就看圖了,這裡涉及的技術還是蠻多的,mysql、oracle、nosql相關的mongodb,以及如今大家都熟知的分庫分表、讀寫分離等技術。

這些都是大家熟知的,我補充點設計相關的:數據庫設計範式、索引、事務、數據庫相關的慢查詢、長事務。

這些也算是數據庫技術的編程功底。

研發相關的框架工具

Java程序員對於下圖應該都是比較熟悉的,這些框架與工具都是經常使用。

架構設計

談到設計,就不得不提到項目中的概要設計和詳細設計,這就會涉及到UML。

除此之外,整個項目的設計,這個時候考驗你的架構設計能力。

這裡的架構設計,包含的系列非常多,特別是Redis、應用程序拆分、拆分後涉及到的RPC微服務等技術,以及後端數據庫的拆分技術,以及拆分後的分佈式集群部署。

分佈式會涉及到:分佈式鎖、全局唯一ID的生成、分佈式Session…這裡還有蠻多的,其實大部分我在【BAT架構技術專題合集】中都分享過了,回覆【架構】,即可領取。


結束語


要知道,再成功的大佬也是從第一行代碼開始的,增刪改查是修煉成神必經之路,該走的階段還是要走,但在走的過程中多看、多學、多思考、多實踐,在自己不同的發展時期,找到屬於你的立足點,只有站穩了這個立足點,你才可以更好的開始延伸自己別的領域。


  • 程序工作,大多始於增刪改查,重複的小事做漂亮,同時擴展自己的技術邊際;

  • 職業生涯中的轉機,源於堅持不懈找方法、尋求改變,主動出擊爭取機會;

  • 欲速則不達,循序漸進成長,不同時期,有不同的成長階段。


俗話說:師傅領進門,修行靠個人,想要技術進階,需要自己持之以恆,付出100%的努力。提前做好準備,機會總是青睞有準備的人,程序人生,學無止境,共勉~


優知學院


第一,要強大的自律能力。學習是人一生中最不可缺少的東西,活到老學到老。必須要很強的自律能力,堅持每天學習新的知識。

第二,要有合適的方式方法。比如你現在只會增刪改查,你可以整理一下你目前自己的知識點盲區所在。對你目前正在用的,並且還不熟悉的技術加以補充學習。

第三,要有合理的計劃。說的能力都不是一蹴而就的,班長高樓平地起。再厲害的程序員,他的知識儲備庫也是靠自己一點一點積累起來的。千萬不要貪多嚼不爛,合理安排自己的學習時間以及學習方向。給自己定一個半年計劃,等到半年之後你再去看看計劃實現了多少?如果你已經實現了一大半,那麼恭喜你已經提高了。


小紅櫻桃


java程序員絕大部分工作的時間都是增刪改查,很多人覺得這項工作沒什麼技術含量,任何一件事情都要站在不同的角度去考慮,對於大部分的java程序員來講開始前幾年就是在為了達成增刪改查而努力,大部分的程序員具備這種能力之後就開始相對安逸的狀態了,增刪改查的功能如果對於簡單的工程代碼來講就是比較簡單,如果是涉及到大總量的數據處理,能像簡單數據一樣玩轉那就是真正的能力問題了。

所以java程序員如果能力到了增刪改查的之後,就要考慮下一個層次的突破問題了,現在java的框架非常多,編程變得越來越簡單化,也會更加不可控,主要集成的功能模塊也是越來越多,大部分都是直接從開源社區直接拿過來使用的,平時用的時候可能基本上沒有多大問題,一旦出現問題解決起來就是非常麻煩的過程,所以到了能夠解決簡單問題的能力之後就不要提早讓自己進入安逸期,就要制定下一步的技術拓展能力,看底層代碼到底是如何實現的,如何真的遇到底層的框架問題是不是具備能力去解決。

其實不只是java程序員,大多數的程序員在度過入門的苦逼的時期之後都會有一個比較輕鬆的感覺,就是常說的開竅了,好像做什麼功能模塊都不像之前那麼費力了,感覺編程那就是那回事,這個時候特別容易放鬆對自己的要求,主要針對工作3年左右的程序員,這個時期對於框架性東西還不是很深刻,一旦有這種安逸的想法時間很快就容易過去。

如果現在的你處於這種狀態,將是非常危險的狀態,現在國內程序員的數量少數每年都會產出幾十萬的人數,如果能用幾年的時間達到增刪改查的能力,那麼意味著新進入的人也可以用這些時間達成這種層面,後面的競爭自然會加大,由於技術一直是在進步不及時更新新的技能很容易被淘汰,現在很多人喊著軟件行業不吃香了,說的就是一類水平不是很高,但是市場數量非常巨大,市場當然不會給出很高的薪資,建議在這個階段的人重新規劃自己的技術生涯,如果所在環境就是做點這種事情,可以考慮離職或者轉崗。

尋找一個有挑戰性的工作對於程序員的職業生涯還是非常有幫助的,有挑戰意味著要強迫自己學習新東西,這樣才能夠迫使自己進步要學會改變,如果不能靠意志力來克服就考慮換個環境去做,一個人進入安逸區很容易脫離出來,前幾天發生的甲骨文裁員事件,裡面就是有很多程序員在裡面當作安逸區當作養老的地方,企業畢竟需要競爭,這種類似的場景不會堅持很久的,所以讓自己行動起來,多跟進一些新的技術才是保持市場競爭力的關鍵。

技術能力沒有所謂的天生強者,所有的技術看上去很強的人都是逼出來的,潛力也都是強制挖掘出來的,這條法則對於程序員講也是成立的,技術不行就是拿不到高工資沒毛病。

希望能幫到你。


分享到:


相關文章: