程式設計師的級別陷阱

2022-02-25 16:09:21 字數 3731 閱讀 8472

有人說現在的程式設計師級別也開始浮誇起來了,以前覺得從剛畢業開始算初級軟體工程師,到中級軟體工程師,高階軟體工程師,要熬上三五年乃至更高的時間。而現在接到同行的名片,往往高階開發經理、演算法專家、首席科學家等層出不窮。

我從畢業後一直在海外工作,自己的頭銜從一開始的軟體開發工程師到現在全棧開發工程師,並沒有「級別」上的跨越。反觀我在國內發展的同學,已經很多是「總」級別的人物了。細細交流之後,覺的和自己做的事情也並無不同。

我在兩三年前,曾經非常重視在公司裡的晉公升,花了大量的時間精力去「面向公升級程式設計」。在跳槽的時候,也會常常對比不同的職位,往往會對那些頭銜「高貴」的職位另眼相看。如今反思,當年的自己其實是掉入了級別的陷阱中。

程式設計師的級別到底重不重要?重要也不重要。

級別重要,是因為級別常常和你的待遇掛鉤。國內的大廠一般有很穩定的薪資體系,什麼樣的級別代表著什麼樣的工資、**,和錢相關對個人來說當然重要。

級別重要,是因為常常和程式設計師的話語權相關。即使如谷歌,facebook這樣的公司,沒有能夠達到高階軟體工程師(senior software engineer)的級別之前,也很難獲得「搞事」的權利,不能為自己爭取到更多的資源。能夠給自己帶來更多表現的機會,當然很重要。

級別不重要,是因為級別並不決定你的能力。你不是因為被稱作高階軟體工程師所以你的技術厲害,而是因為你的技術厲害所以有可能成為高階工程師。技術厲害的程式設計師評不上高階工程師,也不會影響他的技術水平。

級別不重要,是因為級別並不能限制你的輸出。級別低的程式設計師在大公司可能只能做crud,但也可能在創業公司中做出千萬使用者的產品。級別高的程式設計師或許位高權重,但也有可能完全沒有時間寫**。

級別更多是代表對應人才在其組織、行業中的稀缺性,並且往往只有內部縱向比較意義,一旦跨組織,其意義就很有限。

在創業公司裡的cto,很有也就是大公司的高工(高階軟體工程師)出身;而默默無名的獨立開發者,也有可能成為行業巨擘。

在一些新興的領域比如最近很火的人工智慧,入門的門檻很高,人才比較稀缺。一些名校的博士生可能一畢業就可以成為「高階」、「資深」ai工程師。

相對來說,比如前段計算的門檻不高,並且技術日新月異。所以前段工程師可能需要很多年的積累,才能說的上「登堂入室」。

開頭說的大廠的級別似乎可以成為業內通用貨幣,為何是這樣呢?

因為大廠的規模和業務都很龐大,一些大公司之間,由於業務上有重疊,並且經過長期的人才流動(跳槽),在市場的調節之後,互相之間的級別形成了一些對接。不但國內的大廠有這樣的現象,國外的大廠之間也會有這樣的情況。

而一些規模較小的公司,可能聚集了一些大廠的程式設計師,或者創始人本身從大廠畢業,也會傾向於從大廠去借鑑級別系統。但是正如上面所說,由於受到公司規模的限制,吸引到的人才分布不可能和大廠保持一致,其級別可信度就會比較低。

小公司的級別是否一定是有水分呢?也不竟然。這裡得分公司和不同的崗位。

技術驅動型公司的核心程式設計師崗位,尤其需要技術過硬甚至是行業領軍的人物。 在這樣的公司裡,可能掛著軟體工程師頭銜的員工都是在其他公司都是高階軟體工程師以上的職務。

業務驅動型的公司,更多的會靠銷售團隊來推廣業務,技術團隊往往並不是決定公司發展的關鍵。在這樣的公司裡,往往可以看到高階程式設計師多是公司元老,並且主要的職責是管理,讓更多的程式設計師更高效的為產品服務。

對於程式設計師的級別到底應該對應何種能力,有很多極左或極右的認識。

極左派認為級別越高的程式設計師應該寫**越厲害。那麼到底什麼是厲害?

厲害是演算法的能力嘛?如果是這樣的話那些國際程式設計競賽的金牌們應該是最頂級的程式設計師,但顯然不是。

厲害是做產品的能力嘛?linux之父linus乙個人在2023年就寫出了第一版linux核心,然而他2023年加入全美達公司後也只遠遠不是最高端別的技術人員(cto或者是vp of engineering)

極右派認為級別越高的程式設計師**能力越不重要。

他們覺得級別高的程式設計師只是會吹牛,或者會做ppt,把身下的程式設計師的功勞都攬在自己身上。

從乙個角度上來說這是倒果為因,級別越高的程式設計師往往寫**的時間很少,而並不是他們的**能力不行。縱觀各個公司的技術高階職位,鮮有之前沒有在一線技術崗位幹過很長時間的。比爾蓋茨、雷軍這些大家耳熟能詳的人物都是技術出身,並且技術能力都很強。

