轉職|軟體工程師|一定要刷題嗎

y
chenstraveler
Published in
Jan 31, 2024

--

2023.10.16 / 找不初生之犢的照片用貓來取代 / @chenstraveler

「初生之犢不畏虎。」

比喻閱歷不深的年輕人敢說敢做,無所畏懼。(以為是每日一字)

剛轉職時,對於軟體工程師領域了解得太少,覺得只要把功能寫好,對於演算法、資料結構的了解只要夠用就好。

忽略了資工系四年、資工所兩年累積的基本功有多紮實。

軟體工程師需要具備什麼能力

(以下為個人意見)

  1. 軟實力(跨部門溝通、團隊協作、資料查找能力)
  2. 學習能力(是一個不學習就等著被淘汰的工作環境)
  3. 基本能力:演算法、資料結構
  4. 加分項:程式語言的熟悉程度、系統設計等等

通常系統設計是需要經驗培養的,感謝現在開源資源豐富,讓我們可以在遇到案例前先參考別人做過的解決方案,後面會統整推薦的資源。

上次轉職|軟體工程師|從裡面看的風景分享過,從只會寫SQL的工程師換到Backend工程師、再到全端工程師的心境變化。

花了三四年時間,對於軟體工程師領域更熟悉後,開始體會到”演算法”跟”資料結構”和”系統設計”的重要性。

差別在於,做出能用的功能以外,能不能對於功能評估、效能、壓力測試、符不符合整個系統的設計邏輯等等。

清境 / 佛羅倫斯 / 推!

如何知道自己該加強什麼

其實軟體工程師產業是一個需要不斷學習的領域,但要學的東西太多了,需要先精簡後,逐步推進。

自己的情況是,因為User有反應使用效能的問題後,開始檢視自己有什麼地方能做得更好?列了以下幾點:

  1. 在動手coding前,需要針對功能先做評估,不是所有需求都照單全收。
  2. 對於演算法和系統設計的熟悉程度不足,在優化需求時無法提供太多解決方案。
  3. 會把功能或者Bug想得太複雜,導致程式碼也寫得太複雜。
從佛羅倫斯民宿拍出去的風景 / 推!

做了哪些行動

以上問題的主因,大多是因為技能累積不足,所以對自己信心不足。意識到這樣的情況後,就開始動起來(?)

  1. LeetCode刷題
  2. 刷題時,遇到沒看過的演算法要先做功課跟筆記。(很重要!)
  3. 開始學System Design
  4. 有自信的詢問需求,針對不合理的部分提出想法。
  5. 不懂的就問,沒有問題是笨問題。(被當作笨問題就算了,不要問第二次就好,切記。)

發生了什麼改變

  1. 在寫Backend功能時,完全有感受到演算法的好。腦中會出現很多不同的解決方案,想法也會變得比較彈性。
  2. 當技能有提升時,在工作上的自信心也會增加,在開發時也比較不會想得太複雜。

覺得跟閱讀有點像,當累積夠多樣本後就能更快的google問題,但前提是有先把這些關鍵字輸入到腦中。

能邊remote邊旅行就是轉職的目的

結論

對於後端工程師這個職務來說,雖然不刷題也可以應付工作上的需求,但刷題後一定會感到工作效能提升、程式效能提升等等,屬於越學越輕鬆的技能。

推薦的學習資源

初學者可以先上線上課程,進階者可以選擇Youtube上的各種教學。

推薦筆記軟體

  • Heptabase
    可以用Map也可以用Tag, 但自己比較習慣用Tag紀錄。
Heptabase示意圖

時間也是很寶貴的,努力錯方向沒關係,因為所有的過程都會是累積。但是時間久了會有挫折的感覺,可能有些人也會因此放棄。

希望自己的經驗分享,也可以幫助更多想轉職又迷惘的人。

如果針對軟體工程師需要的能力有其他想法的人,也歡迎一起交流📮

2023.09.17 / 珈啡所在 / 有好多唱片收藏

--

--