如何定義和區分高級軟件開發工程師
在軟件開發領域,高級開發工程師通常是指那些編寫代碼超過 3 年的人。這些人可能會被放到領導的位置,但經常會產生非常糟糕的結果。Matt Briggs 是一名高級開發工程師兼 Scrum 管理員。他認為,單純使用年限來劃分開發人員存在問題,兩個同樣具有 10 年開發經驗的開發人員可能大不相同。近日,他發表了一篇博文,根據開發者所能發揮的作用劃分軟件開發工程師的成長階段。
初級開發工程師
初級開發工程師通常是指那些剛剛結束學生生涯的開發者。他們以為自己什么都懂,但是面臨問題時卻又一籌莫展。他們不熟悉用到的工具,也不了解當前代碼庫。因此,他們需要監督,需要大量的培訓和指導,否則可能幾年過去了,他們仍然是初級開發工程師。
一名優秀的初級開發工程師應該能夠快速完成他人分配的工作,并且保證質量。
中級開發工程師
中級開發工程師不像初級開發工程師那樣只專注于代碼,他們開始通過試驗、文獻和與其他程序員的討論尋找構建系統的正確方式,也就是說他們會學習軟件構建理論。
一名優秀的中級開發工程師不需要監督。他們可以自己提出代碼設計的問題,并在設計討論中發揮重要的作用。他們也是開發團隊的主力。但是,他們在遵循“設計模式”和“領域驅動設計”等理論方法設計系統時,可能會出現過度設計的情況。因此,有必要對他們進行進一步的指導和更高層次的監督。
Briggs 指出,絕大多數的高級軟件開發工程師和團隊負責人實際上都是中級開發工程師,只是大部分人都沒有意識到這一點。
高級開發工程師
高級開發工程師拋棄了支配中級開發工程師的復雜性,追求簡單至上。他們不再按照知識劃分開發者,而是了解每個人的優勢和不足。在理論運用方面, 他們重視“上下文”,而不是一味地追求“正確方式”。他們知道,構建優秀的軟件,唯一的方式是改造理論方法,適應客戶、代碼庫、團隊、工具和組織的需求, 在設計模式、庫、框架和流程之間尋找平衡。
高級開發工程師更多地為別人考慮,了解組織和客戶如何工作,知道他們的價值所在。他們從來不會說“這不是我的工作”。他們的工作是提供問題解決方案,總是考慮他們的工作會為組織和客戶帶來什么價值,而不是他們會有多大的工作量。
中級開發工程師會鉆研一些令人厭煩的工作,但高級開發工程師會退一步,看看是什么導致了這樣的工作。他們會評估修復問題根本原因的成本,從而決定是直接修復,還是先讓系統運行起來,后續再修復。
高級開發工程師清楚地知道,他們的主要作用是讓團隊變得更好。同時,他們也深知,領導不是權力,而是授權,不是命令,而是服務。
Briggs 指出,如果團隊沒有高級開發工程師擔任領導角色,那么項目注定要失敗。高級開發工程師是唯一有資格選擇技術和平臺的人,因此,從項目開始的第一天起就應該有一個這樣的人。
Briggs 承認,這種劃分方式過分簡單,卻也可以提供一些有用的信息。他建議,企業在招聘時要考慮團隊和組織的人才構成。