1. 程式人生 > >4 年阿里前端,2 年 CTO,一個程式設計師六年的奮鬥史

4 年阿里前端,2 年 CTO,一個程式設計師六年的奮鬥史

這是一篇準雞湯文,謹獻給工作 0 ~ 3 年的前端工程師,內容都是我的親身經歷,不精彩但接地氣。
2010 年畢業於一所普通 211 大學,電氣學院自動化專業,瞭解這個專業的大概知道自動化是弱電方向,就業高不成低不就,不讀研僅靠本科的技術積累很難進入好單位,而我又是那種一進大學就迷失自我的 “逃課生”,四年逃課掛科無數,不僅荒廢了專業,也虛度了青春,彼時年少而又輕狂,驕傲卻不知路在何方,唯一的收穫是大一便早早的搞定了老婆,戀愛 8 年後領了證,認識到現在已經整整 10 年,所以說碼農戀愛要趁早啊。
以上是典型的屌絲工科男背景介紹......
如下的一切,都源自畢業實習到了杭州鋼鐵集團,說是實習其實是見習,帶著安全帽到各個生產線上看看鋼材生產流程做個筆記,僅此而已。初到杭州,得知我有一個學霸級的高中女同學在杭州淘寶的廣告部門實習,就在實習間隙登門拜訪,學習求經。

入行以前

貴人點撥改換行業

見到高中女同學的同時,也結識了她學霸級的男朋友,跟她都同在淘寶,是一名資深的 Java 工程師,他倆知道我對網際網路很感興趣後,便向我口述了淘寶種種開放的職場氛圍,有趣的江湖文化,每天發生的每一個故事都深深打動了我,激發起了我對於網際網路的興趣和想要進入淘寶的動力,後面兩位開始給我出謀劃策,鼓勵我從事程式設計方向,比如 Java 程式設計,可以從自學開始。其實,早在 2009 年,就有朋友建議我從事前端開發方向,並且幫我選了月影的《Javascript 王者歸來》這本大厚書,但是因為不夠了解加上沒有興趣支撐,一直放角落裡風乾積灰,直到如今我也沒看完。


初學 Java 程式設計 

當時對於 HTML,CSS,Javascript,我其實一無所知,於是決定學習 Java,6 月份畢業後在杭州租了個小房間,每天啃杭州圖書館的 Java 書籍,同時在網上看馬士兵老師的 Java 視訊教程,陸續跟下來一個小聊天室和仿 QQ 通訊的小軟體,但也只是照葫蘆畫瓢,並沒有吃透技術點,心急如焚!加上這兩個月窘迫到口袋裡只剩下幾十塊錢,開始每天只吃一頓掛麵,也是在這個時期留下了胃潰瘍等一堆胃病,快撐不下去了,找工作就勢在必行了。
             6a40e2a6133303464aac03f35272854e62df25ae
                                                                        拖了很久去做的胃鏡 

尋找 Java 崗工作 

從 8 月中旬開始逼自己投簡歷找 Java 工程師的工作,面過的 2 家公司都發了 offer,但薪資都是 1500,不僅是學徒工,更要籤 4 年合同且不許毀約,想想有些後怕就跑去找之前提到的學霸女同學求建議,她男朋友建議我可以先考慮試試前端這個崗位,上手快並且我活潑的性格更適合設計相關的工作,回頭想想,人生有時候不僅需要運氣,更需要貴人點撥,於是當天下午回到住處便開始了為期 2 周的廢寢忘食背書模式。 

放棄 Java 投奔前端 
所謂背書模式,其實就是把能搜到的前端知識都手抄到紙上,然後開始背誦,一天到晚腦海中不停的像放電影一樣,熟記塊狀元素和行內元素的區別、絕對定位和相對定位的區別、jQuery 二級下拉選單的 Javascript 外掛程式碼實現。。。甚至背下了DOCTYPE、幾種文件宣告的寫法,陳年小抄中,還能隱約看到 垂直居中幾個字: 
             ad657964f207322755e73d84796e727c12177028
如果說前面的兩個月是信心百倍,有的放矢的充電 Java,那麼這兩週就是完全是飢不擇食,慌不擇路的學習前端,在快要被房東趕出去的時候,再次逼自己開始又一輪的找工作。 

面試上崗

