【學長姊帶路】軟體工程師一定要刷題嗎?
原標《轉職|軟體工程師|一定要刷題嗎》
文/y
「初生之犢不畏虎。」
比喻閱歷不深的年輕人敢說敢做,無所畏懼。(以為是每日一字)
剛轉職時,對於軟體工程師領域了解得太少,覺得只要把功能寫好,對於演算法、資料結構的了解只要夠用就好。
忽略了資工系四年、資工所兩年累積的基本功有多紮實。
軟體工程師需要具備什麼能力
(以下為個人意見)
- 軟實力(跨部門溝通、團隊協作、資料查找能力)
- 學習能力(是一個不學習就等著被淘汰的工作環境)
- 基本能力:演算法、資料結構
- 加分項:程式語言的熟悉程度、系統設計等等
通常系統設計是需要經驗培養的,感謝現在開源資源豐富,讓我們可以在遇到案例前先參考別人做過的解決方案,後面會統整推薦的資源。
上次轉職|軟體工程師|從裡面看的風景分享過,從只會寫SQL的工程師換到Backend工程師、再到全端工程師的心境變化。
花了三四年時間,對於軟體工程師領域更熟悉後,開始體會到”演算法”跟”資料結構”和”系統設計”的重要性。
差別在於,做出能用的功能以外,能不能對於功能評估、效能、壓力測試、符不符合整個系統的設計邏輯等等。
如何知道自己該加強什麼
其實軟體工程師產業是一個需要不斷學習的領域,但要學的東西太多了,需要先精簡後,逐步推進。
自己的情況是,因為User有反應使用效能的問題後,開始檢視自己有什麼地方能做得更好?列了以下幾點:
- 在動手coding前,需要針對功能先做評估,不是所有需求都照單全收。
- 對於演算法和系統設計的熟悉程度不足,在優化需求時無法提供太多解決方案。
- 會把功能或者Bug想得太複雜,導致程式碼也寫得太複雜。
做了哪些行動
以上問題的主因,大多是因為技能累積不足,所以對自己信心不足。意識到這樣的情況後,就開始動起來(?)
- LeetCode刷題
- 刷題時,遇到沒看過的演算法要先做功課跟筆記。(很重要!)
- 開始學System Design
- 有自信的詢問需求,針對不合理的部分提出想法。
- 不懂的就問,沒有問題是笨問題。(被當作笨問題就算了,不要問第二次就好,切記。)
發生了什麼改變
- 在寫Backend功能時,完全有感受到演算法的好。腦中會出現很多不同的解決方案,想法也會變得比較彈性。
- 當技能有提升時,在工作上的自信心也會增加,在開發時也比較不會想得太複雜。
覺得跟閱讀有點像,當累積夠多樣本後就能更快的google問題,但前提是有先把這些關鍵字輸入到腦中。
結論
對於後端工程師這個職務來說,雖然不刷題也可以應付工作上的需求,但刷題後一定會感到工作效能提升、程式效能提升等等,屬於越學越輕鬆的技能。
推薦的學習資源
- LeetCode刷題: NeetCode的Roadmap (根據不同演算做分類)
- System Design: ByteByteGo的system-design-101Public
- 線上課程:Coursera、Udemy等等
初學者可以先上線上課程,進階者可以選擇Youtube上的各種教學。
推薦筆記軟體
- Heptabase
可以用Map也可以用Tag, 但自己比較習慣用Tag紀錄。
時間也是很寶貴的,努力錯方向沒關係,因為所有的過程都會是累積。但是時間久了會有挫折的感覺,可能有些人也會因此放棄。
希望自己的經驗分享,也可以幫助更多想轉職又迷惘的人。
如果針對軟體工程師需要的能力有其他想法的人,也歡迎一起交流📮
文由 y 授權轉載, 原文:《轉職|軟體工程師|一定要刷題嗎》
___________
你也有經驗想分享嗎?快來投稿賺稿費吧!
瀏覽 1,097 次