從一個普通開發人員到高級開發人員,他們之間有什么差距呢?只需要通過努力提升自己專業知識就能彌補這些差距嘛?閱讀這篇文章,你就知道,高級開發人員比你高的不僅僅有技術,更多的是對成長晉升的思考。
作者 | Tomasz ?akomy
譯者 |彎月,責編 | maozz
以下為譯文:
職位的定義往往非常棘手。畢竟,確立某人為初級/普通/高級開發的過程就像是設法將他們掌握的所有技術都歸結到一個“標簽”中。
目前我擔任前端工程師的面試官,而我經常問的一個問題是(前方劇透預警!):
“您認為,高級開發人員和普通開發人員有什么區別?”
“您認為,高級開發人員和普通開發人員有什么區別?”
注意:我不喜歡“普通”開發人員標簽,也許我應該使用“中級”,但感覺還是有點奇怪,所以我還是繼續使用“普通”吧。
這個問題沒有正確答案,而且我并不覺得每個人的答案都一樣。就個人而言,我認為這個問題能引發有關開發人員廣泛職責的討論。此外,我真誠地希望了解他人的觀點——我們的工作是編寫代碼?還是編寫測試?還是交付產品?指導別人?寫文檔?我們是人類嗎?還是說我們是舞者?
更努力、更好、更快、更強
當我剛步入開發的職業生涯時,我記得公司的高級工程師給我留下了難以置信的印象。他們擁有不可思議的力量,無論你提出何種問題,他們都能夠解決。
是的,作為高級開發人員,你應該能夠解決與專業領域相關的各種問題。
然而,高級開發不是機器。
而且他們也不應該是機器,高級開發并不意味著:“這個人每小時可以編寫30個redux action。”我敢肯定,在有些公司里,如果你能成為一個更好、更快、零bug(呵呵)的開發人員,那么就能獲得晉升。但是老實說,高級開發的意義不僅限于此。這不是一個“是什么”的問題,而是一個“怎樣”的問題,更重要的是“為什么”的問題。
很多書通篇都在描述關于技術決策的制訂。這是一個極其復雜的領域,需要考慮很多因素。最好的方法是提出多種做法,同時回避一些做法。而不是千篇一律地說:
“過去20年中,我一直在做這份工作,所以我會堅持做下去,因為除此之外我什么都不懂,而且坦白說我有點害怕學習新東西。”
“過去20年中,我一直在做這份工作,所以我會堅持做下去,因為除此之外我什么都不懂,而且坦白說我有點害怕學習新東西。”
所有這些都非常重要,但問題在于:我認為高級開發人員必然會對他們的組織產生影響。這意味著:他們的工作不僅僅是將JIRA票轉換成代碼。
編寫代碼之外的思考
我想引用一個非常聰明的人的一段話:你的目標是通過代碼解決問題。
如果你對需要構建/維護的系統有深刻的了解,則可以做出純技術之外的決策。這個功能有必要嗎?它能解決什么問題?我們可以用其他方式解決這個問題嗎?我們想要解決這個問題嗎?
這種思路有時被稱為業務環境,但是如果你想做好自己的工作,則不僅應該了解環境,還應該能夠塑造和影響這個環境。并非只有在組織中擔任高管的人才能影響產品。至少,你需要了解。
這不僅關系到你編寫的代碼,即使你不會觸及的代碼也同樣重要。高級開發人員能夠考慮到代碼之外的事情,從更廣泛的角度看待他們的產品,并考慮他們的下一行代碼是否會有助于實現團隊的目標。
舉個例子——你可以花費整個Sprint,根據規格利用react-helicopter來實現兩個不同版本的界面,然后啟用A/B測試驗證。這是一個了不起的方法。
但其實,你可以考慮(例如)公司80%的銷售額都來自20%的用戶。為什么不給這些用戶發送電子郵件?詢問他們的意見?或者也可以直接打電話給他們?
當然,這只是一個簡單的例子,但它說明了一個問題:我們首先應該考慮的是問題,而不是代碼。大多數問題可以都通過多種方式解決,高級工程師都應該思考編寫代碼之外的東西。
幫助他人
有一種感覺:你確切地知道功能的全部含義,你可以戴上耳機,在悠揚的音樂聲中心無旁騖地寫一天代碼。這種感覺簡直無與倫比,是不是?
確實如此,然而如果你周圍的人需要幫助,那么你就不能置身事外了。高級開發理應指導其他經驗不足的開發人員。我個人見過很多經驗豐富的開發人員,他們顯然忘記了茫然不知所措的樣子。
有一點很重要,我們需要記住,那就是并非每個人都適合進行一對一的面對面指導,這沒關系。你可以通過代碼審查,編寫良好的README文檔,以及為文檔和體系結構決策(理想情況下,這些文檔應有據可查)做出貢獻等方式,來幫助別人達成目標。簡而言之,你應該成為“+10% BUFF的工程師”。
高級工程師經驗豐富,但是將這些經驗據為己用絕對不公平。我個人認為高級工程師這個職位最重要的一項職責是促進知識共享的文化。
寫博客、演講資料、文檔或在Slack上粘貼鏈接,這些方式統統可以。看到同一家公司里的兩個團隊重復解決同一個問題是一件可悲的事情,而高級開發需要確保這種情況不會發生。
怎樣才能晉升到高級開發的職位?
首先你需要提升自己。
嚴肅地說,晉升到高級開發職位的最佳方法是勝任高級開發的工作。
開拓代碼的視野,洞悉代碼與整個系統的關系。積極地觀察,挖掘優化的機會。針對你的應用進行性能審核(無需他人提醒),并努力將你的主頁的性能提高10%。積極地幫助他人(他們會心存感激)。積極地推進組織的知識共享文化,積極地為這些計劃做貢獻。走出舒適區,積極地為其他項目和任務貢獻自己的力量。
最后,祝大家好運!
原文:https://dev.to/tlakomy/so-what-does-it-mean-to-be-a-senior-developer-18mk
擊閱讀原文,即刻參加調查!