面試前端崗位 
精心準備了什麼都精通的簡歷,也是第一份前端簡歷,投給了口碑網(淘寶當時內部新成立的專案)來練手,結果面試官電話裡第一個問題就把我問懵逼了: 你知道 IE6 的雙邊距怎麼解決麼? 
我嘞個大擦!這是什麼鬼?!我聽都沒聽過!!! 
此時的我,根本不瞭解原來瀏覽器竟然有相容性問題!也根本不知道前端開發是需要對 IE6 的樣式和行為寫 Hack 指令碼進行相容的(包括 IE7 和 IE8)! 
再往後面又問到不同文件型別下的盒模型...,我就像是一個傻子一樣,在電話這頭大氣都不敢出一個,真心想找地縫兒鑽進去,氣氛尷尬的要死。 面試官看出我啥也不會,便心平氣和的給我普及了一下前端開發需要關注的知識點,不出意外的禮貌拒絕了我。

掉頭重新學習前端 
那次面試之後,我的信心受到了巨大打擊,也發現了自己和一個哪怕是及格的前端開發工程師,相差的距離是如此的遙遠,夢想看著就在眼前,而你臂展不夠,各種不好的心理暗示開始浮上心頭:
  • 淘寶肯定進不去了......
  • 杭州我白來一趟了......
  • 工作肯定找不到了......
  • 爸媽沒法騙下去了......
此時已是 9 月出頭,我親愛的同學們都已經轉正上崗,而我還在原地踟躕。我只能安慰自己:你是 0 程式設計基礎的新人(大學計算機都是掛的,對於掛計算機課還是略後悔的),不要拿自己和別人比較,這個階段是正常的,挺過去就好了!
於是我努力回憶面試官的問題,重點突擊 IE 相容性問題,辦法依然是背,感謝上蒼賦予了我強大的臨時抱佛腳能力,從小學到大學,都是以臨考突擊的方式應對,短期記憶量可以很大,但說忘就忘的一乾二淨,幸好有面試官的耐心提點,我才有的放矢,後來面試官我們私底下成為了很好的朋友。這一次背書只經歷了 3 天 3 夜,對的,不眠不休的記憶,我便又開始新一輪的求職經歷。

第三次求職面試
這一次花了一下午做簡歷,只投給了兩家小公司,其中一家 HR 效率極高,幾個小時候後便電話聯絡面試。去了後做了一套筆試卷子,我就和公司老總在辦公室聊起來了,沒想到越聊越嗨,為什麼呢,因為我倆聊的是足球,我大學一直是院隊主力左後衛,踢了四年校聯賽,於是跟這個老總在足球這個話題上開始投機。 
有時人生真是捉摸不定的曲折離奇啊,第二天中午我便拿到了這家公司的 offer,但 offer 的內容是: 把你外派到淘寶當外包,你願意不願意?工資會比較低。 
當下才知道這家公司是外包公司,思前想後,決定還是接受這個 offer,即便薪資低的可憐,勉強夠交房租。 
不過這只是第一關,還需要到淘寶去參加第二輪面試,被淘寶面試選中才能最終獲得外派資格,於是屁顛屁顛跑到華星科技面試,開始依然是做了一套筆試題,面試官看完我答的卷子後是這樣跟我講的: 果然是剛畢業的學生,卷子填的滿滿的,但是題目全部做錯了,又問了我 apply 和 call 的區別,我自然是不會的,甚至連上下文都搞不清楚是啥意思,只知道它倆傳參的區別,於是面試官問我其他方面的,比如為啥從事這個職業之類的,我拼盡全力聲情並茂講述我的求職渴望,這也是我唯一可以講的東西了。
走出華星科技大廈,心情是灰色的,感覺就要和淘寶真正的 say byebye 了,背的知識點遇到資深的面試官隨便一挖,我便原形畢露偽裝失敗,越想越傷心,此時竟然雷聲大作瓢潑大雨沒頭沒腦嘩啦啦的下起來了,我把檔案塑料袋頂在頭上,默默的往家走,躲雨的心情都沒有,腦海中一片空白,雨越下越大,迷住了前面的道路,迷住了我的視線... 

雨過天晴 

人生是如此的曲折離奇,第二天便接到通知,淘寶竟然要我了!於是跑到外包公司簽了就業合同便去淘寶報道了,此時是 2010 年 9 月 6 號,到了淘寶才意外發現,我竟然跟之前的學霸女同學在同一個大部門 - 淘寶廣告事業部,人生處處是驚喜,一言不合就相遇。
自此我開始了 4 年的前端工程師之旅。 
自知才疏學淺,我進入部門後,也是儘量的謙虛做人,不懂就問,跟同事好好相處,同事幫我解決了一個問題,我就基於這個問題,晚上到家後,根據他的解決思路,把所有相關的知識點,全部在百度搜一遍(那時候還不會科學上網),如此堅持了一年,這第一年技術也成長迅速,在外包公司的工程師隊伍裡已經是走在最前列了,那麼外包公司也是給出較大幅度的漲薪,但是跟阿里正式的前端工程師待遇依然不可同日而語,畢竟是外包,要賺你的人頭費,不過之後沒多久淘寶覺得我已經完全達到正式工程師的水準了,便賠了外包公司一筆錢(這個我沒考證,是聽外包同事說的),於是我就歡天喜地的轉正成為淘寶正式員工,但和外包公司老總依然成為了很好的朋友,同時也組建了這家公司成立以來的第一支球隊,作為隊長我帶領外包公司的球隊在杭州城參加各種比賽,雖然勝負參半也沒拿到太好的成績,但是跟這一波外包公司的隊員一起風吹日晒, 建立了珍貴的革命友情,後來隨著轉正淘寶正式員工並且加入了淘寶的球隊之後,跟老球隊一起踢球的次數越來越少了... 

職業生涯

4 年阿里前端生涯
鋪墊了那麼多轉行求職歷程,其實只是為了說明,我是非常普通的一個人,跟所有的求職者經歷不同但起點類似,有提心吊膽,有驚喜連連,有彷徨失落,有堅決果敢...,但選擇了前端開發,無論它是不是不歸路,都是我自認為的一條很適合自己的路,認識到這一點,就要鐵了心走下去。
在阿里的四年,最大的收穫是見識到了什麼是大牛。在公眾視野中不少活躍的各種圈內牛人紅人(包括我自己,有些新人認為我很牛),接觸下來其實根本比不上大公司裡那些低調做事的大牛,他們做人做事,對自己的定位、要求和產出,總是能讓我意識到自己的種種不足——不夠謙虛不夠努力。如果說這是榜樣的力量,ok,那我承認與優秀的人共事總是十分難忘的經歷,而我自己作為一個普通的工程師,自認夠努力,但還遠不夠優秀,也許是天分不足,也許是塵世擾心,我的職業瓶頸還是早早出現,而要邁過去需要更長時間。
在工作 2 年左右,我發現自己在技術深度上很難有專業造詣的時候,我開始把眼光放的更長遠,我不再把自己僅僅定位成一個前端工程師,而是會開始關心網際網路的發展趨勢與整體格局,關心產品從 0 到 1 誕生過程中的盈利模式,關心在產品迭代中工程師與運營多方參與的角度和結合的效率,關心工作流程和團隊文化,這一切其實都是我潛意識不自覺的關注,是一種不安分,過後很久才逐漸意識到自己早就在默默鋪路,有時候一個選擇早就做了,只是你還未意識到。
那麼對於技術這個領域,我也開始去關注更多非前端的生態,從 Linux 生產環境配置部署到域名解析,到軟文策略和 SEO 推廣,從移動端、 PC 端的前端分離和架構,去折騰 PHP 的 Wordpress,Codeigniter...,折騰 Ruby on Rails,直到接觸到 Nodejs,嘗試藉助 Nodejs 拉上 Mongodb 做資料介面,和模板輸出的工作,從資料庫的安裝到主從災備,不求精通只求通,下班的無數的晚上和週末,在螢幕前消耗青春,通過亂七八糟的折騰這一系列有的沒的。
我逐漸意識到自己可以創造的價值不再是僅僅前端頁面的輸出,這個價值不單單是指可以一己之力搭建一個完整的網站,而是有了前後的動手經驗,能從更高的一個層次上去把握一個專案以什麼樣的形式去設計,以什麼樣的思路去迭代會更加的省時省力,這個省時省力其實能更好的促成產品,拿到商業目標,而有了這個意識,就能更好的配合產品經理實現他腦海中的想法,如果你認為是不切實際海闊天空的想法,沒關係,來小成本驗證一下,驗證之後說不定就真的是海闊天空,也是這種想法促使我業餘時間結交了許許多多的朋友,以兼職的方式參與了至少 3 個小創業專案,自己的技術面和技術深度也得到了很大的拓展。 

