Shopify 開發總監分享:成為頂尖軟體工程師應具備的 4 大心態與能力

不論是初學程式者,或已經是新手工程師,或許都好奇過頂尖軟體工程師的職涯面貌,該怎麼做才能成為頂尖技術人才?

7 月份 ALPHA Camp AMA 直播活動,特別邀請到知名電商服務平台 Shopify 新加坡開發團隊總監 Winston,分享自己 13 年工程師職涯心得。

想成為頂尖軟體工程師,除了磨練技術能力外,更重要的是心態與正確習慣的養成。Winston 將分享他在不同職涯階段的學習與成長,並提煉出成為頂尖軟體工程師的 4 大關鍵心態、能力,最後解答網友提問:

不斷踏出舒適圈 在挑戰中持續進步的職涯

進入國際級企業 Shopify 之前,Winston 擁有 10 多年豐富的工程師職涯歷練:大公司、新創、創業接案…等,為他成為頂尖技術人才紮穩根基。專訪中他詳盡分享了不同工程師職涯的學習成長與經驗總結:

  • 大公司擔任 IT 人員:成長速度較慢,渴望更有創造性的工作

Winston 畢業後去了大公司 IBM,雖然職稱是 IT 人員,但主要負責維護資料庫。對他而言,工作的發揮空間較小,他只需要去跑資料庫的腳本,完全沒有更動資料庫的權限。有感於成長速度太慢,想做更創造性的工作,Winston 決定離開大公司。

  • 新創公司歷練學習:從歷經職涯迷惘,到重拾對軟體工程師職涯的熱情

藉由展現自己的 Side-Project,Winston 錄取進一家做網站開發的新創公司 Wego,負責數據專案,有一段陣子轉去做產品經理。這也是他的職涯迷惘期,猶豫著是否繼續走工程師這條路。直到後來他去了另一間新創 Pivotal Lab,嘗試了 Pair Programming、Agile、TDD,他發現在這個環境自己的技術能力大幅提升,開闢了對軟體工程師職涯的認知,建立了「工匠精神」,開始去思考要解決甚麼問題、怎麼把產品做好,也找回對工程師職涯的熱情。三年後,由於公司屢次被轉手、文化一直變動,他決定離開去看看其他世界。

  • 自行創業、接案:發現小型接案公司難以避免的問題,決定轉換跑道

離開 Pivotal Lab 後,Winston 加入另一間小型新創,但他發現難以改變環境、展現自己所學的技能。於是他決定自行創業,成立新創顧問公司,提供新創公司技術諮詢及教育服務。但 Wintson 發現,這種小型接案公司會遇到一個問題:小公司做不長久,但若發展成大公司,為了養員工,又無法挑案子。最後 Wintson 再三考量之下,決定轉換跑道。

  • 重回大公司,站上大舞台:發揮新創經驗,幫助傳統企業數位轉型

新加坡能源公司 SP Group 找上 Winston,詢問他是否有意加入。他覺得這是個大舞台,可以施展新創經驗幫助傳統企業數位轉型。Winston 協助優化技術團隊的工作流程,例如引進 Github,或做 CI/CD、Design System,把執行專案所會用到的工具、框架、觀念等引進 SP Group 並協助維持專案品質。

如何成為 Shopify 新加坡開發總監?面試流程、工作內容分享

藉由 10 多年工程師職涯歷練,Winston 成功錄取 Shopify ,擔任新加坡開發總監已近 1 年,從零開始建立新加坡工程團隊。

當被問起國際級公司的開發總監面試如何進行?Winston 簡述其面試流程:

  1. 首先透過 email、視訊與 Lead 聊天互動 
  2. 接著前往加拿大總部,一天完成 5 場面試:含技術面試(白板題、現場程式測驗、Pair Programming 等)、文化面試(與 Product、UX、Team Lead 聊天)

進入 Shopify 後,身為開發總監,管理跟寫程式的比重如何?Winston 分享他的工作內容以招募及管理為主:組建團隊之餘,也會控管專案進度,幫團隊成員 Code Review 等。但他也說明,開發總監在不同階段會有不同職務,像是在加拿大的開發總監,當團隊組建好後,就會著重在做專案,深入寫程式或架構設計。

最後談到團隊間的合作,Winston 提到 Shopify 有一個團隊合作模式叫「tri-factor(三方驗證)」:三方分別為 Engineering、UX、Product。意思是所有人都是平行關係、同輩,沒有誰要對誰進行匯報。當團隊在做一個專案時,大家會共同去思考問題在哪裡、解決方法是什麼,並利用數據輔助剖析及驗證。  

