閱讀時間約 7 分鐘

3089 字

我出社會九年,當了九年的軟體工程師。十年前還有一年的學生生活可以做一些上班族不太有時間做的事情。以前走過一些彎路,如果十年前的我有現在的我當職涯導師,現在我絕對會有更成功的職涯。

在學校多花時間學習基礎知識:英文、演算法、數學

英文決定了我們是否能在世界舞台上跟人競爭,有能力面試進國際化的公司,職涯上會多很多選擇,也會直接反應在薪水上。面試之外,英文的資料還是最多的,至少軟體工程師常用的 stackoverflow 就是使用英文,各領域的研究論文也都是英文。現在大型語言模型蓬勃發展,或許一兩年內就可以用母語讀這些外文資料了,五年後大家都可以用各自的母語來溝通,或許到那時候英文的重要性會降低、甚至不用學英文只要學習母語。我無法預測未來,不過學好英文對十年前的我來說是大有幫助。

演算法很重要,理論跟實作一樣重要。當年我在學校學的演算法是純理論的數學課,流行的 online judge 是 UVA judge。現在可能很少人聽過 UVA judge 了,那是一個線上解題網站,有點類似 Leetcode 但不是面試導向,題目沒有很好的分類,但當時這裡題目最多,有難有簡單。有其他網站但是沒有比較好,codeforces 一直到我大二才出現。老實說工作上不太會寫到什麼動態規劃最大網路流之類比較困難的演算法,但演算法觀念好的話能夠讓人將自己的想法快速轉換成有效率的程式碼,對於軟體開發工作很有幫助。我會告訴十年前的自己紮實地學好演算法,對於工作、面試都很有幫助。

演算法也算是一種數學,不過對於機器學習工程師來說除了演算法還有很多重要的數學所以我把它獨立出來,我現在就很後悔當年沒有紮實地把統計學學起來。機器學習是很吃重數學的一門學科,我會告訴十年前 (或是十五年前) 的我,盡可能地多修數學課,而且要弄懂重要觀念。當下可能很多作業、很累,也不知道學了要做什麼。確實大部分的東西做為一位不做學術研究的工程師都用不到,但觀念能夠幫助我們更好的去理解模型中到底發生了什麼事情,所以能夠更有效地去調整它。

技術以外的東西跟技術一樣重要、甚至更重要

大學的時候特別崇拜高中就在比資訊奧林匹亞的同學,因為他們的程式總是寫得又快又好。大一的時候,我要寫十幾個小時的作業,他們花五分鐘看完題目打完字就寫完了,差距就是這麼巨大。感覺資訊領域有一股風氣,特別崇拜技術大神。無庸置疑,他們非常厲害,但我們一般普通人做一個軟體工程師,除非自己一個人創業做軟體,不然一定會跟其他同事合作完成公司產品,更資深一點還有可能要代表工程師們跟非技術背景的同事溝通協調,這時候溝通表達、人際關係就非常重要。越資深,這些非技術的東西就越重要。

面試中通常會有一關在詢問人格特質相關問題 (或稱 behavioral questions),通常是過去遇到最大的挫折呀、跟同事上司意見不合的時候怎麼辦呀,諸如此類。以前在準備面試的時候總是忽略這些問題,覺得把技術問題準備好就好了,最多只準備一個自我介紹,也因此錯過幾個 offer,影響到我現在的薪水。這些問題都是可以事先準備的,之前面試過麥肯錫的資料科學顧問所以研究了一下頂尖管理顧問公司的面試,不看還好,一看簡直驚為天人。Youtube 上面的模擬面試給的答案都超厲害,厲害到看起來像字句斟酌,還好一般軟體工程師面試不用準備到這種程度。behavioral questions 的業界標竿就是亞馬遜的 leadership principles,照著準備就可以得到不錯的結果。花的時間遠比刷 Leetcode 少很多,對於面試的幫助卻非常大。

勇於花錢投資自己