無論是極左派或者極右派,他們都忽視了乙個事實:程式設計師的級別不應該只是衡量單維度的能力。

乙個人的技能可以分為硬技能(hard skills)和軟技能(soft skills)。

對於程式設計師來說,硬技能包括並不限於演算法,設計,實現,測試,架構等多個方面。高階程式設計師不比是寫**快,也不是比寫的**多,更不在於能寫出多麼「精妙」的**。

程式設計師的硬技能實力應該表現在:

解決難的,複雜的,抽象的問題。

設計和實現出高效、可擴充套件、可維護的軟體、框架、系統。

推動組內、組間的技術方向發展。

如果你觀察一些公司裡的大拿程式設計師,他們都或多或少的會在以上的方面展示過人的一面。做好以上的幾點,可以讓程式設計師變成乙個好的「技術人」。

在硬技能方面之外,同樣還有軟技能,程式設計師的軟技能包括:

學習能力——快速掌握自己所不擅長的領域,並結合自身實際吸收和運用。

溝通能力——和技術和非技術性同事之間的進行高效流暢的溝通,能夠接受和傳達必要的資訊。

協調能力——分清任務輕重緩急,把握住短期目標和長期目標之間的平衡,解決人與人之間的衝突。

……程式設計師的軟技能和硬實力同樣重要,有的時候甚至要大於硬實力,為什麼呢?

因為往往你不是乙個人在工作,乙個人的輸出和團隊相比是很有限的。乙個人的硬技能再強,也突破不了自身的物理極限(時間、身體),而現代化的企業中,需要團隊的合作,才可以在短時間內完成龐大的工作。

再說linus,他的硬技能強到可以乙個人去寫作業系統,但是在所在他的公司裡也不能做到最高端別的技術人員,究其原因,乙個是他可能沒有野心不想去做,另乙個重要原因是他的軟技能——特別是溝通能力上有很大的缺陷。如果由他來帶領團隊的話,那麼可能還達不到他乙個人的輸出能力。

但我們是否可以一味的只追求軟技能的提公升軟技能,而不重視硬技能的發展呢?軟技能不是萬能的,軟技能也要硬技能做為依託。 學習、溝通、協調能力都是基於你自身對需要學習、溝通、協調的物件(技術)有清晰的認識,而這些認識來自於你的硬技能儲備。乙個剛畢業的程式設計師,無論他的軟技能多麼逆天,沒有技術上的積累,也很難勝任高階的職位。

我們可以用乙個公式來總結一下:

程式設計師的影響力(impact)自身的硬技能*自身的軟技能+所在團隊的能力*自身軟技能

高技術小團隊 => 強調單兵技術作戰能力 =>程式設計師的級別自身的硬技能

低技術小團隊 => 強調單兵技術作戰能力和協力其他團隊的能力 ≈程式設計師的級別硬技能(少)*自身的軟技能

高技術大團隊 => 需要協調高技術人才 =>程式設計師的級別自身的硬技能(多)*自身的軟技能

低技術大團隊 => 需要充分的協調、管理能力 =>程式設計師的級別自身軟技能

每個人都有自己擅長的和不擅長的,能夠揚長避短則事半功倍,反之盲目的追求不合適自己的高階級別,則事倍功半。看清自己的長處和短處,尋找最適合發揮自己的空間,這樣公升級也會順利不少。

希望看完這篇博文,能夠讓大家開啟思索自己的公升級之道,也祝大家早日步步高公升。

程式設計師的級別

五流程式設計師比技術和工具 五流程式設計師關心的是用什麼工具可以產生什麼結果,追逐他聽過最新 最好 最時髦的技術,沉浸於一些小練習,卻很少走出象牙塔和客戶或市場進行真正的溝通,甚至完成大型的真實案例。四流程式設計師比整合和管理 四流程式設計師比前者更關心在什麼地方使用什麼,他的心裡放著整合各種技術的...

程式設計師的級別

第一級 神人,天資過人而又是技術狂熱者同時還擁有過人的商業頭腦,遠矚,技術過人,大器也。如丁磊,求伯君。第二級 高人,有天賦,技術過人但沒有過人的商業頭腦,通常此類人不是頂尖黑客就是技術總監之流。第 牛人,技術精湛,熟悉行業知識,敢於創新,有自己的公司和軟體產品。第四級 工頭,技術精湛,有領導團隊的...

程式設計師的級別

按照所掌握的技能,程式設計師大概可以分為幾類 新手 開發領域的初學者,有一些計算機或語言的基本常識,也許接受過號稱 專業 的基本的培訓。高階 跨過了初學者的門檻,開始學會使用不同的角度看問題。逐步學會從迷霧中尋找方向,從混亂中提取規則。但仍然對疑難雜症一籌莫展。開始學會自學,參考文件尋找必要的api...