我接觸了不少小公司的程序員後,感嘆真會有不少程序員做不到30歲

本人最近和不少小公司的程序員打交道。經過和他們的深入交流,我感受到了不少小公司程序員的現狀,由此深深地感嘆,可能真有不少小公司的程序員未必能幹到30歲,甚至,一些技術一般態度又不好的程序員,可能還未必能幹到28歲。

1 能踏實做好增刪改查的程序員,就算能力達標

我去我朋友開的一家軟件坐了坐,順帶近距離觀察了他們java程序員的開發日常,首先說明,我接觸到的程序員不是才入職,而是普遍有2到3年工作經驗。他們的開發團隊是一個項目組長外帶10多號人做個java方面的維護項目,用到了spring boot。

其中所謂技術好的程序員,是能根據現有的業務照抄代碼,編寫新業務功能。編寫過程中,如果遇到不熟悉的api,還能上網根據功能查,比如要輸出指定的格式,那就會查下然後用Calander等類實現。如果寫代碼時遇到一些數據庫問題或基本的問題,還能把問題關鍵字放到網上查,並找到對應的解決方法。

在此基礎上,如果遇到有bug,還能主動解決,遇到活還不退縮,也就是說所謂的技術好外加態度好,這種人已經算是不可多得了,至於熟悉maven或git等基本管理工具,那更是能算技術頂樑柱了。在這個團隊裏,不少做java後端的,而且有2年開發經驗,是屬於無法解決實際問題的。比如無法通過debug排查問題,遇到一些JPA方面的問題,或數據源配置問題,根本不知道如何查。

而他們的項目組長,更多的職責是管進度,同時用最簡單的方法把系統發佈到網上,並做簡單的數據庫等方面的配置管理。比如就直接用mvn命令打包,用複製粘貼的方式把jar包放到linux上,遇到數據庫性能問題,還能連到linux上用命令建mysql的索引。不過,就是這樣的技術,用來管理他們公司的項目,也綽綽有餘了。

2 除了業務知識外,這些程序員還會什麼?

我朋友所在公司裏的程序員天天都在創造價值,所開發和維護的項目還真值不少錢,他們每天也不能算閒。但除卻哪些摸魚的程序員,那些態度積極的程序員技術上掌握了哪些技能?

1 業務知識點,比如某個業務流程該怎麼做,中間該從哪裏獲取數據,該返回什麼。這些業務可能是這批程序員平時接觸最多的所謂技能,而公司也是憑藉“能正確開發業務”來考覈程序員,但這些只能算業務知識,不算技術。

2 用Spring boot開發業務的技能,這倒算,不過用Spring boot外帶相關組件開發業務的技能太廉價,哪怕是零基礎的用1個月就能會,而且這種零基礎的程序員進入公司3個月後就能熟悉各種業務,也能用Spring boot開發各種功能,所以只掌握這些技能的程序員太多了。

3 能分析和排查問題,比如出現了空指針,能通過debug找到問題,或者出了jpa的錯誤提示,能把這句提示放網上找,然後再根據提示修改若干代碼和配置,從而解決問題,不過這種技能太雜,以後通過面試跳槽時,無法通過這類技能來展示自己的能力。

4 所謂的項目管理能力,比如會用Maven和Git等,但這些技能可能也就停留在“會用”的層面。

更值得感嘆的是,我觀察下來,這家公司的程序員,有不少是摸魚的,幹活僅限於完成功能不出錯,未必還會再去關心其他還談不上值錢的技術和項目開發的技能。

3 高級程序員和架構師還需要哪些方面的能力?

程序員如果幹到28或30歲,不能僅停留在只會做增刪改查業務的初級階段,因爲如果單憑這些能力,會很輕易地被應屆生,甚至是培訓班學員替換。

如果站在老闆的角度,年輕人肯加班,而且更容易被所謂的情懷等洗腦,工資還給得低,相比之下,28歲或30歲的程序員談不上是老油子,但如果幹的還是和年輕人一樣的活,那老闆很有可能要年輕人。

這裏姑且不說大廠java架構師的技術要求,也不說大廠高級開發所需要的能力,就僅僅說下一般公司對高級程序員的需求。

1 能熟悉Spring Boot的相關技能,比如jpa,aop,ioc,restful,junit等,哪怕不熟悉,也應當能在短時間(3天內)內熟悉。

