开发人员:月薪过万与年薪百万之间的差距
有一句話在開發人員圈子廣為流傳:“初級開發人員的標志就是需要在中級和高級開發人員的指導下完成工作。”所以,我們不要苛刻初級開發人員寫的代碼對錯嚴謹,畢竟每個開發人員都有這樣的一個過程。據譯者觀察,初級開發人員往往認為自己寫的代碼都是高質量的;而中級開發人員認識到了軟件知識會影響代碼質量;中高級開發人員則認識到硬件知識會影響到代碼質量;高級開發人員反而認為自己寫的部分代碼質量不夠高,需要惡補硬件知識和編譯器等相關知識……至于骨灰級開發人員,可以寫出高質量代碼,并能夠充分考慮各種情況。本文,后端開發者 Daan 講述了初級、中級和高級開發人員之間的區別。
作為初級、中級或高級開發人員,并不僅僅跟多少年的編程經驗相關。初級開發人員甚至可以比高級開發人員年齡要大。這一切都取決于技能。不過,這并不意味著高級開發人員必須是所有方面的專家,但可以肯定地說,高級開發人員要比初級、中級開發人員熟練得多。
既然高級開發人員與初級、中級開發人員的區別不僅在于編程技能,那么到底有什么區別呢?
知識
很顯然,高級開發人員比初級、中級開發人員掌握更多的知識。了解設計模式、架構、自動化測試、性能、安全性等,這是初級開發人員縮小與中級、高級開發人員之間的知識差距的好方法。
了解軟件開發中的事情應該如何進行是很重要的。但是,僅僅知道這些知識并不能讓你成為高級開發人員。知識并不是開發人員之間最大的區別,它只是其中的一個因素。
編程
不管大多數人是怎么想的,編程并不是與計算機進行通信。編程是關于與人類交流和指導的計算機。最終,代碼被編譯并轉為一連串的 0 和 1。
代碼必須對將來使用它的其他開發人員有意義。一個以前從未見過代碼的新團隊應該能夠閱讀代碼并開始研究新功能或進行 bug 修復。這就是初級和高級開發人員之間的巨大差異所在。
在這一比較中,我將把中級開發人員排除在外,因為,在編程技能方面,中級開發人員處于一個灰色地帶。顯然,中級開發人員介于初級和高級開發人員之間,他們可能更傾向于高級開發人員。這主要與經驗有關,因為中級開發人員可能至少經歷過一次整個開發周期。他們犯過許多最簡單的錯誤,并從中汲取了教訓。
如何識別初級開發人員?
初級開發人員缺乏經驗。有些人剛剛畢業,正在開始他們的第一份全職工作。初級開發人員的心態通常是能夠讓代碼工作就萬事大吉了。工作軟件和良好的軟件對他們來說,沒什么不同。
編寫簡單的代碼其實是一件很困難的事情,這恰恰就是初級開發人員不擅長的事情。初級開發人員傾向編寫花哨的代碼。你可以通過古怪的代碼、過于復雜的抽象來識別出初級開發人員。這就是初級開發人員炫耀的方式,好讓其他開發人員知道他們編寫的代碼有多牛逼。其實,他們這一做法是錯誤的。
初級開發人員只專注于代碼的計算機方面,而忽視了人性方面。
那么,高級開發人員呢?
當你查看高級開發人員編寫的代碼時,你心里可能會嘀咕:就這些嗎?代碼的其余部分在哪里呢?高級開發人員編寫的代碼,看上去簡潔、直接了當,甚至還可能讓人覺得很愚蠢。而這正是開發人員在編程時可以擁有的最大品質之一。高級開發人員遵循的是 KISS 原則:保持簡潔,愚蠢。
譯注:KISS 是英文 “Keep it Simple and Stupid” 的首字母縮寫,意思是 “保持簡單和愚蠢”,其中 “愚蠢” 不是 “傻”,它還有 “遲鈍”、“不敏感”、“乏味”、“無價值” 等綜合含義。另一種對 KISS 的解釋是:“Keep It Simple,Stupid” 由于中間加了逗號,意思就變成了 “保持簡單,傻瓜”,是一種祈使語態,帶有調侃的色彩。
好的目標不是越復雜越好,反而是越簡潔越好。這就是 KISS 原則。符合 KISS 原則的目標都是關鍵的,而非包羅萬象;目標必須確定優先順序,而關鍵的目標則是資源和努力的重心。總結開發人員在編程過程中的經驗,大多數應用程序的設計應保持簡潔和單純,而不摻入非必要的復雜性,這樣的應用運作成效會取得最優;因此簡單性應該是軟件開發中的關鍵目標,盡量避免不必要的復雜性。
高級開發人員以不同于初級開發人員的方式思考他們的代碼。高級開發人員編寫的代碼會考慮到可維護性和可擴展性。這與初級開發人員的思維方式完全不同:高級開發人員考慮的是必須與代碼打交道的人,而初級開發人員只是考慮如何讓代碼在計算機上工作。
不僅僅是編程技能的問題
除了編程技能外,還有一些其他因素可以告訴你誰是哪種類型的開發人員。
一般來說,初級開發人員執行最簡單的任務或影響較小的任務。他們不參與任何架構設計。中級開發人員也不負責設計解決方案,他們只是執行任務。與初級開發人員的不同之處在于,只要分配給他們相對常規的任務,他們就會執行這些任務,而無需過多的監督。而高級開發人員則完全可以自己開發應用程序。
但這并不意味著高級開發人員在開發過程中沒有任何問題。實際上,每個開發人員每天都會遇到很多問題,這點是不會改變的。對于高級開發人員來說,也是概莫能外。
區別在于高級開發人員知道如何提出正確的問題,以及如何處理這些問題。當涉及到相對常規的任務時,中級開發人員可以提出正確的問題,但在更復雜的任務上就力有未逮,需要高級開發人員的幫助了。
高級開發人員永遠不會迷失方向,他們知道如何以正確的行動來跟進問題。但是,這并不意味著高級開發人員不能向其他開發人員尋求幫助。有時,最好的方法就是向其他在該領域有經驗的開發人員尋求幫助。
中級開發人員也應該能夠提出正確的問題,只要他沒有被分配到需要深入知識層面的高度復雜的任務。
你不應該指望初級開發人員能夠立即提出正確的問題。由于初級開發人員缺乏經驗,他們需要更有經驗的開發人員的指導。初級開發人員需要獲得必要的資源,或向正確的方向大力推進。
晉升下一個層次
作為開發人員,我們都想提高自己,變得更好。但是,你可以采取哪些步驟來晉升到下一個層次呢?
從初級開發人員到中級開發人員
由于初級開發人員缺乏經驗,因此至少要經歷幾次整個開發周期,這一點是很重要的。這樣一來,你會掉進很多陷阱中,并學會如何在下一次避免它們。
說到編程,你應該學習如何編寫簡單的代碼。想想下一個將要處理這段代碼的人。你還應該學習如何調試,因為這將使你能夠更好地理解這一過程中發生的事情。
此外,你應該熟悉最佳實踐,并了解架構、性能、安全性等。縮小到達中級水平所需的知識差距。
從中級開發人員到高級開發人員
從中級開發人員到高級開發人員可能會相當困難。有些開發人員在整個職業生涯中,始終處于中級水平。
高級開發人員知道什么可以走捷徑,什么永遠不可以走捷徑。這些都是從過去所犯的錯誤中汲取的教訓。
如果你想要成為高級開發人員,就必須準備好接受沒有人知道如何解決的任務。但你應該知道的不僅僅是如何完成工作。
作為高級開發人員,你的工作還包括幫助經驗較少的開發人員。當他們不知道如何做某些事情時,你就是他們的后備力量。
高級開發人員掌握了他們的技術棧,這可能不會讓你感到驚訝。記著,成為高級開發人員可不僅僅是編程技能,還要了解你所在公司中使用的所有工具和應用程序。
結論
初級、中級和高級開發人員之間的區別并不全在于有多少年的經驗。當然,可以肯定地說,高級開發人員比初級、中級開發人員更熟練,但知識并不是最重要的因素。
與初級開發人員相比,高級開發人員編寫的代碼更簡單,并且思維模式也不同。但這不僅僅是編程技能。知道要問什么問題,以及如何跟進這些問題是至關重要的。只有那些擁有豐富經驗的高級開發人員,才知道在如何在任何情況下做到這一點。
作為一個初級開發人員,你應該專注于如何編寫簡單的代碼,并經歷多個開發周期。要從中級開發人員晉升到高級開發人員,你應該專注于學習,而不僅僅是解決常規任務。你應該愿意承擔最艱巨的任務,成為技術棧的大師。高級開發人員的另一個職責是為經驗不足的開發人員提供后援力量。
我將引用 Martin Fowler 的一句話作為結束語:“任何傻瓜都可以寫出計算機能理解的代碼,而優秀程序員可以寫出人能讀懂的代碼。”(Any fool can write code that a computer can understand. Good programmers write code that humans can understand.)
作者介紹:
Daan,荷蘭的后端開發者,密碼學愛好者。
原文鏈接:
The Differences Between a Junior, Mid-Level, and Senior Developer
總結
以上是生活随笔為你收集整理的开发人员:月薪过万与年薪百万之间的差距的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php预处理_如何用预处理让 PHP 更
- 下一篇: mysql写什么不同_mysql - 编