如果說學習前端需要什麼工作技能,這個可以搜尋「frontend roadmap」,會有很多人整理出來的學習路線圖,這邊我們就不再贅述, 比較推薦的是這個網站:https://roadmap.sh/frontend(opens in a new tab),裡面有很多學習資源,可以依照自己的需求來學習。
如同在分享中提到的,想成為廚師,不僅僅會把食材煮熟,還要會切菜、調味、裝盤,甚至是擺盤,這些都是廚師的工作,而不是只會煮食材就可以了。
同理,我們如果先成為現代化有產力的軟體工程師,也需要學習很多工作技能,而不是只會寫程式就可以了。
1. 認識開發環境
一般上,軟體開發者都會使用一個編輯器,來寫程式碼,像是 vscode、sublime、atom、vim、emacs 等等,這些編輯器都有自己的特色,像是 vim 和 emacs 都是使用鍵盤來操作,而 vscode、sublime、atom 都是使用滑鼠來操作,所以我們可以依照自己的喜好來選擇編輯器。
vscode 根據pypl(opens in a new tab)的數據統計,是最受歡迎的 IDE,所以我們就以 vscode 為例,來認識開發環境。
這個編輯器免費且開源,可以在這裡(opens in a new tab)下載,安裝後,可以在左邊的側邊欄看到一些功能,像是檔案總管、搜尋、Git 版本控制、除錯、擴充功能等等。 且有非常多的擴充功能可以使用,像是可以安裝 Python、JavaScript、HTML、CSS、Markdown 等等的擴充功能,讓我們可以在 vscode 中開發這些語言。
學習 vscode
以下是 vscode 的學習資源:
- vscode 官方 youtube 頻道:vscode day 2023(opens in a new tab)
- 100 秒了解 vscode:youtube(opens in a new tab)
- 各種不同的 theme 和 icon:vscode themes(opens in a new tab)
依據你的個人喜好,設定好 vscode 的 theme 和 icon,可以讓你在開發時,更加舒適。
2. 學習程式語言
在這個步驟呢,就是大部分人會開始學習的時候,市面上那麼多的程式語言,我們該如何選擇呢?
前端工程師必備的語言有:
- JavaScript: 這是一個非常熱門的語言,可以在瀏覽器中執行,也可以在伺服器端執行,甚至是在手機上執行,而且有非常多的框架和套件可以使用,像是 React、Vue、Angular、Express、Next.js、Nuxt.js、Electron 等等,所以學習 JavaScript 是一個不錯的選擇。
- HTML: HTML 是一個標記語言,可以用來描述網頁的結構。
- CSS: CSS 是一個樣式語言,可以用來描述網頁的樣式。
- TypeScript: TypeScript 是 JavaScript 的超集合,可以在 JavaScript 的基礎上,加上型別系統,讓我們在開發時,更加的安全。
其他工作上會用到的語言:
- JSON: JSON 是一個資料格式,可以用來儲存資料。
- YAML: YAML 是一個資料格式,可以用來儲存資料。
- SQL: SQL 是一個資料庫語言,可以用來操作資料庫。
- Markdown: Markdown 是一個輕量級的標記語言,可以用來撰寫文件,像是 README.md、blog.md 等等。
3. 學習 Git 版本控制 和工具
Git 是工程師必備的工具,可以幫我們管理程式碼,並且可以和其他人一起協作,所以我們必須學習 Git 版本控制,而以下是一些學習資源:
學習 Git
- 推 EN egghead 免費課程: 影片(opens in a new tab)
- 推 EN Git 快速上手 Fireship版 影片(opens in a new tab)
- EN Git and GitHub for Beginners: 影片(opens in a new tab)
- EN Git and GitHub Crash Course: 影片
4. 學習框架和用套件執行專案
非必要性
或許這跟一些軟體工程師的經驗有些不同,但是我認為,學習框架和套件,是非必要的,因為框架和套件都是為了解決問題而生的,所以我們可以先學習問題,再學習解決問題的方法。
也有一些軟體工程師主張一切自主,大部分情況下,他們都相信自己的技術,所以他們不會使用框架和套件。
這兩者都是可以的,但如果你的學習目的是為了找工作,那麼學習框架和套件是必要的,因為現在的公司,大部分都是使用框架和套件來開發,所以我們必須學習框架和套件,才能找到工作。
framework & library
框架可以想像成工程師的工具箱,裡面有很多工具,可以幫我們解決問題,這些工具都是由多位工程師協作開發,或者經過來回多次的修正 和集思廣益下的最佳實踐,就算最後你覺得不採用使用任何框架,但你也可以從學習框架的過程中,參考到很多的實踐方法,這些實踐方法,可以幫助你更加的了解如何開發軟體。
5. 專精於某個領域和分享
我不認為工作時間長,就能算是資深,反而是對於某種領域有深入的了解,才能算是資深,所以我們可以專精於某個領域,像是前端工程師可以專精於 React、Vue、Next.js、Nuxt.js、Electron 等等,這樣才能在工作上有更好的表現。
而專精,又是怎麼表現呢?是否能隨時背誦各種 API,或者是能夠解決各種問題,這些都是可以的,但是我認為,專精的表現,是能夠在某個領域,能夠解決各種問題,並且能夠分享給其他人,這樣才能算是專精。
能將知識內化,並且能夠分享給其他人,在某種程度上,也是強迫自己整理和梳理知識,這樣才能更加的了解知識,將它應用在各種現實問題中。
6. 回報和實戰
軟體工程師的薪資平均在台灣約 50 萬 台幣起,低於 50 萬台幣的建議可以多看看。
而軟體工程師的薪水天花板到哪裡呢?這個目前我找不到公開數據,但就以我個人的經驗來說,軟體工程師的薪水天花板,是沒有上限的,只要你有能力,就可以拿到很高的薪水,大部分我認識的軟體工程師,薪水都在 100 萬台幣以上。
資深的軟體工程師,可以在 200 萬台幣以上,外商可以 300 萬台幣以上,這些都是有可能的。
由於這個網站的編輯方式不適合這類長篇文章,想了解完成版本請看我的官網