當通常的程序員工做5年左右後,每每會遇到事業上的一個瓶頸期:能力上已經達到高級開發,工資比上不足比下有餘,並且至少能在所在城市站穩腳跟。java
不過根據行業現狀,這類程序員再要向上提高,難度就不小了,具體表現爲:很多人可能就在中小型公司間徘徊,工資或許有提高,但再也沒法更高效地積累本身的經驗和能力,或者就是,工做經驗8年左右的程序員論能力和5年經驗的沒差多少。linux
其實,大多數程序員都很勤奮,沒法百尺竿頭更進一步的緣由不是由於懶惰,而是不知道方法,本文就將分享這方面的內容。正文開始。-------------------------------------------------------------程序員
得過且過類型的程序員這裏就不說了,相信你們都不是。web
不過我見到很多具備5年經驗的程序員,他們都很勤奮,但他們在攀登事業更高峯時,或多或少地會有些迷失感。面試
下面舉些例子:數據庫
1 小張當前處在一家規模不算大的公司裏,也已是高級開發了,也能在項目組裏能獨當一面,天天也很忙,總感受在重複勞動,不知道後繼該如何發展。後端
2 小李在一家外企,福利待遇也不算差,工做也不能算累,能自由安排的時間也不算少。在公司裏乾的活技術含量不算高,好比用的是純Java+JDBC,架構大多也就Spring Cloud,併發量也很少,數據庫是MySQL主從,看着一些技術大牛很風光,本身也想學,但技術點太多,每每學着學着就放棄了。緩存
3 小王在一家互聯網公司,天天工做壓力很大,版本迭代很厲害,總感受陷入了業務裏,也不知道該如何進一步提高本身的能力,也不知道該進一步學哪些技能。服務器
上述只是舉例,對此,你們須要認真對待職業瓶頸期。架構
不然的話,或許會出現以下你們不肯意看到的結果。
1 過了快速進步期,我的發展就停滯不前了,好比在公司裏,8年工做年限的程序員乾的活和5年經驗的差很少,並且也體現不出年限高的優點。
2 也能經過跳槽不斷漲工資,但所在的公司規模始終不大,這裏我無心歧視小公司,但大公司里程序員的眼界和格局廣泛要比小公司的要好廣闊。
3 我目前在上海,上海的生活壓力也不算小,並且隨着程序員的年齡增加,就得面臨結婚買房照顧父母小孩的壓力,若是持續2,3年發展停滯的話,生活可能就會比較艱辛。
解決這個問題時,咱們須要直接面對靶心。
比較直接但有效的解決方案是:提高本身的能力,在公司裏掙更多的錢。再具體一點,大公司每每須要哪些方面的能力呢?本人最近幾年工做的公司規模不算小,也接觸了很多大廠的程序員,這裏來講下個人體會。
1 對高級開發而言,大廠的基本要求是技能達標,即能完成項目組的任務,但就這點遠遠不夠。
2 應該適當知道些配置部署方面的知識,好比能搭建一個Git平臺管理代碼,能用Jenkins或uDeploy工具搭建一個自動化部署平臺,一旦項目部署到web服務器上有問題,高級開發還能夠解決一些這方面的基本問題。
3 技術是爲業務服務,一旦業務出現了問題,須要能及時經過看日誌,快速定位和排查問題,這就要求會些基本的在linux上查看日誌的命令,好比grep,less, vi等。
4 這點尤其重要,通常在公司裏,每一個人的工做都很忙,因此面對本身不熟悉的業務,從別人那邊獲得的幫助可能會不多,因此高級開發的學習能力必定得很強,必定得能經過查看代碼或日誌等方式,快速地熟悉各種業務和流程。
5 高級開發通常就須要能獨當一面了,好比出現問題,高級開發就須要和需求方或測試方或其它組的人溝通,獨立地解決問題,而不能事事再上報領導,請領導解決了。
而對於架構師,除了至少得有上述技能外,還得具有以下方面的技能。
1 不只要保證系統的平穩運行,還須要找到系統系能上的痛點,好比性能上卡在哪裏,或一旦當系統業務規模須要擴大,哪些當前的因素會成爲瓶頸。
2 找到痛點後,須要能獨立地設計出方案,這個方案可能就不是僅僅是代碼或數據庫級別的,每每是分佈式架構級別,好比如何搭建負載均衡組件,如何搭建緩存等。
3 和高級開發相比,排查問題的級別須要進一步提高,好比對高級開發而言,能夠經過debug代碼來排查問題,但對架構師而言,就得經過debug現有的jar包來排查底層問題。舉個例子吧,我最近就見到一位大牛經過debug Oracle JDBC的底層包,來排查數據類型不一致的問題。
4 一些分佈式的組件,必定得很是熟悉,得熟悉到了解到組件裏關鍵jar包的底層代碼。這裏再舉個例子,好比對高級開發而言,可能瞭解到消息中間件的用法就好了,但我知道的一位資深架構師,能經過mq平臺包的異常,一眼看出是哪一個裏面哪一個jar包報的異常,好比是某個jar包裏的無界隊列過長致使OOM了,或者是哪一個jar包引用的日誌組件和其它jar包衝突了。
我見過很多資質尚可,但由於感受高級開發或架構師的標準過高從而自暴自棄的,不過,我也見過(以及據說過)很多同窗經過逆襲,最終晉級到高級開發或架構師的水準。
1 小A,計算機大專,後來經過專升本和專業的軟件培訓,具有了從事軟件開發的能力,第一家公司很是小。但他早上上班,晚上看書和看視頻,還在網上租了個空間,本身實踐Spring MVC,Spring Cloud,大數據以及分佈式架構,通過3年努力,最終進了阿里,成爲其中的高級開發。
2 小B是上海一家二本學校的計算機專業學生,以前作了銷售等和軟件無關的工做,從事軟件行業時,已是28歲了,我記得他第一份軟件工做也是一家小公司,入職後他不斷和我吐槽,說他和22歲的畢業生作的是相同的工做。
但他把這種壓力當成了動力,也是不斷學習不斷實踐。
通過不斷試錯,最終他找了一個比較好的方向,AI裏的深度學習,而後通過面試,成功入職一下作數據分析的公司,目前薪資碾壓同齡人。
案例講完了,而後講些能快速提高本身的方法:
1 神槍手是靠子彈練出來了,軟件高手是靠踩坑積累起來了。因此在公司裏,一旦有了問題,不論是本身的仍是別人的,必定得總結,包括總結問題場景,總結排查問題的方法(如何看日誌,以及看日誌裏的哪些要素),以及總結解決問題的方法(好比如何處理jar包衝突,如何經過分區等手段提高數據庫查詢的性能)。
以我本身的體會,我最近半年遇到的坑比以前3年的都多,但我確實感受最近進步很快。靠實際解決問題是提高本身身價的最好辦法,沒有之一。
2 必定得鍛鍊在linux方面的基本功,包括打開日誌,以及在日誌里根據關鍵字的找到上下文,並排查問題的本事。技術只有和業務結合,才能產生價值,在業務點方面,排查問題是繞不過去的彎,我見過身價不一樣的高級開發,在這方面的能力絕對是不同的。
3 完成本職工做外,必定得眼觀六路耳聽八方,在此基礎上得邁開腿,多動嘴。
具體而言,有人到組裏來尋求幫助時,能夠儘可能幫忙,哪怕這個問題最終沒解決,本身至少也能經過觀察別人如何解決,從而提高能力。又如,遇到測試開了bug,就得多和測試溝通,爭取快速地重現和解決問題。這樣一來二去的,本身分析處理問題的能力提高了不算,還能提高本身協調溝通的能力,一箭雙鵰。
4 學習的重要性就不說,這裏說下學習的方法。第一還得見縫插針地學,第二,必定得經過看視頻或書,系列地瞭解到這個方面的知識點,先面到點,別反過來。第三,必定得邊學邊實踐,若是開發環境沒有,就本身搭建。第四,必定得經過面試(未必要去)等手段檢驗本身的學習方向和成果,一旦出現誤差,得及時糾正。
我就見過很多頭腦靈活的人,就不斷學不斷面試,這類人學習的效率要遠比閉門造車的人要高。
雖然進階沒捷徑,但若是效率高,也能縮短期,下面給出個小竅門:到大廠實踐。
我這裏無心貶低小公司,不過相比之下,大廠裏處理問題的格局會大些,並且問題的種類和難度也會多,根據我本身的體會,在大廠,尤爲是版本迭代快的互聯網公司,提高能力的速度是不可想象的。
不過這裏問題又來了?如何進大廠?在我以前的博文裏,有很多關於面試和寫簡歷的文章,這些必定能幫助到你們。
咱們經過辛苦學習,經過不斷加班,是爲了提高本身的能力,但更是爲經過變現能力掙到更多的錢。下面就列些你們感興趣的話題:如何變現技能。
1 經過找到更好的工做,提高本身的工資。這是個不二法門。
給出些上海當前的薪資待遇:5年java後端,若是能力好,2.5w+一個月,8年的,3w的不是問題,10年+的4w都算少的,5w+都有可能,並且若是運氣好,還有期權股份等因素。
有同窗會說了,這是廢話,技能高了天然工資就高,但我想說的是,不少大牛除了公司外,其它收入也很是可觀。
2 能夠用本身的技能,寫博客,出書,錄製視頻作系列課,能夠到外面培訓學校講課,甚至能夠作收入更高的企業培訓。
我有自知之明,我不算大牛,但我目前尚屬勤奮。
因此最近不斷在寫博客,也出了書:java web輕量級開發面試教程,反正上述掙錢的渠道我都嘗試過。
個人體會是:只要有能力,就能夠打出名氣,而後就能夠經過同一份工做(好比寫博文出書作講課視頻)掙多份錢,這樣名氣大了不說,還能提高掙錢的效率。
3 能力強了,再經過寫書寫博文等方式,就能在業務打出名氣了。這樣講課或文章的單價就提高了。
這方面,最好是找個能包裝本身的渠道,(好比網站或培訓學校或開源組織),這樣就能打出知名度,知名度有了,跳槽也好,出書也好,掙錢的速度就更快了。
4 以本身的能力和名氣去認識更多的人,人脈關係一廣,接項目或者合做什麼的就都有可能了。
我見過這類大神,他們八面玲瓏,處處接項目,而後本身作或外包出去,每個月的收入很是可觀。但我達不到這種地步,目前階段仍是在不斷提高能力,靠技術吃飯。 很是但願在這方面有心得的大神來分享下經驗。
天道酬勤,靠本身的勤奮多少能換回些收穫,但用對方法走對路,這點也很重要。本人最近接觸了很多軟件行業的朋友,也屢次接到這方面的諮詢請求,最近在這方面稍微有些體會,因此寫下此文。
本文的初衷是爲了分享,在字裏行間也帶了些具備可操做性的方法,並且是在週末利用休息時間寫成,因此若有有錯處,也請你們包涵,若是你們看到稍有可取之處,也請勞駕點擊下面的「推薦按鈕」,你們的推薦,是對個人最大幫助。
最後再次感謝你們看完本文。本文歡迎轉載,轉載時,請註明原文出處和做者。