1. 程式人生 > >我所理解的高階工程師

我所理解的高階工程師

beautiful-flowers-blue-flowers-bright-1115090.jpg

在我作為軟體開發工程師的時候,我認識並與許多其他開發人員共事過。他們中的一些人剛剛開始程式設計生涯,有些是大學畢業後開始他們的第一份工作,有些人已經有了多年的工作經驗,有些甚至有十年以上的軟體開發經驗。

在我的職業生涯早期,我問自己什麼是“高階”開發者,我如何才能獲得這個稱號?我以為這與多年的工作經驗有關,如果我有三年以上的工作經驗,我會自動獲得這個頭銜。

如今,在我與許多其他開發人員合作之後,我對“高階”軟體開發人員這個頭銜有了明確的理解。

下面先總結一下我理解的高階軟體開發工程師的特點:

  • 對正在做的事情充滿激情
  • 做一個解決問題的人
  • 瞭解程式語言和框架的基本原理
  • 成為一個導師的同時也給自己找一個導師
  • 讓自己跟上業界的發展
  • 離開你的舒適區
  • 爭取自己的觀點
  • 要社交
  • 同時專注於軟技能的學習和提升

下面讓我們來深入解釋這些特點。

對正在做的事情充滿激情

如果你對正在做的事情充滿激情,那麼其他大部分目標都將會自動實現。在我看來,只有喜歡正在做的事情,你才能成為一名優秀的軟體開發人員。這也意味著你應該選擇一個你(或將會)非常擅長的技術棧或者專業。

當然,你還應該學習專業以外的其他東西。你的目標應該是成為一名 精通自己主要專業的 T 型軟體工程師。

在這篇文章中,我將主要關注 Web 開發技術棧,因為這是我經驗最豐富的領域,並形成了關於這個領域的個人看法。

做一個解決問題的人

你應該愛上在無盡的時間裡解決具有挑戰性問題的感覺。你應該有能力,有野心,有技能和熱情來解決職業生涯中可能遇到的任何問題。

瞭解程式語言和框架的基本原理

這對軟體開發人員來說非常重要。學習程式語言或框架的基礎知識通常來說不是很複雜。大多數情況下,你可以在短時間內快速實現功能甚至小專案。但如果你需要除錯,調整框架或者修復 bug,情況就會變得棘手。

例如,很多使用 Angular CLI 的人並不熟悉框架背後的執行的所有步驟。或者基於 Angular 框架並使用 TypeScript 編碼程式碼,但卻不知道如何閱讀(混淆)壓縮包中的 JavaScript 程式碼。

從根本上講,你可以遵循以下這些基本步驟來學習基本原理:

閱讀軟體程式設計的基礎書籍

我建議閱讀一些關於軟體開發的經典書籍,例如《程式碼整潔之道》《程式設計師修煉之道:從小工到專家》

。這些書將為你提供編寫優秀軟體的基本模式,指南和最佳實踐。

深入瞭解你使用的程式語言

在 Web 開發中,JavaScript 是你應該掌握的語言。最終你的瀏覽器都會執行 JavaScript 程式碼(即使你是使用類似 Angular 之類的框架並使用諸如 TypeScript 之類的程式語言編寫程式碼的),因此你需要能夠理解所執行的程式碼。當你需要分析框架是如何實現某個特定功能時,這一點也是很重要的,因為這樣你才能讀懂框架底層的 JavaScript 原始碼。

掌握使用的框架

與程式語言相同,你需要深入研究框架中使用的高階機制。例如對於 Angular,我推薦部落格:Angular In Depth

瞭解你使用的 IDE/編輯器/命令列

通過使用 IDE/編輯器/命令列的鍵盤快捷鍵,外掛和命令來儘可能提高自己的效率。如果你使用的是 Visual Studio Code,那麼可以看下我的這篇文章:How I Increased My Productivity With Visual Studio Code

瞭解版本控制

我平時主要使用的是 Git,可以推薦你這本免費的線上電子書《Pro Git》

成為一個導師的同時也給自己找一個導師

在我看來,如果你指導別人,並且自己也有導師,這樣你才能稱自己為“高階”開發工程師。

你應該在公司中,專案中甚至網際網路上找到某個人或者某些人,你可以向這些人學習從而使自己變得更好。因此,你也可以擁有一個“遠端”導師,通過閱讀他的某篇部落格,觀看演講,收聽播客甚至閱讀他的 Twitter。

不要害怕你不是最好的,在任何方面幾乎都有比你更好的人。(你可以閱讀《Impostor syndrome》)。

那麼你如何輔導他人呢:

  • 要有耐心,不要因為他人缺乏知識而對其進行評判
  • 積極傾聽對方的講話
  • 展示作為高階開發工程師可以實現的成功之路
  • 花費足夠的時間並在需要時提供幫助

讓自己跟上業界的發展

我的建議是使用以下這些渠道讓自己跟上業界發展的最新動態:

  • Twitter
  • YouTube
  • 播客
  • 參加技術大會
  • 閱讀技術播客
  • 參加線下聚會
  • 學習線上課程

離開你的舒適區

很多開發人員試圖避免離開他們的舒適區,而作為“高階”開發工程師你不應該害怕離開自己的舒適區,下面是一些例子:

  • 如果你害怕跟很多人談論技術問題?那麼嘗試在技術大會或者線下聚會中進行技術分享並逐步熟悉它
  • 你不喜歡編寫後端程式碼,只對前端感興趣?那麼就嘗試繼續學習後端技術,當你瞭解了除了前端之外的其他端的知識時,你將為此而受益
  • 你因為不理解而避免涉及 CI/CD pipeline 相關的知識,而其他開發人員對此更有經驗?那麼就花點時間學習相關基礎知識,這樣碰到問題時你可以自己解決,而不用依賴其他開發人員

爭取自己的觀點

在我看來,“高階”開發工程師應該有明確的觀點,並能夠在客戶和其他開發人員面前爭取它。對我而言,如果我“命令”團隊做出技術決策,團隊中沒有人表達自己的觀點就接受並開始執行這個決策,那這是令人不滿意的現象。

如果雙方就技術提案進行生動的討論,那才是有意思的事情。它可以幫助架構師獲得新的看法,團隊成員也可以積極的對決策產生影響。

要社交

不要把自己隱藏在顯示器後面。出去外面和其他開發者進行交流,你將從中獲益。此外,使用上面提到過的社交平臺和其他開發人員保持聯絡。

我還建議你建立起自己的個人品牌,讓其他人能夠關注你:

  • 有一個展示你專案的網站
  • 使用類似 Twitter,Facebook,YouTube 或者 Instagram 之路的渠道,並在上面給你的關注者傳送有趣的話題
  • 開始在部落格上寫技術文章
  • 嘗試在技術大會上發表演講

同時專注於軟技能的學習和提升

編寫好的程式碼很重要,但能夠向類似客戶一樣的非技術人員描述技術內容也非常重要。你應該能夠以可理解的方式繪製體系架構或者用文字描述體系架構。此外,你應該能夠進行工作時間管理,以便以最有效的方式確定任務的優先順序並對其進行處理。

總結

正如你所見,成為高階軟體開發工程師的過程並不容易,並且無法在短時間內實現。這是多年經驗很重要的一個原因,但你必須通過專注於上述方面來度過這些年的時間。如果你只有多年的工作經驗,但沒有作為一個開發者去成長,我認為你不能成為一個高階工程師。

當然,以上只是我的拙見,請告訴我你對高階開發者的定義以及你與他們共事時所獲得的經歷是什麼?

asce1885