html / javascript / css,這些都是前端需要學的, 再加上一大堆前端架構 Angular, React, Vue, 總得學會一樣。
學完了框架才能做項目,找工作, 才有可能開始光榮的增刪該查之旅。
但這還遠遠不夠, 前面說的這些知識只能算是入門。
資料結構和演算法必須得學, 要不然你寫的程式碼永遠沒有隔壁的張大胖寫的好,同樣的需求,人家的程式碼賞心悅目, 你的凌亂不堪, 被領導批得體無完膚。
所以《演算法》,《大話資料結構》,《圖解資料結構》,《演算法導論》...... 統統都來吧, 數組、堆疊、佇列、二元樹、圖、排序、搜索保證不把你淹沒。
平常和大家聊天,一定得能說出幾種常見的設計模式,尤其是單例模式的幾種寫法,要不然出門都不好意思給人打招呼。
一直做一個被分配任務的初級碼農肯定是不行的, 所以物件導向的分析和設計必須學習, 要不然將領導給你委以重任, 讓你做分析設計, 你怎麼去劃分模組和服務,怎麼去設計介面? 依據什麼原則和指導方針?
軟體的開發流程及最佳實務也快變成碼農必備了, 敏捷開發, DevOps, 單元測試,持續繼承,TDD, 結對程式設計...... , 必須跟上趟。
身為程式設計師的自我修養,電腦的基礎知識也是必備。
計算機的組成原理,馮諾依曼結構必須得了解,要不然整天寫程序, 都不知道計算機是怎麼工作的, 被人家笑話; 如果想深入一下, 數字電路,彙編也需要略知一二, 因為在某個陰暗的犄角旮旯總會有彙編在等著你。
資料庫得學, 基本的 SQL, 表的設計都得會,範式、鎖定、隔離等級讓人頭大。
深入一點的還牽涉到調優, 在架構層面還要了解分庫、分錶、備份、讀寫分離。
光關聯式資料庫還不夠, NoSQL 在網路時代很流行,工作上很有可能用到, 不會不行。快取也跑不掉,memcached, redis 已經是工作上的必備了。
現在不連網的程式幾乎都要絕跡了, 所以電腦網路得學, 至少得理解 http, https, socket, tcp 是怎麼運作的, 由 https 是怎麼回事。
安全其實是個大主題,像什麼 XSS,CSRF,SQL 注入...應該成為 Web 程式設計必須要考慮的事情。
作業系統也得學,這樣才能理解進程/線程,還有他們之間的通訊和同步, 以及同步/非同步,阻塞/非阻塞,select/epoll 等聽起來很時髦的詞彙。 虛擬記憶體和檔案系統,總得明白一個大概。 此外,Linux 的基本指令怎麼著也得能敲出來一些, 如果能使用 vi 就更好了。
深入理解 Java 虛擬機啊, 搞不懂虛擬機是怎麼運作的,系統中有些問題你還真搞不定。
還有 Tomcat, Ngnix .... 都不是一時半會兒就研究透的。
你可能還會聽人家說:離散數學很重要, 是電腦學科的基礎!那就去看看吧, 除了布林運算之外, 其餘的什麼等價關係、偏序、命題演算、謂詞演算、群、格....徹底把人搞暈。
這些基礎沒還搞定,什麼雲端運算、大數據、微服務、容器又開始鼓譟起來了, 你不想了解? 難道不怕落伍?
碼農就是這麼“牛”,被各種新技術趕著不斷向前, 但是反過來看, 要是對軟體程式設計有興趣, 那簡直是太幸福了, 新玩具不斷出現,玩都玩不過來。 所以想在這個充滿挑戰的產業裡一直維持就競爭力, 那就要持續的學習。