好久沒有寫博客了,可能前兩年忙着做別的事情了,跳槽,學習,工作,最近工作還好,有時間寫寫最近兩年的一些技術積累和自我認識。
從剛畢業的乳臭未乾的糞青,變成了現在一箇中年職場老員工,其實也就工作了六年多,但是收穫還是頗多的,最近從小公司,到中型公司,在到兩位馬老師的公司。從做寫遊戲邏輯到後臺服務搭建,核心底層代碼修改,線上維護,到後來做分佈式機器學習,搜索,現在在搞大數據平臺。整個過程經歷了很多,也遇到了很多人,其實主要有倆個公司老大對自己影響很大,一個是完美的,一個是阿里巴巴的,前者不僅教會了最近如何學習,思考問題,解決問題。後者教會了自己如何創新,走在業內前沿,現在想來也可能和倆個人的學歷有關,畢竟後者是個北大博士。
整個程序的發展歷程就和internet發展歷程及其相似,主要說一下技術點,主要有以下幾個方面:
後臺服務期開發:
1 網絡
常見的tcp,udp,http/https協議簡單認識,包括抓包和底層一些原理實現。
2 數據庫
常見的mysql,nosql,ttserver,redis等,還有分佈式數據庫等
3 linux一些調試和代碼性能分析工具
包括一些常用工具,gdb,ps,strace,ltop,top,lstrace,perf top,mpstate,iostat等
4 語言層面
主要是c/c++/java 一些需要編譯的語言,裏面主要有一些語法特性,包括模版,反射,c++11特性
腳本層語言python/lua,主要有很強的依賴庫,基於虛擬機的腳本機制,以及底層調用框架的理解。
5 併發行
多線程,多進程,協程,鎖,條件變量,還有各種池
機器學習:
1 數學功底強,
2 單機版機器學習,可以用c++實現複雜的數學公司
3 分佈式機器學習,不僅要對算法有深刻的理解,還要對分佈式框架有深刻的認識,兩者才能很好的結合。(難度係數2.0)
從上面發現,這些都是很基礎的,其實還有其他很多設計模式,語法糖等,從其中裏面往下走都會是一個很窄的區域,很深,並且業內沒有幾個人能做到通喫,基本能做到,我知道的,基本現在不是vp就是總監以上了,寫過的框架代碼,也不知道被多少人膜拜過和分析過無數次,甚至已經超越了作者本身的認識。
感覺程序員越來越像生活中開面館的人一樣,你如果在某一個技術點發力,需要要有工匠精神,多年來做一件事,而不是這個做倆天換一個,最後會發現自己什麼都平平,如果做上leader那另當別論。