發掘自己的更大價值
當聚焦的點不再單單是前端開發的時候,我發現了更多的樂趣和更多的可能性,從前,我會花好幾天反覆測試一個廣告投放模板,對於裡面的一個模組載入器或者特效元件如何去設計才能最小化體積,減少展示延遲,最大化優化動畫流暢度,針對移動端的廣告投放用哪些效果相容性最好最省電這些細碎的點佔據著我工作的大部分時間,必須承認,解決這些技術點是很有成就感的,但是技術的革新速度實在太快了,昨天還在糾結的幾 K 大小帶來的網路延遲、程式碼執行效率帶來的效能消耗,今天突然在百兆寬頻甚至是 4G 大水管高規格硬體時代變得不那麼敏感了,昨天還是小心翼翼使用 radius 圓角圖片兩套並存的相容方案,今天 CSS3 屬性放開隨便用,這些當然是我們需要不斷更新的知識棧,但仔細想來,讓我花費數倍的時間去研究底層的優化細節,跟實現我的個人價值放到一起的時候,是不是最佳的途徑呢?很多類似的技術問題,我可能需要花費 2 天,而天分好的同事,只需要花費 1 天甚至更少,從這一點上,我越來越不認可自己的技術方向和優勢,於是我摘掉帶有職業界限的眼鏡去看待彼此的分工,帶著合作共贏的心態去接觸更多的領域,包括前面我提到的小創業團隊,他們都沒有能夠生存下來,有的是因為技術原因,而有的是因為資源問題,參與這些專案也給了我更多的感觸,讓我逐漸明白想要做好一件事情,是要先定位實現的程度也就是預期目標,這個不同時期的目標完全取決於不同時期的資源配置,平衡追求這個價效比才是做事的關鍵,說白了,就是知道什麼可為不可為,外加一些方法論。

創業萌芽

職業波動期 
在阿里工作的第 3 年節點上,我萌生了創業的想法,但並沒有機會也沒有膽量邁出這一步,並且就在這個第三年中,我在阿里迎來了職業生涯中最心曠神怡的幾個月,被分配到了技術非常優秀的主管,也開始參與更有挑戰性的專案,個人技術成長越來越快,無論是前端開發能力,還是後端開發能力,然而好光景持續了僅僅幾個月,便被分派去支援雙 11、雙 12 推廣會場。在阿里這種變化是常態,業務支援永遠是第一位的,因為客戶永遠是第一位的,所以抽調出來支援一個活動是很正常的,我起初也是很平靜的參與這個專案,然而這個活動的歷程卻充滿了心酸,耗盡了我的耐心。 
成長受阻,陷於無序的需求算是一個促使我做出離職創業的導火索吧,另外一個重要原因則是遵從內心的創業衝動,後文會寫到。
關於這個專案呢,原本是提前了 2 個月籌備這個活動,從後端資料到前端和運營,全部到位了,雖然前端在裡面扮演的角色很關鍵,但技術難度卻並不高,工作量也不大,就是把頁面過來時候帶的引數,按照規則梳理一下,發一些請求到後端,拿到加密值然後重新替換到頁面裡的所有 a 標籤 href 中,也就是刷頁面引數,然後把這套程式碼抽象成元件,整合到一個大系統裡面,根據不同的會場型別載入不同的刷參邏輯。

原本是 3 周做完的專案,用了整整 7 周的時間才最終落定下來,主要原因是產品經理更換了 3 個,需求方大 Boss 介入了好幾次,專案經理風險意識不夠導致工作不斷重做,解釋成本也因此居高不下。每一次聯調出問題,都先會把責任全部拋過來丟給前端,也就是我,然後每一次我都要反過來充當半個專案經理的角色,去 push 各個參與的團隊來配合我核查問題的來源,而每一次查出來後要麼是後端資料環境更改異常,要麼是資料引擎切換引發不相容,要麼是產品設計規則不全出現引數漏洞,總之就是專案負責人的不專業,加上團隊協作的成本高,導致參與的人都做的不開心,其實在這之前也參與過類似這樣的扯皮的延期專案,然而這一次對於我卻尤其難熬。

