程序員的級(jí)別陷阱
經(jīng)常在網(wǎng)上的論壇里看到討論程序員的級(jí)別,尤其在跳槽類的信息里可以看到對(duì)標(biāo)阿里P7,百度T6,騰訊3.1等字眼。
似乎大廠的級(jí)別儼然可以成為業(yè)內(nèi)的通用貨幣,類似于高考分?jǐn)?shù)一樣,哪一檔就對(duì)應(yīng)著什么樣的待遇。
有人說(shuō)現(xiàn)在的程序員級(jí)別也開(kāi)始浮夸起來(lái)了,以前覺(jué)得從剛畢業(yè)開(kāi)始算初級(jí)軟件工程師,到中級(jí)軟件工程師,高級(jí)軟件工程師,要熬上三五年乃至更高的時(shí)間。
而現(xiàn)在接到同行的名片,往往高級(jí)開(kāi)發(fā)經(jīng)理、算法專家、***科學(xué)家等層出不窮。
我從畢業(yè)后一直在海外工作,自己的頭銜從一開(kāi)始的軟件開(kāi)發(fā)工程師到現(xiàn)在全棧開(kāi)發(fā)工程師,并沒(méi)有“級(jí)別”上的跨越。反觀我在國(guó)內(nèi)發(fā)展的同學(xué),已經(jīng)很多是“總”級(jí)別的人物了。
細(xì)細(xì)交流之后,覺(jué)得和自己做的事情也并無(wú)不同。
我在兩三年前,曾經(jīng)非常重視在公司里的晉升,花了大量的時(shí)間精力去“面向升級(jí)編程”。
在跳槽的時(shí)候,也會(huì)常常對(duì)比不同的職位,往往會(huì)對(duì)那些頭銜“高貴”的職位另眼相看。
如今反思,當(dāng)年的自己其實(shí)是掉入了級(jí)別的陷阱中。
程序員的級(jí)別重要嗎
程序員的級(jí)別到底重不重要?重要也不重要。
級(jí)別重要,是因?yàn)榧?jí)別常常和你的待遇掛鉤。
國(guó)內(nèi)的大廠一般有很穩(wěn)定的薪資體系,什么樣的級(jí)別代表著什么樣的工資、股票,和錢相關(guān)對(duì)個(gè)人來(lái)說(shuō)當(dāng)然重要。
級(jí)別重要,是因?yàn)槌3:统绦騿T的話語(yǔ)權(quán)相關(guān)。
即使如谷歌,F(xiàn)acebook這樣的公司,沒(méi)有能夠達(dá)到高級(jí)軟件工程師(Senior Software Engineer)的級(jí)別之前,也很難獲得“搞事”的權(quán)利,不能為自己爭(zhēng)取到更多的資源。能夠給自己帶來(lái)更多表現(xiàn)的機(jī)會(huì),當(dāng)然很重要。
級(jí)別不重要,是因?yàn)榧?jí)別并不決定你的能力。
你不是因?yàn)楸环Q作高級(jí)軟件工程師所以你的技術(shù)厲害,而是因?yàn)槟愕募夹g(shù)厲害所以有可能成為高級(jí)工程師。技術(shù)厲害的程序員評(píng)不上高級(jí)工程師,也不會(huì)影響他的技術(shù)水平。
級(jí)別不重要,是因?yàn)榧?jí)別并不能限制你的輸出。
級(jí)別低的程序員在大公司可能只能做CRUD,但也可能在創(chuàng)業(yè)公司中做出千萬(wàn)用戶的產(chǎn)品。級(jí)別高的程序員或許位高權(quán)重,但也有可能完全沒(méi)有時(shí)間寫代碼。
級(jí)別是相對(duì)的稀缺性
級(jí)別更多是代表對(duì)應(yīng)人才在其組織、行業(yè)中的稀缺性,并且往往只有內(nèi)部縱向比較意義,一旦跨組織,其意義就很有限。
在創(chuàng)業(yè)公司里的CTO,很有也就是大公司的高工(高級(jí)軟件工程師)出身;而默默無(wú)名的獨(dú)立開(kāi)發(fā)者,也有可能成為行業(yè)巨擘。
在一些新興的領(lǐng)域比如最近很火的人工智能,入門的門檻很高,人才比較稀缺。一些名校的博士生可能一畢業(yè)就可以成為“高級(jí)”、“資深”AI工程師。
相對(duì)來(lái)說(shuō),比如前段計(jì)算的門檻不高,并且技術(shù)日新月異。所以前段工程師可能需要很多年的積累,才能說(shuō)的上“登堂入室”。
開(kāi)頭說(shuō)的大廠的級(jí)別似乎可以成為業(yè)內(nèi)通用貨幣,為何是這樣呢?
因?yàn)榇髲S的規(guī)模和業(yè)務(wù)都很龐大,一些大公司之間,由于業(yè)務(wù)上有重疊,并且經(jīng)過(guò)長(zhǎng)期的人才流動(dòng)(跳槽),在市場(chǎng)的調(diào)節(jié)之后,互相之間的級(jí)別形成了一些對(duì)接。
不但國(guó)內(nèi)的大廠有這樣的現(xiàn)象,國(guó)外的大廠之間也會(huì)有這樣的情況。
而一些規(guī)模較小的公司,可能聚集了一些大廠的程序員,或者創(chuàng)始人本身從大廠畢業(yè),也會(huì)傾向于從大廠去借鑒級(jí)別系統(tǒng)。
但是正如上面所說(shuō),由于受到公司規(guī)模的限制,吸引到的人才分布不可能和大廠保持一致,其級(jí)別可信度就會(huì)比較低。
小公司的級(jí)別是否一定是有水分呢?也不竟然。這里得分公司和不同的崗位。
技術(shù)驅(qū)動(dòng)型公司的核心程序員崗位,尤其需要技術(shù)過(guò)硬甚至是行業(yè)領(lǐng)軍的人物。
在這樣的公司里,可能掛著軟件工程師頭銜的員工都是在其他公司都是高級(jí)軟件工程師以上的職務(wù)。
業(yè)務(wù)驅(qū)動(dòng)型的公司,更多的會(huì)靠銷售團(tuán)隊(duì)來(lái)推廣業(yè)務(wù),技術(shù)團(tuán)隊(duì)往往并不是決定公司發(fā)展的關(guān)鍵。
在這樣的公司里,往往可以看到高級(jí)程序員多是公司元老,并且主要的職責(zé)是管理,讓更多的程序員更高效的為產(chǎn)品服務(wù)。
級(jí)別不是衡量單維度的能力
對(duì)于程序員的級(jí)別到底應(yīng)該對(duì)應(yīng)何種能力,有很多極左或極右的認(rèn)識(shí)。
極左派認(rèn)為級(jí)別越高的程序員應(yīng)該寫代碼越厲害。那么到底什么是厲害?
厲害是算法的能力嘛?
如果是這樣的話那些國(guó)際編程競(jìng)賽的金牌們應(yīng)該是最***的程序員,但顯然不是。
厲害是做產(chǎn)品的能力嘛?
Linux之父Linus一個(gè)人在1994年就寫出了***版Linux內(nèi)核,然而他1998年加入全美達(dá)公司后也只遠(yuǎn)遠(yuǎn)不是***級(jí)別的技術(shù)人員(CTO或者是VP of Engineering)
極右派認(rèn)為級(jí)別越高的程序員代碼能力越不重要。
他們覺(jué)得級(jí)別高的程序員只是會(huì)吹牛,或者會(huì)做PPT,把身下的程序員的功勞都攬?jiān)谧约荷砩稀?/p>
從一個(gè)角度上來(lái)說(shuō)這是倒果為因,級(jí)別越高的程序員往往寫代碼的時(shí)間很少,而并不是他們的代碼能力不行。
縱觀各個(gè)公司的技術(shù)高級(jí)職位,鮮有之前沒(méi)有在一線技術(shù)崗位干過(guò)很長(zhǎng)時(shí)間的。
比爾蓋茨、雷軍這些大家耳熟能詳?shù)娜宋锒际羌夹g(shù)出身,并且技術(shù)能力都很強(qiáng)。
無(wú)論是極左派或者極右派,他們都忽視了一個(gè)事實(shí):程序員的級(jí)別不應(yīng)該只是衡量單維度的能力。
軟技能和硬技能
一個(gè)人的技能可以分為硬技能(Hard Skills)和軟技能(Soft Skills)。
對(duì)于程序員來(lái)說(shuō),硬技能包括并不限于算法,設(shè)計(jì),實(shí)現(xiàn),測(cè)試,架構(gòu)等多個(gè)方面。
高級(jí)程序員不是比寫代碼快,也不是比寫的代碼多,更不在于能寫出多么“精妙”的代碼。
程序員的硬技能實(shí)力應(yīng)該表現(xiàn)在:
- 解決難的,復(fù)雜的,抽象的問(wèn)題。
- 設(shè)計(jì)和實(shí)現(xiàn)出高效、可擴(kuò)展、可維護(hù)的軟件、框架、系統(tǒng)。
- 推動(dòng)組內(nèi)、組間的技術(shù)方向發(fā)展。
如果你觀察一些公司里的大拿程序員,他們都或多或少的會(huì)在以上的方面展示過(guò)人的一面。做好以上的幾點(diǎn),可以讓程序員變成一個(gè)好的“技術(shù)人”。
在硬技能方面之外,同樣還有軟技能,程序員的軟技能包括:
- 學(xué)習(xí)能力——快速掌握自己所不擅長(zhǎng)的領(lǐng)域,并結(jié)合自身實(shí)際吸收和運(yùn)用。
- 溝通能力——和技術(shù)和非技術(shù)性同事之間的進(jìn)行高效流暢的溝通,能夠接受和傳達(dá)必要的信息。
- 協(xié)調(diào)能力——分清任務(wù)輕重緩急,把握住短期目標(biāo)和長(zhǎng)期目標(biāo)之間的平衡,解決人與人之間的沖突。
- ……
程序員的軟技能和硬實(shí)力同樣重要,有的時(shí)候甚至要大于硬實(shí)力,為什么呢?
因?yàn)橥悴皇且粋€(gè)人在工作,一個(gè)人的輸出和團(tuán)隊(duì)相比是很有限的。
一個(gè)人的硬技能再?gòu)?qiáng),也突破不了自身的物理極限(時(shí)間、身體),而現(xiàn)代化的企業(yè)中,需要團(tuán)隊(duì)的合作,才可以在短時(shí)間內(nèi)完成龐大的工作。
再說(shuō)Linus,他的硬技能強(qiáng)到可以一個(gè)人去寫操作系統(tǒng),但是在他所在的公司里也不能做到***級(jí)別的技術(shù)人員。
究其原因,一個(gè)是他可能沒(méi)有野心不想去做,另一個(gè)重要原因是他的軟技能——特別是溝通能力上有很大的缺陷。
如果由他來(lái)帶領(lǐng)團(tuán)隊(duì)的話,那么可能還達(dá)不到他一個(gè)人的輸出能力。
但我們是否可以一味的只追求軟技能的提升軟技能,而不重視硬技能的發(fā)展呢?
軟技能不是***的,軟技能也要硬技能做為依托。
學(xué)習(xí)、溝通、協(xié)調(diào)能力都是基于你自身對(duì)需要學(xué)習(xí)、溝通、協(xié)調(diào)的對(duì)象(技術(shù))有清晰的認(rèn)識(shí),而這些認(rèn)識(shí)來(lái)自于你的硬技能儲(chǔ)備。
一個(gè)剛畢業(yè)的程序員,無(wú)論他的軟技能多么逆天,沒(méi)有技術(shù)上的積累,也很難勝任高端的職位。
我們可以用一個(gè)公式來(lái)總結(jié)一下:
程序員的影響力(Impact) ∝ 自身的硬技能 * 自身的軟技能 + 所在團(tuán)隊(duì)的能力 * 自身軟技能
如果理解了這個(gè)公式,那么對(duì)于***段中各個(gè)公司的級(jí)別不對(duì)稱現(xiàn)象就有清晰的認(rèn)識(shí),我們可以分析以下一些團(tuán)隊(duì)的例子:
- 高技術(shù)小團(tuán)隊(duì) => 強(qiáng)調(diào)單兵技術(shù)作戰(zhàn)能力 => 程序員的級(jí)別 ∝ 自身的硬技能
- 低技術(shù)小團(tuán)隊(duì) => 強(qiáng)調(diào)單兵技術(shù)作戰(zhàn)能力和協(xié)力其他團(tuán)隊(duì)的能力 ≈ 程序員的級(jí)別 ∝ 硬技能(少) * 自身的軟技能
- 高技術(shù)大團(tuán)隊(duì) => 需要協(xié)調(diào)高技術(shù)人才 => 程序員的級(jí)別 ∝ 自身的硬技能(多) * 自身的軟技能
- 低技術(shù)大團(tuán)隊(duì) => 需要充分的協(xié)調(diào)、管理能力 => 程序員的級(jí)別 ∝ 自身軟技能
總結(jié)
每個(gè)人都有自己擅長(zhǎng)的和不擅長(zhǎng)的,能夠揚(yáng)長(zhǎng)避短則事半功倍,反之盲目的追求不合適自己的高級(jí)級(jí)別,則事倍功半。
看清自己的長(zhǎng)處和短處,尋找最適合發(fā)揮自己的空間,這樣升級(jí)也會(huì)順利不少。
希望看完這篇博文,能夠讓大家開(kāi)啟思索自己的升級(jí)之道,也祝大家早日步步高升。