投資理財有複利效應,投資自己也有,今天學會的技能對於未來學習其他技能有所幫助就是投資自己的複利效應。年輕的時候薪水不高,但是越早投資複利效益越大。我年輕時做過最好的投資是在 2018 年的時候花六萬塊組了一台深度學習用的電腦,在 2019 年的時候跟朋友組隊比了一個 Kaggle 深度學習的比賽拿到銀牌。當時我在公司還沒有深度學習的經驗,這個成績在我後來找工作的時候每次都會提到,用來證明我在深度學習的能力、對機器學習的熱忱以及快速學習的能力。讓我在沒有深度學習業界經驗 (只有機器學習經驗) 的情況下錄取需要深度學習經驗的職缺,這份新工作完成的專案讓我在未來找工作面試時能夠講一個好故事,證明我是一個好的資深工程師,一切都是環環相扣的。以財務來說,當時我的月薪只比六萬塊多一些,對當時的我來說是一筆大錢,但這筆投資讓我後來跳槽加薪更順利,效益遠遠超過六萬元。當然,Kaggle 比賽拿銀牌不是花錢就有的,也需要投入大量時間。越早投資,越早享受投資的成果,因此最好的開始時間是十年前,其次就是現在。

在對的方向努力事半功倍,從網路上的大師身上學習

在網路時代,幾乎所有的主題都可以在網路上找到前人的分享,網路可以找到全世界的內容。出社會第一份工作是在剛募完 A 輪的新創公司,員工只有五十人。新創公司相較成熟的大公司沒有良好的制度,趕快產出結果獲得商業上的成功確保公司存活比長期規畫更重要。在當下的環境,做為一位軟體工程師,我太專注於技術、快速完成專案而忽略的技術以外的事情,後來在那家公司看著同期或比我晚加入的同學們都發展得比我更好,但我不知道我哪裡做錯了,也不知道怎麼尋求幫助。現在才知道,其實 Youtube 上有很多矽谷大公司 staff engineer 在分享他們如何升到這個等級、如何在職涯上成功。軟體人都很樂於分享,看完他們的分享才知道我過去忽略很多跟技術一樣重要的事情,才知道遇到職涯困境時我應該要跟我的主管討論、尋求幫助。畢竟我如果能夠表現得更好,對主管來說也很有幫助,我應該把主管當作是工作上的隊友,不僅僅是主管。如果當年我就知道這些,我的職涯一定會比現在更好。

對於軟體工程師,我推薦 Rahul Pandey 的頻道,他是前 Meta E6 staff software engineer,現在自己創業。產品是軟體工程師職涯社群 Taro。影片很有料,社群更有料。在矽谷大公司升到 staff engineer 是一件非常困難的事情,多數人一輩子升不上去。根據 Chrunchbase 的資料,Taro 在 2022 年創立,Y Combinator 跟 She’s Independent 在 2023 年投資了五十萬美金的 pre-seed 輪,也是成績斐然。

當然,不只工作可以找到厲害的前輩分享,投資理財、人際關係等等都是,資訊很多,必須保有獨立思考的能力,判斷哪個資訊對自己是有幫助的。有時候自己是新手難以判斷資訊是否正確,在這種情況下我會看重兩點:

  1. 分享者過去的成就、經驗是我想學習的嗎?他分享的內容在我學習的當下還適用嗎?
  2. 誰會推薦這個分享者,推薦人懂這個領域嗎?推薦人厲害嗎?

勇於用自己的名字表達自己、承擔風險

科技島讀有一集「不靠運氣致富」,或是 Naval Ravikant 在 Twitter 上一系列的推文都是在講一樣的東西。在網路時代不靠運氣發大財是有可能的:

  1. 擁有專業能力
  2. 利用網路規模化專業能力解決很多人的問題
  3. 用自己的名字發表並為成果負責

以前總認為自己不是最厲害的,有什麼資格出來教學或是分享?當然現在有比以前厲害一點,不過世界很大,離最厲害還很遙遠。出來分享第一是因為真的寫下來的東西才是自己真正理解的東西,透過寫作我也在成長;第二,比我厲害的人可能比我忙,沒有時間出來分享;第三,大師太厲害了,分享的東西可能不是那麼平易近人,像我這種普通人的觀點也會對這個世界有所幫助。

當然能靠寫寫文章就發大財是很好,不過我有在這個部落格用 Google anlalytics 監控流量,目前的流量距離發大財還很遙遠,發大財的機率大概不高。不過任何事情都不是一蹴可幾,越早開始累積越好,這些累積對於人生一樣有複利效應:過去的累積會對未來的成長產生幫助。

結語

我給十年前自己的五個建議:

  1. 學習基礎知識
  2. 不要忽略知識技術以外的事情
  3. 勇於花錢投資自己
  4. 從網路上的大師身上學習
  5. 勇於用自己的名字表達自己、承擔風險

雖然我是一個軟體工程師,不過我想這些建議對於其他領域一樣有用。我很希望十年前就有人教我這些事情,不過從現在開始,網路上各個領域都有世界級的大師教我所有我需要的事情。

comments powered by Disqus

最新文章

分類

標籤