延伸閱讀:軟體工程師如何養成專業-從能力、特質到面試準備

成為頂尖軟體工程師,應具備的 4 大關鍵心態及能力 

從工程師到開發總監,Winston 分享他 13 年職涯中,所提煉出成為頂尖軟體工程師的 4 個關鍵心態與能力:

1. Growth Mindset 成長心態
Growth Minstet 成長心態,是指不斷進化自己,不停滯在舒適圈的狀態。要持續學習新知,包含硬技能及軟技能的加強。Winston 以自身為例,提到他會離開之前的公司,選擇嘗試新的環境及挑戰,也是因為開始感到安逸。驅使他的主要動力,就是不斷去思考如何增加自己的價值。

2. Egoless Programming 無私程式設計
Egoless Programming  無私程式設計,意思是不要過度執著自己寫出來的程式。很多人會對自己寫的程式有感情,當別人提出疑問時,會感到不滿。但 Egoless Programming 的精神,是倡導不論自己的經驗多豐富,仍然要保持謙遜,並接受自己可能會犯錯。不要只想到表現自己,而是如何去表現整個團隊。

3. Strong Communicator 良好的溝通表達
溝通表達能力,在軟體工程師職涯裡越來越重要。因疫情影響,許多公司工作型態轉為 Work From Home,這時候工程師就需要會書寫,來解釋自己的想法。好的溝通表達,是能夠把故事說好,說給不同對象聽:不論是和團隊討論技術,或向主管或老闆回報進度,都能掌握不同人想聽的故事是什麼。

4. Engineering Maturity 成熟的程式思維
資深軟體工程師,跟 Junior 工程師相比,思考的層次要更深更廣:除了開發功能外,會去思考如何長期維護、對整個團隊的影響是什麼、這個產品對公司的目的是甚麼… 等問題。成熟的程式思維,就是能夠從經驗中去學習,雖然有自己的想法但也不完全堅持,保留溝通合作上的彈性。

常見軟體工程師職涯 Q&A

針對網友對工程師的職涯提問,Winston 與校長 Bernard 分別進行解答:

  1. 軟體工程師如何認知自己的能力處於業界哪個水平?

Winston 分享一個方法:「去面試」。當參加面試時,才會知道現今市場需要什麼樣的技能及員工。校長 Bernard 進一步補充,透過面試來驗證自己的能力是很好的方式,但建議要挑比較好的公司來面試,才能幫助建立正確的市場認知。

除了透過面試外,校長 Bernard 另外提供兩種方法:「做 Side-Project」運用框架、技術,來驗證自己的能力;或是「參與社群」,了解產業發展現況。

  1. 軟體工程師技能的培養,該專注在工作所需的知識,還是要學市場最新的技術?

Winston 認為好的平衡是要成為一個 T 型人才。要去深入掌握一個特定技能,比如 Ruby,另外也要具備較廣泛的知識。至於什麼時候去建立知識的深度與寬度,涉及到個人機遇與工作環境需要。新的知識需要去關注,但也不必一味去追逐,而是要跟自己學過的技術去比較,兩者的差異與優缺點是什麼,藉此鞏固既有知識。

  1. 程式語言該專精一項,還是廣泛學習不同語言,對未來發展較好?

如同上一題的回答,Bernard 校長建議可以從 T 型角度出發,先挑一個自己喜歡的語言,如 Ruby、JavaScript、Python,對其有深度認識。同時也要橫向建立技能樹,比如前端框架 React,接著找小型專案來廣泛應用。

  1. 非本科系轉職軟體工程師最需要的能力是什麼?

Winston 分享他面試過許多非本科轉職成為工程師的優秀人才,他觀察到他們擁有「刻苦耐勞」、「熱情」這兩大特質,會不斷精進自我,加強自己的程式能力。因此他在當面試官時,其實已經不太關注面試者的本科是什麼。

延伸閱讀:轉職工程師要學到什麼程度?該選什麼程式語言?7個案例校長一次解析!

結語

專訪最後,有網友提問 Winston 如何充滿興趣與熱誠,推動他一路上不斷挑戰自己,成就頂尖軟體工程師職涯?Winston 回答:「我認為,做什麼事都要盡力,就算失敗了也對得起自己。」

從 Winston 的分享可以看見,想成為頂尖軟體工程師,最重要的是擁有不斷精進自我的成長心態,在感到安逸時選擇更有挑戰性的環境,才能打磨自己的技術能力、軟技能,一步步成長至卓越。

3分鐘小測驗,開啟你的網頁開發頂尖工程師學習之路