从面试官角度观察到的程序员工资瓶颈,同时给出突破瓶颈的建议
原文鏈接:
https://gitbook.cn/books/5d98575e0f43867cba9d84a0/index.html
我在做技術(shù)面試官的時(shí)候,大多數(shù)面試的是初級(jí)開發(fā)和高級(jí)開發(fā),偶爾也會(huì)面試架構(gòu)師。我發(fā)現(xiàn),IT 人的工資固然和相關(guān)技術(shù)的使用年限有關(guān),但同時(shí)也發(fā)現(xiàn),如果候選人的技能無法跨越到更高層次的話,他們的收入也就會(huì)停留在當(dāng)前級(jí)別,哪怕工資年限再多,也無法提升工資。
比如,我就面試過不少工作了 5,6 年的程序員,他們的技能也就停留在增刪改查階段,那么他們只能領(lǐng)到初級(jí)程序員的工資。更可悲的時(shí),在面試過程中我發(fā)現(xiàn)他們甚至不知道上升的途徑和方式,這樣的話,可能當(dāng)他們有 10 年經(jīng)驗(yàn)的時(shí)候,或許還是初級(jí)程序員。本文將圍繞著初級(jí)程序員,高級(jí)程序員和架構(gòu)師這三個(gè)職位,說明下這些級(jí)別的工資瓶頸,并給出若干突破瓶頸的建議。
1. 初級(jí)程序員的技能瓶頸與收入瓶頸
哪怕是非相關(guān)專業(yè),從培訓(xùn)班出來的程序員,要找個(gè)工作也不難,更何況是計(jì)算機(jī)相關(guān)專業(yè)出身的學(xué)生。
在一般的公司里,對(duì)初級(jí)程序員的要求大多也是會(huì)增刪改查,熟悉基本的業(yè)務(wù),而且不少公司不會(huì)讓他們干更高級(jí)的活。所以我在面試過程中,不少 3 年以內(nèi)的初級(jí)程序員的水平和一些有 5 年經(jīng)驗(yàn)的人差不多,這就進(jìn)入了初級(jí)程序員的收入瓶頸。
比如 Java 方面,他們僅僅會(huì)用技能,比如集合,多線程,數(shù)據(jù)庫等,也會(huì)在 Spring 框架下干活,SQL 方面,僅會(huì)寫基本的 SQL 語句,或許還會(huì)使用簡(jiǎn)單的索引等技能。但如果我問及底層代碼,他們知道得很少,問及 Spring 等框架知識(shí),他們只會(huì)告訴我如何配置,如何在現(xiàn)有框架里干活。至于一些高級(jí)技能,比如分布式組件,或者 LInux 下的部署和日志排查,他們大多就不知道了。對(duì)于項(xiàng)目管理的工具,比如 Jenkins,sonar 等,他們可能都沒聽說過。
如果面試時(shí)僅表現(xiàn)為會(huì)干活,不會(huì)調(diào)優(yōu),不會(huì)分析和解決問題,那么能力上也就是初級(jí)開發(fā)。這樣的話,在上海,按當(dāng)前行情,估計(jì)最高也就 12k 了,同時(shí),如果干了 5 年還是這樣的話,那么競(jìng)爭(zhēng)力會(huì)大大降低。那么如何提升到高級(jí)開發(fā)呢?
-
在平時(shí)得熟悉調(diào)試代碼,并且,一旦組里出了問題,得盡量參與,剛開始可能分析和解決問題的能力不行,但慢慢就行了。
-
多看些優(yōu)化方面的技能,以及比較熱門的技術(shù),比如數(shù)據(jù)庫方面,別單純看 JDBC 的增刪改查,可以看些 NoSQL 甚至 redis 緩存,然后看下 SQL 調(diào)優(yōu)技能。
-
多關(guān)注些項(xiàng)目開發(fā)和管理的技能,比如敏捷開發(fā),站會(huì),單元測(cè)試,集成部署,通過 Sonar 看代碼質(zhì)量等。
-
這點(diǎn)比較關(guān)鍵,得多和別人交流,比如多和需求方溝通需求,多和測(cè)試方溝通問題重現(xiàn)步驟,多和組員領(lǐng)導(dǎo)溝通問題的實(shí)現(xiàn)方式。
其實(shí)初級(jí)開發(fā)升級(jí)到高級(jí)開發(fā)相對(duì)容易,只要主觀上態(tài)度上端正,別固步自封,然后到處看些資料多和人交流即可。
2. 高級(jí)程序員的技能瓶頸在于分布式組件
高級(jí)開發(fā)論技術(shù),有一定的調(diào)優(yōu)經(jīng)驗(yàn),也有一定分析日志解決問題的能力,也能 debug。論解決問題的能力,也能和別人溝通,從而接簡(jiǎn)單的需求,并能分析和解決一些問題。論團(tuán)隊(duì)合作,也能帶 3,4 個(gè)人一起開發(fā)。其實(shí)這類能力,對(duì)工作個(gè) 3 年的程序員來說,不難達(dá)到,如果在節(jié)奏比較快的互聯(lián)網(wǎng)公司里,甚至 2 年即可達(dá)到。
論工資水平,當(dāng)前在上海,高級(jí)開發(fā)拿個(gè) 15k 都算低,如果進(jìn)個(gè)大公司,外帶 5 年左右開發(fā)經(jīng)驗(yàn),估計(jì)能到 20k,如果在互聯(lián)網(wǎng)公司甚至能更高,但瓶頸估計(jì)在 25k 左右。
我面試高級(jí)開發(fā),他們一般基礎(chǔ)知識(shí)比較扎實(shí),比如 Java 集合內(nèi)部的實(shí)現(xiàn)代碼,高并發(fā)的諸多類,或者 Spring 框架的一些關(guān)鍵底層代碼,都能說得上來。一般給我的高級(jí)開發(fā)的面試標(biāo)準(zhǔn)是,所需初級(jí)開發(fā)的技能,并在此基礎(chǔ)上具有一定的調(diào)優(yōu)能力,通過日志定位問題,設(shè)計(jì)解決方案和解決實(shí)際問題的能力,而且 linux 上也能部署代碼。只要能說得上來,一般能給到高級(jí)開發(fā)的工資,就多少的問題。
但我面試時(shí),感受非常深的是,和架構(gòu)師相比,高級(jí)開發(fā)對(duì)于分布式組件或基于云組件(比如 k8s)或其它高并發(fā)分布式組件,有些人可能用過,但僅限于會(huì)用其中的 API,讓他們搭建一個(gè)集群,他們可能就力所不能及了,如果再問他們分布式組件在項(xiàng)目開發(fā)時(shí)經(jīng)歷過的坑,他們大多也說不上來。
比如我問,Dubbo 里通訊協(xié)議有哪些?高級(jí)開發(fā)一般能說得上來,因?yàn)檫@有現(xiàn)成資料,但我再問,根據(jù)你們的業(yè)務(wù)實(shí)際情況,你們用的是長連接還是短連接方式?為什么要用這種協(xié)議?他們估計(jì)就很難回答。如果我再問,如果要處理高并發(fā)的請(qǐng)求,需要在 Dubbo 里做哪些配置?如何同其它組件搭建成集群?高級(jí)開發(fā)就更難回答了。
同初級(jí)開發(fā)升級(jí)到高級(jí)開發(fā)相比,高級(jí)開發(fā)升級(jí)到架構(gòu)師更難,因?yàn)樵谝话愕墓ぷ鳝h(huán)境里,高級(jí)開發(fā)很難有相應(yīng)的實(shí)踐機(jī)會(huì)。不過話說回來,如果程序員有 8 年經(jīng)驗(yàn)后還是高級(jí)開發(fā),那么競(jìng)爭(zhēng)力會(huì)逐步下降,一方面很難再要到更高的工資,另一方面很難通過面試爭(zhēng)取到架構(gòu)師的工作機(jī)會(huì)。那么高級(jí)開發(fā)如何升級(jí)到架構(gòu)師呢?這個(gè)時(shí)候光靠態(tài)度就不行了。
-
理論知識(shí)不可少,甚至在自己電腦上,可以搭建個(gè)腳手架項(xiàng)目,比如自己裝個(gè)虛擬機(jī),搭建個(gè) dubbo 集群等。
-
最好要找個(gè)互聯(lián)網(wǎng)公司實(shí)踐下,哪怕在互聯(lián)網(wǎng)公司干的是高級(jí)開發(fā)的活,一定也有機(jī)會(huì)接觸分布式組件,這樣就有相關(guān)經(jīng)驗(yàn)了。
-
比如高級(jí)開發(fā),架構(gòu)師更得了解集群,而不是單機(jī)版的代碼,所以更得關(guān)注一些技術(shù)以外的技能,比如負(fù)載均衡,容錯(cuò)處理,通訊協(xié)議和流程等。
-
雖然說光靠態(tài)度不行,但沒態(tài)度也不行,在升級(jí)過程中,可能因定位問題不及時(shí)不準(zhǔn)確,或者提出的方案有瑕疵,從而受到別人挑戰(zhàn),相反如果回到高級(jí)開發(fā)的舒適區(qū)也能穩(wěn)定地過日子。我自己也有體會(huì),我幸虧遇到了好師傅,而且我?guī)煾档膸煾凳谴笈?#xff0c;也為我指明了不少進(jìn)階方向。否則的話,這條升級(jí)路能堅(jiān)持下來,還能難說。
3. 架構(gòu)師的瓶頸在于項(xiàng)目實(shí)踐經(jīng)驗(yàn)
目前在上海,架構(gòu)師的月薪普遍在 30k 以上,如果稍微資深點(diǎn)的話,35k 也不是問題,如果是一個(gè)公司的主心骨的話,就更沒上限了。
雖然不多,但我好歹也面試過 Java 方面的架構(gòu)師,我在面試過程中發(fā)現(xiàn),一些資深的架構(gòu)師,相關(guān)實(shí)踐經(jīng)驗(yàn)相當(dāng)豐富,更有部署上線和在線排查問題方面的經(jīng)驗(yàn)。
比如 MyCAT 分庫分表方面,高級(jí)開發(fā)會(huì)使用,一般的架構(gòu)師會(huì)搭建集群,也會(huì)排查產(chǎn)線問題,而資深架構(gòu)第一能知道該如何上線,上線時(shí)如何采用分組發(fā)布確保數(shù)據(jù)兼容性,上線后又該如何清洗數(shù)據(jù),如果上線過程中出現(xiàn)問題又該如何回退。
如果說,架構(gòu)師還有人可以問的話,資深架構(gòu)則沒人可問,有問題得靠自己之前踩坑獲得的經(jīng)驗(yàn),或者自己找資料。從這個(gè)意義上來講,在架構(gòu)師級(jí)別,如果技術(shù)上再要提升,那么只能多靠解決實(shí)際問題時(shí)積累的經(jīng)驗(yàn),而且更得結(jié)合業(yè)務(wù),把負(fù)載均衡,容錯(cuò)處理等處理高并發(fā)的理念用分布式組件實(shí)現(xiàn)。這方面,我們可以參照下 BAT 或知名互聯(lián)網(wǎng)公司的架構(gòu)知識(shí)體系。
4. 在任何時(shí)候,態(tài)度都是限制發(fā)展的瓶頸
不管是面試初級(jí)程序員還是高級(jí)開發(fā)或者是架構(gòu)師,我發(fā)現(xiàn)一些表現(xiàn)好的,都比較積極向上。
比如回答問題時(shí)聲音洪亮,溝通時(shí)也有盡量向表達(dá)清楚的愿望,哪怕某個(gè)方面回答不正確,但也能看出平時(shí)在不斷積累知識(shí),當(dāng)被追問比較深時(shí),也能比較耐心地一一解答,總之通過交流,給人的印象是比較靠得住。有些人甚至平時(shí)會(huì)寫博客,或者出過書,或者想盡一切辦法來積累和提升自己。這類人大多能過,哪怕個(gè)別過不了,但未來潛力也是非常可觀的。
但相反,有些回答不好的候選人,總會(huì)給人些得過且過敷衍的感覺,比如回答問題比較簡(jiǎn)單,或者總是想套面試官的話,或者總想用些模棱兩可的回答來蒙混過關(guān)。
我和其它的面試官溝通以后,對(duì)此感受很深,總是先自己要了,然后再肯上進(jìn),再自發(fā)地歸納出好的學(xué)習(xí)方法,并能有效地進(jìn)行時(shí)間和工作任務(wù)管理。
我見到過不少反面的案例,這些人論資質(zhì)不錯(cuò),但或者光有決心沒行動(dòng),或者干脆陷入在舒適區(qū)不可自拔,這些人很難有技術(shù)上的突破。相比之下,初級(jí)程序員在有決心有行動(dòng)后,升級(jí)所需的時(shí)間不會(huì)超過 1 年,有些半年就夠了,高級(jí)開發(fā)升級(jí)到架構(gòu)師可能有些難度,但一般不會(huì)超過 2 年。
所以說,態(tài)度要端正,人要上進(jìn),這話說起來太容易,但能做到的并且能堅(jiān)持下來的人數(shù)并不多,所以態(tài)度是發(fā)展的瓶頸,這話雖然通俗,但不無道理。
5. 技術(shù)可以暫時(shí)落后,但任何時(shí)候都要有上進(jìn)的信念
本文提到的各級(jí)別程序員的瓶頸和突破建議,都是我和其它多位面試官在面試過程中總結(jié)而來,希望能對(duì)大家有所幫助。
再者,除去因升級(jí)而帶來的收入提升外,在任何技術(shù)前提下,都有對(duì)應(yīng)的掙錢手段。比如我在 CSDN 等地,看到不少大學(xué)生朋友靠寫文章掙錢,而開專欄也并不是要多高深的技術(shù)積累。同時(shí),當(dāng)程序員升級(jí)到高級(jí)開發(fā)后,就能通過寫書或者錄制視頻等方式掙錢。此外,如果是接項(xiàng)目,在各技術(shù)層面都有對(duì)應(yīng)的項(xiàng)目。不過話說回來,對(duì)我們程序員來說,在任何公司任何職位任何場(chǎng)景,都有機(jī)會(huì)進(jìn)入到舒適區(qū)“享?!?。
有道是“技術(shù)窮但志不能短”,我在博客園里就見識(shí)過不少靠努力翻身的例子,在我身邊的同事朋友里,也經(jīng)??吹健鞍肽旰蠹夹g(shù)大變樣”的例子,這些榜樣能激勵(lì)我不斷上進(jìn)。所以本文在給出突破瓶頸建議的同時(shí),更希望大家要有不斷上進(jìn)的信念。
總結(jié)
以上是生活随笔為你收集整理的从面试官角度观察到的程序员工资瓶颈,同时给出突破瓶颈的建议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ 入门系列(6)— 如何
- 下一篇: RabbitMQ 入门系列(7)— 如何