淺談——程式設計師的自我革命
在程式設計師這條道路上走過了十一年,即將迎來第十二個年頭。之後是否是一個新的輪迴?十一年前,從高校畢業後去哪裡是當時首要考慮的問題。早在大二第二學期時就沒有了要考研的打算,經常翹課回到宿舍鼓搗各種計算機軟體,還記得當時最感興趣的就是3DsMax和Flash了。這兩款軟體在那時風靡全球,當我第一次看到絢麗的動畫效果,就被深深的吸引以至於“荒廢”學業。在邁出象牙塔的時候,希望可以在動畫領域有所發展。
當時雖然已經有了網際網路,但能提供的資訊與現在相比還是很少的。那一年的阿里、騰訊還沒有發展到如今的體量,也沒有聽說過XX公司校招的訊息。家鄉的城市裡沒有動畫領域的公司,也就沒有了相應的人才需求,幾經輾轉“落草”成為一名室內效果圖設計師。雖然沒有找到最渴望的工作,這份工作倒也可以讓我繼續接觸3DsMax並學習各種渲染器的使用,於是走上了一條成為動畫設計師的“曲線”道路。在這家公司,我拿到了人生中的第一份工資——500¥。小公司沒有社保,也沒有公積金,這幾張“毛爺爺”便是全部(與後來的很多同事聊天,第一份工資沒有找到比我慘的)。由於本人並非“美術”相關專業出身,很快老闆要求我自費學習相關知識(必須要報培訓班),否則就得“淨身”出戶。這些培訓班一般需要1~2萬的費用,對於已經踏入社會的我是沒有那麼多錢的。想想父母供我上大學,已經傾其所有,怎麼可以跟家裡再次
進退兩難的我,陷入了深深的憂慮!
那一年,有幾個同班同學都被中國電信下屬的一家IT公司,在當時也是省內最好的軟體公司錄用了。迫於經濟問題,我放棄了那份設計工作,在這家IT公司的官方網站,投遞了簡歷。然而在等待了一週之後,也沒有接到任何電話。我找到那家公司,然後又走到人力資源辦公室,來了一場“毛遂自薦”(現在對於怎麼突破保安,進到公司內部的事情記不太清楚了)。經過三個專案經理的面試,我進入了IT!
如今的我早已是一名“合格”的“北漂”,凡是符合“北漂”的屬性,我都具有。這些年工作過好幾家公司,從最小不足10人的連“創業”公司都談不上的小公司,到國內一線或二線的網際網路公司。這些年認識了許許多多來自五湖四海的兄弟姐妹們,其中既有中國第一代的IT長者,也有與我同齡的哥們,還有如今我身邊越來越多的小弟弟、小妹妹們。早年間的很多同事,好多都已經回到自己的家鄉發展,一部分依然將自己固定在北京,還有少數人則換了一個城市發展。
這些年一直在IT領域,但在業務方面則接觸了很多其他行業的內容,例如:化工、石油、金融、視訊、零售、旅遊等。化工、石油方面的業務基本都是早期做傳統軟體時接觸的,其他幾個行業則是在網際網路公司所涉獵的。
就我個人而言,在2007至2010年一直在傳統軟體行業工作。在這段時間內,Java方向的畢業生一開始學習和接觸的便是J2EE、Spring、Struts1.0、Struts2.0、Hibernate;前端工程師則會接觸jQuery、Dwr、Prototype、Extjs等js庫;傳統軟體更偏愛於商業資料庫,如DB2、Oracle、SqlServer等,小專案才會用到MySQL。這些技術從開始學習到入門,一般半年足矣熟練。這期間雖然積累了一些工作經驗,但是由於認識上和對未來預期的不足,好多經驗都沒有沉澱(比如整理文件、寫部落格),導致後來偶爾要用到前面的技術時,很多內容還得百度。這一點希望剛開始工作的工程師們,以我為戒!
那時候整天感覺技術已經學得差不多了,而且覺得這些技術即便是初中生學習也花不了太多時間,於是一度對技術失去了最初的那般熱情!可是,外界的變化是不以主觀所影響的!
隨著電腦的普及、居民消費習慣的轉變,迎來了中國網際網路的浪潮。越來越多的創業公司投身於網際網路,一些傳統軟體公司也發生了向網際網路公司的自我革命。投資人帶著大把的RMB投入了看似星光熠熠的網際網路天空,IT人才也面臨著巨大的缺口。一大批IT工程師被這股浪潮從傳統軟體推向網際網路的彼岸,我也是其中的一員。整個過程究竟持續了多久,我不知道,反正是被海浪推著。跟剛畢業時的感覺有些類似,此時也感到迷茫,但並不驚慌。
由於網際網路的特點,以前的一些技術似乎成為了雞肋。很多公司對IT崗位進行了更細粒度的劃分,例如網頁前端、IOS前端、Android前端等前端職位。一時間,前端人才成為了IT工程師中的香餑餑。對於後端開發人員,則開始向網際網路思維、高併發、網站架構等方向發展。這個階段的多次面試,讓我遭受了滑鐵盧般的打擊。關於資料庫和web服務高併發的知識,一時間成為我最大的短板。後來將面試遇到的問題記錄下來,通過不斷地學習和研究才把這一塊內容補充得看起來不太短。
這些年,一些技術的應用出現了明顯的下滑。例如:Symbian、Flash等,導致很多工程師一時間手足無措。自己此前積累的很多AS、Flex及Flash相關的經驗,似乎瞬間蒸發了,不會有公司感興趣於這些技術。那一刻,我甚至希望有人還能考考我這方面的面試題;那一刻,我對於自己所熟知的其他技術,也開始有了擔憂。我自己需要一次自我革命!
我的這次職業革命,起源於在某BAT的經歷。當時主要做大資料平臺相關的工作,雖然已經接觸到一些大資料的東西,但都僅僅是對API的呼叫或封裝。“大資料平臺工程師”這樣的頭銜之下,卻依然使用著軟體或網際網路開發使用的技術,這讓我不是很滿意!隨著與和仲的溝通交流,自己一方面彌補Hadoop相關的知識,一方面鑽研Spark的底層實現。經過一年多的準備,我認為應該可以找一份更接近大資料的工作了。事與願違,很多公司一拿到我的簡歷,看了之前的工作經驗後基本還是讓我做網際網路方面的工作。期間還專門找到美團大資料部門的一些領導,給我的回話是暫時沒有這方面的“坑”!
沒有想到即便是在行業內部“轉行”,也有這麼大的阻力和芥蒂!經過不斷地努力,我在某二線網際網路公司擔任了大資料平臺架構師的工作。這份工作讓我對大資料如何服務於社會和人群,有了更多思考。大資料技術如果不能和社會需求相結合,那麼它就只能是一個技術。為了能夠將業務部門產生的資料利用起來,通過ETL、統計、演算法分析後,給業務部門的決策能夠起到更多的支撐作用。大資料的技術有很多,如果將這些技術通過平臺化的手段凝聚成一股更大的力量,那麼大資料才算是“大資料”。在工作的過程中,我時常感到自己作為“大資料”架構師是不稱職的,大多數技術都馬馬虎虎,我需要一種來自更底層的力量支撐。現如今,我在在360負責Spark的運維、優化、功能擴充套件方面的工作。每天的主要工作包括系統運維、效能調優、原始碼分析、功能改進,對Spark陸續進行優化、擴充套件。
以上只是簡單介紹了,我的一些工作經歷!但是從中反映了兩個現象——“被動革命”與“自我革命”。所謂被動革命,有點像《白鹿原》中的黑娃或是《紅高粱家族》中的餘佔鰲。主動革命則是鹿兆鵬或張俊傑。我在剛畢業時的職業選擇和走上網際網路開發的經歷,其實都是被動的過程。被動的時候,人往往會比較迷茫!為什麼會迷茫?因為沒有主動思考。這種思考既包括技術方面的,也包括對於人生規劃的。被動革命的過程中,往往伴隨著工資較低、技術不達標、準備不充分的特點。而自我革命是經過充分思考後,在技術和發展方向上做好了準備的,一般不會出現技術不達標的情況,也會有更高的報酬。
人的自我革命和人類社會的自我革命有著相類似的地方,解放更多的生產力,代表著你有更強的能力去解決問題。我並沒有充足的論據去論證自我革命的重要性,僅限於我的個人經歷,希望能對大家有幫助!
我現在的工作雖然也很辛勞,但是每天都在研究不同的東西。不會像web開發一樣,每天都是業務、CRUD這些幹多了就會感到枯燥乏味。這也屬於自我革命的一種收穫吧!
關於《Spark核心設計的藝術 架構設計與實現》
經過近一年的準備,基於Spark2.1.0版本的《Spark核心設計的藝術 架構設計與實現》一書現已出版發行,圖書如圖:
紙質版售賣連結如下: