初級、中級和高級開發人員之間的差異
作為程序員,你身邊的同事有工作6 年的中級程序員,也有工作3 年的高級程序員。你可能會很疑惑,初級、中級和高級開發人員之間的差異究竟在哪裡?你是初級、中級或高級開發人員,不僅僅取決於你的編程經驗有多少年。初級開發人員甚至可以比高級開發人員年紀更大。
歸根結底都是由技術決定的。這並不意味著高級開發人員必須是全棧的專家,但可以肯定地說,高級開發人員遠比初級和中級開發人員熟練。
但是,高級開發人員與中級和初級開發人員的區別不僅僅在於編碼技能。那麼他們到底有什麼區別呢?
知識
顯然,高級開發人員比初級和中級開發人員擁有更多的知識。了解設計模式、體系架構、自動化測試、性能、安全等是初級開發人員與中級和高級開發人員縮小知識差距的好方法。
了解軟件開發中應該如何做是很重要的。但是僅僅知道這些東西並不能使你成為一名高級開發人員。知識儲備並不是開發者之間最大的區別,它只是其中一個因素。
編碼
不管大多數人是怎麼看待編碼的,但它並不只是與計算機的通信。編碼是與人通信和指導計算機工作。最終,代碼被編譯成0 和1。
代碼必須對將來使用它的其他開發人員來說容易理解。一個以前從未見過這些代碼的新團隊應該能夠運行代碼並處理新特性或進行錯誤修復。這就是初級開發人員和高級開發人員之間最大的區別所在。
在這個比較中,我將不考慮中級開發人員,因為中級開發人員在編碼技能方面是一個灰色地帶。顯然,它介於初級和高級之間,可能更傾向於高級。這主要與經驗有關,因為中級開發人員可能至少經歷過一個完整的開發週期。他們犯了許多最簡單的錯誤,並從中吸取了教訓。
如何辨別初級開發人員?
初級開發人員缺乏經驗。有些人剛剛畢業,開始了他們的第一份全職工作。初級開發人員的心態通常是讓代碼工作就好。可以正常工作的軟件和優秀的軟件在他們看來是相同的。
編寫簡潔的代碼是困難的,這是初級開發人員做不到的。初級開發人員通常會編寫花哨的代碼。你可以通過一行古怪的代碼和過於復雜的抽象來識別初級開發人員。初級開發人員往往會用這種方式炫耀自己的技術,試圖讓其他開發人員知道他們編碼有多好,這是錯誤的。
那麼高級開發人員呢?
當查看高級開發人員的代碼時,你可能會想:這就是全部嗎?剩下的代碼呢?高級開發人員編寫簡潔、簡單甚至是愚蠢的代碼。這是開發人員在編程方面所能具備的最重要的品質之一。高級開發人員遵循KISS 原則:保持簡單,愚蠢(Keep it simple, stupid)。
高級開發人員和初級開發人員思考代碼的方式是不同的。高級開發人員編寫代碼的時候將考慮可維護性和可擴展性。這與初級開發人員的思維方式完全不同:高級開發人員考慮的是必須使用代碼的人員,而初級開發人員只是考慮讓代碼在計算機上工作。
不僅僅是編碼技能
除了編碼技能,還有其他一些因素可以告訴你他們是什麼類型的開發人員。
一般來說,初級開發人員執行最簡單的任務或影響較小的任務,他們不做任何架構設計。中級開發人員也沒有設計解決方案,他們只是執行任務,與初級開發人員的不同之處在於,只要他們被分配到相對常規的任務,他們就可以在較少的監督下完成這些任務。高級開發人員可以完全自行開發應用程序。
這並不意味著高級開發人員一路上沒有任何問題。每個開發人員每天都有很多問題,這點不會改變,對於高級開發人員來說也是如此。
其中的區別在於,高級開發人員知道如何提出正確的問題以及如何處理這些問題。中級開發人員可以在相對常規的任務中提出正確的問題,但在更複雜的任務中需要幫助。
高級開發人員永遠不會迷路,他們知道如何正確的行動來跟進問題。這並不意味著高級開發人員不能向其他開發人員尋求幫助。有時候,最好的方法就是向在該領域有經驗的其他開發人員尋求幫助。
中級開發人員也應該能夠提出正確的問題,只要他不被分配需要深入知識水平的高度複雜的任務。
你不應該期望初級開發人員可以直接提出正確的問題。由於初級開發人員缺乏經驗,他們需要經驗更豐富的開發人員的指導。初級開發人員需要獲得必要的資源或被大力推向正確的方向。
進入下一個層次
我們都想提高自己,成為一個更好的開發人員。但是你該如何行動來達到下一個層次呢?
初級到中級
由於初級開發人員缺乏經驗,因此經歷幾次完整的開發週期是很重要的。在這個過程中,你會掉進很多陷阱中並學會如何避開它們。
在編碼方面,你應該學習如何編寫簡單的代碼。想想下一個要處理這段代碼的人。你還應該學習如何調試,因為這將使你更好地了解程序運行過程中發生的事情。
此外,您應該熟悉實踐知識,了解體系架構、性能、安全性等,縮小達到中級所需的知識差距。
中級到高級
從中級到高級可能相當困難。一些開發人員將在整個職業生涯中都停留在中級水平。
高級開發人員知道哪些可以做哪些不應該做,這些都是過去犯過錯誤積累的教訓。
如果你想進階到高級,你必須準備好承擔那些沒有人知道如何解決的任務。你知道的應該比如何完成工作多得多。
作為高級開發人員,你工作的一部分是幫助經驗不足的開發人員。當其他開發人員不知道如何做某些事情時,你是他們的後備力量。
高級開發人員有他們自己的技術棧,而不僅僅是編碼技巧。你需要了解在所在公司中使用的所有工具和應用程序。
結論
初級開發人員、中級開發人員和高級開發人員之間的區別並不取決於你工作了多少年。當然,可以肯定地說,高級開發人員比初級和中級開發人員更熟練,但知識不是最重要的因素。
與初級開發人員相比,高級開發人員編寫的代碼更簡潔,並且具有不同的思維方式。但區別不僅僅是編碼技巧,知道要問什麼問題以及如何跟進這些問題是至關重要的。只有擁有豐富經驗的高級開發人員才知道如何進行開發,不管是在什麼情況下。
作為初級開發人員如果想要成長,你應該專注於編寫簡單的代碼並經歷多個完整的開發週期。要從中級開發人員進階到高級開發人員,你應該專注於學習,而不僅僅是完成固定的日常任務。你應該主動承擔最艱鉅的任務,成為技術小組的主管。高級開發人員的另一個職責是為經驗不足的開發人員提供幫助。
最後,用Martin Fowler 的一句話作為結尾:“任何傻瓜都能寫計算機能理解的代碼,優秀的程序員編寫人類能夠理解的代碼。”(Any fool can write code that a computer can understand. Good programmers write code that humans can understand)