來源:公司資(zī)訊 | 2021.08.16
如何破局?
首先,如果你認爲自己是一(yī)個天才程序員(yuán),那麽你可以不按照我(wǒ)說的做,因爲你是天才,你可以分(fēn)分(fēn)鍾達到甚至超過百萬。如果你認爲自己隻是一(yī)個普通人,那好,繼續往下(xià)看,相信會對你有所幫助的。
我(wǒ)們該如何打破自己的技術水平和工(gōng)作年限嚴重不符的這個僵局呢?
首先,最重要的還是心态 。爲什麽這麽說,因爲從事互聯網開(kāi)發工(gōng)作,程序員(yuán)的壓力其實還是蠻大(dà)的,在高強度的日常工(gōng)作中(zhōng),就需要我(wǒ)們以良好的心态來面對自己的工(gōng)作。其次,就是要學會釋放(fàng)壓力,以正确的方式來釋放(fàng)或者緩解自己心中(zhōng)的壓力。
其次,就是關鍵的一(yī)點,你要從心底問自己是否對現在的工(gōng)作感興趣。 其實,我(wǒ)們都知(zhī)道,隻要是做我(wǒ)們自己感興趣的事情,就會事半功倍,如果是出于某種原因不得不去(qù)做某件事,這樣往往會是投入了很大(dà)的精力,效果往往還不太好,這就是我(wǒ)們常說的事倍功半。
經常有小(xiǎo)夥伴在微信上私信我(wǒ):我(wǒ)是學Java呢?還是學Python呢?哪個吃香啊?哪個好找工(gōng)作啊?學習大(dà)數據怎麽樣啊?大(dà)數據是不是已經飽和了啊?這一(yī)連串的問題,其實,我(wǒ)看到小(xiǎo)夥伴們的這些問題,我(wǒ)都不知(zhī)道如何回答。爲什麽呢?其實這些問題,小(xiǎo)夥伴們心裏應該都清楚:隻要你足夠認真的堅持學下(xià)去(qù),學什麽都能夠找到一(yī)份好工(gōng)作。
究其本質, 對于我(wǒ)們這些搞技術的人來說,年齡的增長其實沒有外(wài)界說的那麽可怕,真正可怕的是你的年齡和你所掌握的技術深度沒有匹配。如果你的年齡與你的技術深度不匹配時,你是很難找到一(yī)個令自己滿意的工(gōng)作的。試想,如果你已經工(gōng)作5、6年了,你所做的工(gōng)作連1、2年工(gōng)作經驗甚至是應屆畢業生(shēng)都能做時,那公司爲啥還要你來做呢?給你養老嗎(ma)?公司是要盈利的,盈利就意味着要賺錢。怎麽賺錢?節省成本就是一(yī)種賺錢的方式,那不好意思,你就會被淘汰掉。
所以,在技術這條道路上,你也需要選擇一(yī)個自己感興趣的方向。比如:Java、Python、大(dà)數據、雲計算、雲原生(shēng)等等。接下(xià)來,就是深入學習了。要知(zhī)道: 再牛逼的技術,也抵不過傻逼似的堅持。 隻要堅持,就沒有學不會的技術。
在學習的過程中(zhōng),一(yī)定要明确自己學什麽,切記不要三心二意。不要今天學習Java,明天又(yòu)想學習Python了。一(yī)定要給自己制定一(yī)個目标,并将目标拆分(fēn)爲每天的學習計劃。
學些什麽?
調整好心态後,我(wǒ)們再來看看需要學習哪些内容。
夯實基礎
首先,就是要夯實自己的基礎。比如對Java集合框架,多線程與并發包,IO/NIO,JVM,内存模型,泛型,異常,反射,等有深入了解,最好是看過源碼了解底層的設計。
比如一(yī)般面試都會問 ConcurrentHashMap,CopyOnWrite,線程池,CAS,AQS,虛拟機優化等知(zhī)識點,因爲這些對互聯網的企業是絕對重要的。而且一(yī)般人這關都過不了,還發牢騷說這些沒什麽用,爲什麽要面試。
這裏,我(wǒ)給大(dà)家舉一(yī)個我(wǒ)所經曆的項目的真實案例。之前,我(wǒ)所在的公司,在做一(yī)個高并發電商(shāng)項目時,一(yī)名開(kāi)發同學在項目中(zhōng),因爲使用了默認的創建線程池的方式,導緻線程池中(zhōng)使用了默認的無界隊列,在遠程服務異常情況下(xià)導緻内存飙升。最終通過排查源碼定位到問題,将其修改爲有界隊列,解決了問題。
試想,你要是連線程池都不清楚,你怎麽去(qù)玩?再舉一(yī)例,由于對 ThreadLocal 理解出錯,使用它做線程安全的控制,導緻沒能實現真的線程安全。此時,你會怎麽解決這個問題?
所以,基礎很重要,一(yī)定要把基礎學紮實。萬丈高樓平地起,隻有把基礎搞紮實了,上層建築才會更加牢固。
深入互聯網技術知(zhī)識
關于這一(yī)點,我(wǒ)們需要從底層說起,你起碼得深入了解 MySQL,Redis,MongoDB,Nginx,Tomcat,RPC,JMS、Dubbo、SpringCloud、SpringCloud Alibaba、性能調優、Netty、服務注冊發現、服務治理、各種中(zhōng)間件、互聯網工(gōng)程、并發編程、分(fēn)布式、微服務、雲原生(shēng)等等方面的知(zhī)識。
你要問需要了解到什麽程度,這裏,我(wǒ)可以給你舉幾個例子:首先對于 MySQL,你要知(zhī)道常見的參數設置,存儲引擎怎麽去(qù)選擇,還需要了解常見的索引引擎,知(zhī)道怎麽去(qù)選擇。知(zhī)道怎麽去(qù)設計表,怎麽優化 SQL,怎麽根據執行計劃去(qù)調優。掌握如何去(qù)做分(fēn)庫分(fēn)表的設計和優化,一(yī)般互聯網企業的數據庫都是讀寫分(fēn)離(lí),還會垂直與水平拆分(fēn),所以這些也需要你多多少少掌握。
然後 Redis,Mongodb 都是需要了解原理,需要會調整參數的。
而 Nginx 和 Tomcat 幾乎都是 JAVA 互聯網開(kāi)發必配的Web服務器,這點,可能跟阿裏的技術棧選擇有點關系。
至于RPC相關的就比較多了,必須了解各種網絡協議,序列化技術,SOA 等等,你要有一(yī)個深入的理解。現在應用比較廣的 RPC 框架,在國内就是 dubbo 了,小(xiǎo)夥伴們可以到Dubbo的官網進行學習,也可以到github下(xià)載源碼進行學習。
至于其他的嘛,就需要小(xiǎo)夥伴們自己去(qù)研究了。總之,掌握它們,對你沒壞處。
培養硬核能力
我(wǒ)這裏說的硬核能力,指的就是:編程能力,編程思想,算法能力,架構能力、設計能力、溝通能力、調優能力、系統駕馭能力、行業影響力。
這裏,我(wǒ)就簡單的說下(xià),除了基礎部分(fēn)和互聯網技術需要掌握的技能外(wài),還有幾個是必須要掌握的,那就是:編程能力、編程思想、算法能力、架構能力、設計能力、溝通能力、調優能力、系統駕馭能力、行業影響力。
編程能力這個我(wǒ)覺得不好去(qù)評價,但是拿一(yī)個 5000W 用戶根據姓名年齡排序這種題目也能信手拈來。問你個 AOP 和 IOC 你起碼要清清楚楚,設計模式不說每種都用過,但也能了解個幾種吧。對于算法來說,你需要掌握基本的算法知(zhī)識吧。其實,開(kāi)發一(yī)個系統時,很多地方都需要考慮使用算法來實現。有些小(xiǎo)夥伴認爲自己是做業務開(kāi)發的,用不到算法,不需要學習算法啊,其實這種思想就是錯誤的!!
然後就是架構能力,這種不是說要你設計個多牛逼多高并發的系統,起碼讓你做一(yī)個秒殺系統,防重請求的設計能快速搞定而沒有坑吧。
最後是要提升自己的系統設計能力、溝通能力、系統調優能力和系統駕馭能力,逐步提升自己的行業影響力!
————————————————
版權聲明:本文爲CSDN博主「冰 河」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/l1028386804/article/details/115677451