2 熟悉基本的數據庫方面的性能調優,能解決單機版數據庫方面的問題,比如複雜sql,索引等方面的問題。

3 能在linux上看日誌,並能通過日誌,解決大多數的單機版(非分佈式組件方面)問題。

4 能熟悉Redis,Dubbo等分佈式組件的用法,至少會api,如果可以,還應當能用這些api開發基本的高併發應用。

5 其他單機版的問題,比如api的調用或問題的排查,哪怕之前沒做過,也應當能通過查網上的資料很快解決。

順帶再說下大廠對高級開發乃至架構師的要求。

1 熟悉各種分佈式組件的配置方法和用法,能熟練使用分佈式組件開發各種高併發需求,並能熟悉限流熔斷等技術。

2 熟悉軟件發佈部署上線的流程,比如搭建mysql環境,搭建redis組件,甚至會docker和k8s。

3 能通過日誌,排查並解決OOM,數據庫性能等高級問題,凡是高級開發無法解決的問題,架構師都應該能解決。

4 可以想象初級程序員在30歲時的處境

如果只會初級的增刪改查技能,在27,8歲之前找工作應該沒問題,畢竟當下有太多的軟件公司,初級開發的崗位也應該有不少。

但有3到5年開發經驗的java程序員應當需要升級到高級,也就是說,如果在27或28歲,依然只會初級開發技能的話,高級開發的面試應該過不了,甚至面試中提到的一些技術連聽都沒聽過。如下給出些問高級開發問題。

1 你們項目用哪些組件應對高併發?怎麼解決限流熔斷等問題?

2 Redis集羣,或Dubbo集羣你用過沒?如果沒用過,你是怎麼解決redis穿透,或dubbo優雅停機等方面的問題?

3 你是怎麼排查項目中的OOM和數據庫性能問題的?在項目中怎麼監控性能的?

要知道,對於初級開發來說,面試前背java八股文還有些用,但對於Java高級開發來說,只會背八股文,面試一定過不了。

所以對這些在28歲甚至30歲還在做java初級開發的程序員來說,有可能還能通過跳槽漲工資,但由於無法升級到高級開發,在公司裏的處境可能就很尷尬了,因爲能幹的活年輕人都能幹,而且人家還能加班。這樣的話,遇到公司運營有問題,還真可能被優化。而且被優化後,甚至有可能連面試機會都沒。

5 大齡尚在初級階段的程序員多嗎?

我只憑推測,但這部分的程序員數量應該不少。

1 不少公司可能更多注重業務,在項目開發環境中無法提供分佈式等值錢技術的實踐機會,這就導致不少程序員就認爲,開發項目只需要用到一些比較初級的技術。沒有機會實踐高級技術,提升也就無從談起了。

2 不少程序員跳槽時可能更多關心薪資,未必會關心公司所用的技術,所以很有可能進入新公司後,薪資有漲,管的人也變多,但用的還是老一套技術。

3 更重要的是,爲了能找到能提供值錢技術實踐機會的公司,先得在面試中證明相關技術的項目經驗,要做到這點不容易。

4 況且,不少程序員雖然身處小公司,但加班程度未必比大廠少,往往是忙了一天後,看似很充實,也確實掙到了錢,但哪怕是日積月累,每天干的活都是重複勞動,提升也就無從談起了。 

所以,我在我朋友公司看到的一些程序員的狀況,可能就未必是孤例了。不能說大多數小公司的程序員都這樣,但像這樣的程序員還真未必在少數。

6 人往高處走,程序員尤其應警惕

比起其他行當,程序員確實能有用加班換取高薪的機會,但可以這樣說,程序員確實是一個喫青春飯的行當。

不說其他,就看看每年畢業的應屆計算機專業的畢業生,再看一些大廠的培訓班輸出程序員的數量,就足以讓大多數程序員警惕。

不過天無絕人之路,我本身最近,也幫了不少零基礎程序員入行,也幫了java不少初級開發成功升級,再看看一些大廠也在天天招人,這足以說明,哪怕當前身處小公司,哪怕當前技術能力一般,程序員應當也有機會不斷升級,或者能通過努力進大廠。

本來想再寫些程序員如何升級的文字,不過在我的博客裏,這些文章不少了,而且大多數文章反覆被人轉載或抄襲,所以這篇文章就寫到這裏。

最後祝廣大程序員朋友,當然也包括我,不僅身體健康,而且能早日實現財富自由。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章