本人最近和不少小公司的程序員打交道。經(jīng)過(guò)和他們的深入交流,,我感受到了不少小公司程序員的現(xiàn)狀,,由此深深地感嘆,可能真有不少小公司的程序員未必能干到30歲,,甚至,,一些技術(shù)一般態(tài)度又不好的程序員,可能還未必能干到28歲,。 1 能踏實(shí)做好增刪改查的程序員,,就算能力達(dá)標(biāo)我去我朋友開的一家軟件坐了坐,順帶近距離觀察了他們java程序員的開發(fā)日常,,首先說(shuō)明,,我接觸到的程序員不是才入職,,而是普遍有2到3年工作經(jīng)驗(yàn)。他們的開發(fā)團(tuán)隊(duì)是一個(gè)項(xiàng)目組長(zhǎng)外帶10多號(hào)人做個(gè)java方面的維護(hù)項(xiàng)目,,用到了spring boot,。 其中所謂技術(shù)好的程序員,是能根據(jù)現(xiàn)有的業(yè)務(wù)照抄代碼,,編寫新業(yè)務(wù)功能,。編寫過(guò)程中,如果遇到不熟悉的api,,還能上網(wǎng)根據(jù)功能查,,比如要輸出指定的格式,那就會(huì)查下然后用Calander等類實(shí)現(xiàn),。如果寫代碼時(shí)遇到一些數(shù)據(jù)庫(kù)問題或基本的問題,,還能把問題關(guān)鍵字放到網(wǎng)上查,并找到對(duì)應(yīng)的解決方法,。 在此基礎(chǔ)上,如果遇到有bug,,還能主動(dòng)解決,,遇到活還不退縮,也就是說(shuō)所謂的技術(shù)好外加態(tài)度好,,這種人已經(jīng)算是不可多得了,,至于熟悉maven或git等基本管理工具,那更是能算技術(shù)頂梁柱了,。在這個(gè)團(tuán)隊(duì)里,,不少做java后端的,而且有2年開發(fā)經(jīng)驗(yàn),,是屬于無(wú)法解決實(shí)際問題的,。比如無(wú)法通過(guò)debug排查問題,遇到一些JPA方面的問題,,或數(shù)據(jù)源配置問題,,根本不知道如何查,。 而他們的項(xiàng)目組長(zhǎng),,更多的職責(zé)是管進(jìn)度,同時(shí)用最簡(jiǎn)單的方法把系統(tǒng)發(fā)布到網(wǎng)上,,并做簡(jiǎn)單的數(shù)據(jù)庫(kù)等方面的配置管理,。比如就直接用mvn命令打包,,用復(fù)制粘貼的方式把jar包放到linux上,遇到數(shù)據(jù)庫(kù)性能問題,,還能連到linux上用命令建mysql的索引,。不過(guò),,就是這樣的技術(shù),用來(lái)管理他們公司的項(xiàng)目,,也綽綽有余了,。 2 除了業(yè)務(wù)知識(shí)外,這些程序員還會(huì)什么,?我朋友所在公司里的程序員天天都在創(chuàng)造價(jià)值,,所開發(fā)和維護(hù)的項(xiàng)目還真值不少錢,他們每天也不能算閑,。但除卻哪些摸魚的程序員,,那些態(tài)度積極的程序員技術(shù)上掌握了哪些技能? 1 業(yè)務(wù)知識(shí)點(diǎn),,比如某個(gè)業(yè)務(wù)流程該怎么做,,中間該從哪里獲取數(shù)據(jù),該返回什么,。這些業(yè)務(wù)可能是這批程序員平時(shí)接觸最多的所謂技能,,而公司也是憑借“能正確開發(fā)業(yè)務(wù)”來(lái)考核程序員,但這些只能算業(yè)務(wù)知識(shí),,不算技術(shù),。 2 用Spring boot開發(fā)業(yè)務(wù)的技能,這倒算,,不過(guò)用Spring boot外帶相關(guān)組件開發(fā)業(yè)務(wù)的技能太廉價(jià),,哪怕是零基礎(chǔ)的用1個(gè)月就能會(huì),而且這種零基礎(chǔ)的程序員進(jìn)入公司3個(gè)月后就能熟悉各種業(yè)務(wù),,也能用Spring boot開發(fā)各種功能,,所以只掌握這些技能的程序員太多了。 3 能分析和排查問題,,比如出現(xiàn)了空指針,,能通過(guò)debug找到問題,或者出了jpa的錯(cuò)誤提示,,能把這句提示放網(wǎng)上找,,然后再根據(jù)提示修改若干代碼和配置,從而解決問題,,不過(guò)這種技能太雜,,以后通過(guò)面試跳槽時(shí),無(wú)法通過(guò)這類技能來(lái)展示自己的能力,。 4 所謂的項(xiàng)目管理能力,,比如會(huì)用Maven和Git等,但這些技能可能也就停留在“會(huì)用”的層面,。 更值得感嘆的是,,我觀察下來(lái),,這家公司的程序員,有不少是摸魚的,,干活僅限于完成功能不出錯(cuò),,未必還會(huì)再去關(guān)心其他還談不上值錢的技術(shù)和項(xiàng)目開發(fā)的技能。 3 高級(jí)程序員和架構(gòu)師還需要哪些方面的能力,?程序員如果干到28或30歲,,不能僅停留在只會(huì)做增刪改查業(yè)務(wù)的初級(jí)階段,因?yàn)槿绻麊螒{這些能力,,會(huì)很輕易地被應(yīng)屆生,,甚至是培訓(xùn)班學(xué)員替換。 如果站在老板的角度,,年輕人肯加班,,而且更容易被所謂的情懷等洗腦,工資還給得低,,相比之下,,28歲或30歲的程序員談不上是老油子,但如果干的還是和年輕人一樣的活,,那老板很有可能要年輕人,。 這里姑且不說(shuō)大廠java架構(gòu)師的技術(shù)要求,也不說(shuō)大廠高級(jí)開發(fā)所需要的能力,,就僅僅說(shuō)下一般公司對(duì)高級(jí)程序員的需求。 1 能熟悉Spring Boot的相關(guān)技能,,比如jpa,,aop,ioc,,restful,,junit等,哪怕不熟悉,,也應(yīng)當(dāng)能在短時(shí)間(3天內(nèi))內(nèi)熟悉,。 2 熟悉基本的數(shù)據(jù)庫(kù)方面的性能調(diào)優(yōu),能解決單機(jī)版數(shù)據(jù)庫(kù)方面的問題,,比如復(fù)雜sql,,索引等方面的問題。 3 能在linux上看日志,,并能通過(guò)日志,,解決大多數(shù)的單機(jī)版(非分布式組件方面)問題。 4 能熟悉Redis,,Dubbo等分布式組件的用法,,至少會(huì)api,,如果可以,還應(yīng)當(dāng)能用這些api開發(fā)基本的高并發(fā)應(yīng)用,。 5 其他單機(jī)版的問題,,比如api的調(diào)用或問題的排查,哪怕之前沒做過(guò),,也應(yīng)當(dāng)能通過(guò)查網(wǎng)上的資料很快解決,。 順帶再說(shuō)下大廠對(duì)高級(jí)開發(fā)乃至架構(gòu)師的要求。 1 熟悉各種分布式組件的配置方法和用法,,能熟練使用分布式組件開發(fā)各種高并發(fā)需求,,并能熟悉限流熔斷等技術(shù)。 2 熟悉軟件發(fā)布部署上線的流程,,比如搭建mysql環(huán)境,,搭建redis組件,甚至?xí)ocker和k8s,。 3 能通過(guò)日志,,排查并解決OOM,數(shù)據(jù)庫(kù)性能等高級(jí)問題,,凡是高級(jí)開發(fā)無(wú)法解決的問題,,架構(gòu)師都應(yīng)該能解決。 4 可以想象初級(jí)程序員在30歲時(shí)的處境如果只會(huì)初級(jí)的增刪改查技能,,在27,,8歲之前找工作應(yīng)該沒問題,畢竟當(dāng)下有太多的軟件公司,,初級(jí)開發(fā)的崗位也應(yīng)該有不少,。 但有3到5年開發(fā)經(jīng)驗(yàn)的java程序員應(yīng)當(dāng)需要升級(jí)到高級(jí),也就是說(shuō),,如果在27或28歲,,依然只會(huì)初級(jí)開發(fā)技能的話,高級(jí)開發(fā)的面試應(yīng)該過(guò)不了,,甚至面試中提到的一些技術(shù)連聽都沒聽過(guò),。如下給出些問高級(jí)開發(fā)問題。 1 你們項(xiàng)目用哪些組件應(yīng)對(duì)高并發(fā),?怎么解決限流熔斷等問題,? 2 Redis集群,或Dubbo集群你用過(guò)沒,?如果沒用過(guò),,你是怎么解決redis穿透,或dubbo優(yōu)雅停機(jī)等方面的問題,? 3 你是怎么排查項(xiàng)目中的OOM和數(shù)據(jù)庫(kù)性能問題的,?在項(xiàng)目中怎么監(jiān)控性能的,? 要知道,對(duì)于我初級(jí)開發(fā)來(lái)說(shuō),,面試前背java八股文還有些用,,但對(duì)于Java高級(jí)開發(fā)來(lái)說(shuō),只會(huì)背八股文,,面試一定過(guò)不了,。 所以對(duì)這些在28歲甚至30歲還在做java初級(jí)開發(fā)的程序員來(lái)說(shuō),有可能還能通過(guò)跳槽漲工資,,但由于無(wú)法升級(jí)到高級(jí)開發(fā),,在公司里的處境可能就很尷尬了,因?yàn)槟芨傻幕钅贻p人都能干,,而且人家還能加班,。這樣的話,遇到公司運(yùn)營(yíng)有問題,,還真可能被優(yōu)化,。而且被優(yōu)化后,甚至有可能連面試機(jī)會(huì)都沒,。 5 大齡尚在初級(jí)階段的程序員多嗎,?我只憑推測(cè),但這部分的程序員數(shù)量應(yīng)該不少,。 1 不少公司可能更多注重業(yè)務(wù),,在項(xiàng)目開發(fā)環(huán)境中無(wú)法提供分布式等值錢技術(shù)的實(shí)踐機(jī)會(huì),這就導(dǎo)致不少程序員就認(rèn)為,,開發(fā)項(xiàng)目只需要用到一些比較初級(jí)的技術(shù),。沒有機(jī)會(huì)實(shí)踐高級(jí)技術(shù),提升也就無(wú)從談起了,。 2 不少程序員跳槽時(shí)可能更多關(guān)心薪資,未必會(huì)關(guān)心公司所用的技術(shù),,所以很有可能進(jìn)入新公司后,,薪資有漲,管的人也變多,,但用的還是老一套技術(shù),。 3 更重要的是,為了能找到能提供值錢技術(shù)實(shí)踐機(jī)會(huì)的公司,,先得在面試中證明相關(guān)技術(shù)的項(xiàng)目經(jīng)驗(yàn),,要做到這點(diǎn)不容易。 4 況且,,不少程序員雖然身處小公司,,但加班程度未必比大廠少,,往往是忙了一天后,看似很充實(shí),,也確實(shí)掙到了錢,,但哪怕是日積月累,每天干的活都是重復(fù)勞動(dòng),,提升也就無(wú)從談起了,。 所以,我在我朋友公司看到的一些程序員的狀況,,可能就未必是孤例了,。不能說(shuō)大多數(shù)小公司的程序員都這樣,但像這樣的程序員還真未必在少數(shù),。 這塊,,本人還專門寫過(guò)文章,講述大齡初級(jí)開發(fā)該怎么提升,。 6 人往高處走,,程序員尤其應(yīng)警惕比起其他行當(dāng),程序員確實(shí)能有用加班換取高薪的機(jī)會(huì),,但可以這樣說(shuō),,程序員確實(shí)是一個(gè)吃青春飯的行當(dāng)。 不說(shuō)其他,,就看看每年畢業(yè)的應(yīng)屆計(jì)算機(jī)專業(yè)的畢業(yè)生,,再看一些大廠的培訓(xùn)班輸出程序員的數(shù)量,就足以讓大多數(shù)程序員警惕,。 不過(guò)天無(wú)絕人之路,,我本身最近,也幫了不少零基礎(chǔ)程序員入行,,也幫了java不少初級(jí)開發(fā)成功升級(jí),,再看看一些大廠也在天天招人,這足以說(shuō)明,,哪怕當(dāng)前身處小公司,,哪怕當(dāng)前技術(shù)能力一般,程序員應(yīng)當(dāng)也有機(jī)會(huì)不斷升級(jí),,或者能通過(guò)努力進(jìn)大廠,。 |
|