掙扎在白天黑夜邊緣 
在雙 11 專案遠沒開始的時候,我接觸到了一個創業專案,兼職賺外快補貼家用,平時的晚上和週末斷斷續續在做,大概到了 10 月份,這個專案準備去找融資,因此希望我在 10 ~ 12 月份能儘快把專案原型開發上線,我評估了一下剩餘的工作量,差不多需要 15 人日,同時算了一下時間,10 月份至少有 3 周的空閒週末,還不算晚上,再加上 11 月份甚至 12 月份的晚上和週末大概能有 20 多天的時間,時間簡直不能再充裕了,於是便也一口答應了下來。 
然而這個從雙 11 前就啟動,一直持續到雙 12 的公司專案,卻頻頻上線出問題,而每一次出問題,都需要前端工程師介入聯調,於是幾乎所有的週末全部都被公司徵用,不止如此,白天只能除錯,不能釋出,需要熬夜釋出,出問題後還要配合回滾,回滾後,還是不能走,要等測試工程師測試完,再重複以上過程,於是就有了連續的週末通宵,這個答應在 12 月份上線的創業專案,便擱淺了,畢竟公司事大,孰輕孰重我還是分的清楚。 
總算雙 12 上線一週後,我下班回到久違的家中,眼看要延誤掉這個創業專案的融資視窗,我想既然承諾了,無論如何都要拿下!於是,白天去公司工作,幸好是雙 12 之後,這個專案不再變動了,每天只需要配合調整策略引數就行,不需要投入大精力去開發。晚上回家以後,7 點開始寫程式碼趕這個創業專案,敲程式碼一口氣通宵到到第二天早上 6 點,洗漱一下出門到公司吃個早餐,然後在公司躺椅上睡到 9 點,起來洗把臉,衝上濃咖啡,配合這個雙 12 的 專案繼續做溝通啊,郵件通報啊,引數更正啊這些瑣碎的事情,中午吃過飯,又在躺椅上睡一個小時,下午跟進一些常規的部門工作,晚上回家後繼續寫程式碼,如此反覆,經歷了大概 12 天,期間至少有 2 次半夜敲著敲著程式碼就一頭栽在桌子上睡著了zzz。要預釋出創業專案的那個晚上,需要跑通釋出環境,我買了一箱的紅牛,一夜喝了 5 罐,凌晨 4 點,突然一陣恍惚,有一種靈魂出竅的感覺,手腳冰麻,說不出一句話,視力急速下降,那一刻,我想,我怕是要猝死了。 
在這種症狀持續的 2 分鐘時間裡,我心裡怕到了極點,想了許多許多,如果我猝死了,父母怎麼辦?外婆怎麼辦?我的事業怎麼辦?這個專案怎麼辦?我閉上雙眼,讓自己使勁喘氣,慢慢的回過神來,然後起來走動了一下,狠了狠心,繼續折騰釋出環境,差不多 7 點多,環境弄好後,就洗個臉到了公司。這一次到公司沒敢睡覺,擔心躺下了會徹底體力崩潰,就咬牙堅持了 1 天,晚上回家又熬夜大概到 2 點,成功釋出上線,整個心才真的像大石頭一樣放了下來,頓時睏倦無比,迷迷糊糊正打算去睡,突然又發現一個環境異常問題,趕緊屏住呼吸緊急除錯,這一次除錯的每一秒鐘我都記憶深刻,因為我需要把已經休眠的身體和意識拉回來,大概 5 分鐘左右重新修復上線,我給公司主管發了簡訊上午在家請假休息,就混沌沌的睡去了。

大概 2 周後,這個上線的創業專案拿到了 200 多萬的天使投資,這個就是促使我做出出來創業的重要原因吧,這也是我目前正在創業的專案。 

