【譯】工程師如何打怪升級
初級、中級和高階工程師並不是通過你從事編碼工作的年限來判斷的。初級工程師有時可能比高階工程師工作時間還要長。能否成為更高等級的工程師完全取決於你對專業技能的掌握程度,這也不是說高階工程師必須在每一方面都是專家,但是可以肯定的是,高階工程師一定比初級和中級工程師更加專業。
不僅僅是程式設計能力更加專業,高階工程師和初中級工程師相比還有其他區別。這區別到底是什麼呢?
知識
很明顯,高階工程師需要掌握更多的知識。學習設計模式、架構、自動化測試、效能、安全等知識是初級工程師邁向中高階工程師的必經之路。
知道軟體開發過程中需要做什麼是一件非常重要的事情。但是當你掌握了上面所說的全部知識時,你並不是已經成為高階工程師了,這些知識只是不同等級工程師之間的區別之一。
編碼
很多人認為編碼是人和計算機之間的一種交流,實際上是人和人的交流然後用於指導計算機。程式碼最終還需要編譯成二進位制碼。
你的程式碼需要保證可讀性,這樣以後其他開發者才能在這基礎上做其他工作。最好能做到讓一個從來沒有看過你的程式碼的團隊一開啟就能立即進行新功能開發或者修復bug。這也是初級和高階工程師的區別之一。
這裡我們忽略了中級工程師,因為中級工程師在程式設計能力的比較中處於灰色地帶。因為中級工程師介於初級與高階之間,並且更傾向於高階。編碼能力更更加依賴於經驗,而中級工程師通常至少參與過一次完整的軟體開發流程。他們已經從一些簡單的錯誤中吸取了教訓。
如何辨別初級工程師
初級工程師通常沒有開發經驗。有些是剛畢業,第一次全職做開發。初級開發者的心態通常就是「能用就行」。能用的軟體和好用的軟體在他們看來都一樣。
寫出簡潔的程式碼是一件困難的事情。這也是初級工程師不具備的能力,他們寫的程式碼往往比較繁瑣。你可以通過詭異的單行程式碼以及龐雜的抽象邏輯來識別初級工程師。這是初級工程師炫耀的方法,讓其他開發人員知道他們的能力,但這是錯誤的做法。
初級工程師編碼時專注於計算機端,而忽略了人力端。
高階工程師是怎樣的
當檢視高階工程師的程式碼時,你也許會想:這是全部程式碼嗎?剩下的在哪?高階工程師寫的程式碼總是簡單、直接的。這時程式設計時可以修煉的最強技能之一。高階工程師遵循KISS原則:Keep it simple, stupid。
高階工程師在編碼方式和初級工程師有所不同,他們會優先考慮程式碼的可維護性和可擴充套件性。兩種級別的工程師編碼時的心態也完全不同,高階工程師更多考慮的時後續維護程式碼的人,而初級工程師考慮的是使程式碼可以被計算機執行。
不止於程式設計能力
除了程式設計能力之外,還有一些其他因素可以告訴你一名工程師的級別。
初級工程師通常只是做一些簡單的任務。他們不負責任何架構設計。中級工程師也不設計解決方案,他們同樣是執行任務。與初級工程師不同的是,他們並不需要太多的監督和指導,只要分配給他們較為常規的任務,他們就能獨立完成。高階工程師則可以獨立的開發一款應用。
這並不意味著高階工程師在開發過程中就不會碰到問題,每個開發人員每天都會遇到大量的問題,對於高階工程師來說也是如此。
不同之處是高階工程師知道如何正確提問以及怎麼解決問題。中級工程師在對於常規問題也知道如何正確提問,但遇到更加複雜的問題時則需要尋求幫助。
高階工程師從不迷失方向,他們知道如何以正確的方式跟蹤問題。不是說高階工程師不需要向其他人尋求幫助。有時最正確的選擇就是向相關領域的專家尋求幫助。
中級工程師也需要具備正確提出問題的能力,除非分配給他們的是需要很深入的專業知識的複雜任務。
你不能指望初級工程師總是準確的提出問題。因為他們缺乏經驗,他們需要更有經驗的工程師來指導。我們要為初級工程師提供必要的資源,以及不斷推動他們朝著正確的方向前進。
如何晉級
我們都希望提升自己的等級,成為更好的工程師,但是要怎麼做呢?
初級到中級
由於初級工程師缺乏經驗,因此他們至少要經歷幾次完整的軟體開發流程。這一過程中他們不遇到很多坑,然後需要在下次避免再踩這樣的坑。
編碼時,初級工程師要學會使自己的程式碼變得更加簡潔。多為下一位接手這段程式碼的人考慮。你需要學會怎麼除錯程式碼,這會幫助你更好的理解它的執行過程。
此外,你需要對一些最佳實踐更加熟悉,同時你需要學習架構、效能、安全等知識,從而跨越到達到中級工程師的知識鴻溝。
中級到高階
從中級工程師到高階工程師可能會比較困難。有些開發人員整個職業生涯都停留在中級工程師。
高階工程師知道什麼可以做什麼不可以做。這是最難學的一門課程,你只能從過去犯的錯誤中學習。
如果你想要達到高階水平,你必須要準備好承擔沒有人能處理的任務。你應該考慮的是如何把工作做得更好,而不僅僅是怎麼完成。
作為高階工程師,你還有一項工作就是要幫助缺乏經驗的工程師,當他們不知道怎麼做時,你就是他們堅強的後盾。
高階工程師的技術棧可能不會使你感到驚訝,除了程式設計能力,他們對公司所用的工具和應用的使用都是非常熟悉的。
結論
初級、中級、高階工程師的區別不只是工作年限。當然,你可以肯定的說,高階工程師要比初級和中級工程師更加專業,知識更豐富。但這不是決定工程師等級的唯一因素。
高階工程師寫程式碼更加簡潔,並且編碼時的心態與初級開發者不同。但是除了編碼,知識如何提出並跟進問題也是一項必要的能力。只有高階工程師才能憑藉豐富的經驗從容的應對各種問題。
初級工程師想要成長就要專注於編寫更加簡潔的程式碼,並且多經歷完整的開發流程。從中級進階到高階則需要學會處理更多困難的問題。你應該願意承擔更有挑戰的任務,併成為技術棧的主人。高階工程師的另一項工作就是作為其他開發人員的後盾。
最後送給你一句Martin Fowler的話:“任何傻瓜都能編寫計算機可以理解的程式,好的工程師編寫人類可以理解的程式碼。”
原文連結
https://medium.com/better-programming/the-differences-between-a-junior-mid-level-and-senior-developer-bb2cb2eb000d
譯者點評
本文作者從編碼能力和處理問題的能力闡述了不同級別工程師之間的區別。個人認為作者對於中級工程師的能力和國內的網際網路公司的要求還是有些區別的。至少我接觸的中級工程師都要具備一定的系統設計能力了。而高階工程師則需要具備更加全面的問題處理的能力。不過對於大多數人來說,可能頭銜已經是中級了,但是並沒有掌握文中提到的那些知識,這反而成為了中級到高階的鴻溝。相信大家也都意識到了學習的重要性,既然入了這行,就一起活到老學到老吧