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


※與「輪式機器人」談談戀愛 聊聊人生
※開始學習Linux的一些建議
※互聯網反腐大劇《用戶的名義》即將上映
※你必須收藏的Github技巧
※Sublime Text和Visual Studio Code和Atom性能測試
TAG:程序猿 |