離職創業 
在大公司當一顆螺絲釘,其實我並沒什麼不爽,但當發現一些不好的兆頭或者流程大問題的時候,由於我人微言輕,再好的技術,或者說再好的工作態度都無法改善這個情況,我做了反饋但所有人都搖頭,我做了推動但所有人都表示無能為力,這種無力感越來越強,我發現除了被我抓在手中的這些前端技能和可憐的工資,我什麼也沒有,什麼也做不到,我開始懷疑人生,是堅持死磕到公司上市死磕到自己在公司和團隊有更好的能力和話語權,還是選擇離開。 
這時候已經是 2014 年春天,我重新開始考慮去向,這時候年前參與的創業專案投資到位了,我也基本瞭解了它的業務模式,可能是年前拼命趕專案那次太投入,導致我對它也有很深的感情,畢竟是自己一手寫出來的程式碼,是自己一手養大的孩子,這時候對方希望我以技術合夥人的身份加入,我最終想了想便答應了,其實還是有點衝動的,因為恰恰是那個時候是我在公司做專案最不爽的時候,在公司的無力感和在創業專案上的認同感成就感形成了鮮明的對比。 
Anyway,我是希望可以通過我的力量,證明一些或者是實現一些我的想法,我希望可以有一些事情是可以在我影響和控制範圍之內的,於是到了 6 月份,也就是阿里巴巴上市前夕,我遞交了辭職書,這次走的雖有留戀但是毫無遺憾。

創業狗的日常 
創業到今天,已經兩年多,走的並不輕鬆,而創業兩個字跟 CTO 一樣,都是聽起來真的很高大上,但是做的事情可能是灰突突的並無新意,唯一不同的時候,這是一條踩在我自己腳下的路,我走快一點就看到目標近一些,我走慢一些,就看到遠方模糊一些。 
創業有太多的不確定性,最大的不確定性就是能否兼顧好自己的身體和家庭,因為無論是時間投入還是資金回報,都是看公司狀況和市場反應,所以像 i5ting 這樣的 CTO 也要出書立作,也要有線上課堂,在拓寬人脈影響力和技術佈道修煉的同時,也可以賺點小錢貼補家用,沒錯,就是貼補家用,不要以為創業公司合夥人都是高富帥,白富美,其實我認識的不少也僅僅是夠花,甚至是窮屌絲,我也不例外,所以和慕課網合作講授自己的前端實戰經驗,以下是我 2015 年底業餘時間鼓搗的一個課程—— 《7天搞定 Nodejs 微信公眾號開發》 和 《貫穿全棧 React Native 開發 App》,後附章節圖,剛入行和剛入坑或者迷茫的新人可以參考我這個老人開發一個小專案的切入方向,開發功能所涉獵的角度,以及推進的方式是怎樣的,如果你資金尚且充足,對知識又充滿渴望,不妨看看這個視訊課程,支援下我這個所謂的創業狗 - 草根 CTO,這是個硬廣,對,說到硬廣,我這一年來招進來的員工,還真的的確是看過我慕課網 Nodejs 課程入門這個行業的,所以我還是很欣慰的,其他的一些 Nodejs 課程是 2 年前創業前後邊做專案邊錄製的,其實比較過時了,居然還可以幫助到入行的新人,我已經很滿足了。 

寫在後面的話 - 所謂 CTO 的稱謂

對外面我總是宣稱自己是這家創業公司的 CTO,而對朋友和同事,我總是希望大家把我當成一個普通的程式設計師看待。因為對外,可以樹立公司的形象和減小解釋成本,這個 CTO 的 title 有明顯的代入感,而對身邊朋友,包括對我自己來講其實它意義不大,我絲毫不認為有一頂 CTO 的帽子在頭上,技術就能牛逼幾分,身價就能增加幾分,相反,有這頂帽子在頭上,帶給我更多的是一種責任,而恰恰,我慢慢成為了一個有責任感爆棚的人。在技術方面,我始終不認為自己可以配上 CTO 這個稱謂,只不過對當下這個團隊這樣的業務規模,我尚可以完全 handle 住,但至於未來會怎樣,依然還是個未知數。 

後面我的文章,可以聊一聊我是怎麼學習 Nodejs,我是怎麼學習某些技術點,我是怎麼對待技術和創業的結合,我是怎麼看待畢業後 0 基礎,如何選型如何切入到前端這個行業,等等等等吧,大家不要寄希望,我是爛尾王,哈哈哈。技術路漫漫且修遠,吾將上下而求索,與各位共勉。