我的程式設計之路

林子er發表於2022-04-01

我,高分子材料與工程專業畢業——現在是個程式設計師。

十多年了,也該寫篇文章回顧下期間的得與失(雖然失多得少)——這就好比一個人拉了翔總要回頭看看,雖然多半臭不可聞,多少能給自己的健康指條明路。


懵懂的大學

我是 2004 年上的大學——快 20 年了,說起來自己都不敢相信。要是問我為啥選了高分子材料這麼個專業,那就是個笑話。當時盯著志願填報手冊上幾百個學校和專業,頭是大的,腦袋是空的。

高三(或者說整個高中)對於我們那代人來說全部的意義就是做題。沒人去思考自己未來要做什麼,想做什麼,做題就對了。所以當高考完了面對一堆專業時你能想象有多無助,沒人知道那些專業具體是幹嘛的,要學什麼,對不對自己的胃口(最主要是不知道自己想幹嘛)。

你可能會覺得奇怪,不懂不能百度嗎?那個時代,那山旮旯裡,高中讀完電腦都沒摸過,拿錘子去百度。

所以我當時做了個特別“明智”的選擇:既然都不懂,那就選個看起來高大上的。高分子材料與工程,聽起來不錯,還帶個“高”字,選它!

關於學校嘛,頂好的學校肯定沒戲,一般的學校還是有很多選擇滴(當時的分數也不算很低,但離 985、211 還是差一截),至於去哪裡,沒什麼概念。於是我又做了個“明智”的決定:既然山旮旯裡待夠了,那就去平原吧。要不北上?北國風光,又冰封又雪飄的,感覺不錯——就去黑龍江吧!

等我坐著四十多個小時的綠皮車(現在想起那味道就要嘔吐)來到哈爾濱時,有點傻眼。沒有南方的綠樹成蔭,只有整日的灰濛濛。北方整個冬日幾乎看不到太陽——切確地說是整個半年,國慶節就開始下雪,第二年掃墓時還嘎吱嘎吱。

相比於氣候,最讓我接受不了的是我的專業。我終於從別人的閒談中瞭解到了這個專業的真相——就是做洗臉盆、電線電纜的!據說我們專業一半以上的畢業生都去了電纜廠!

我不是鄙視這些行業——只是內心實在接受不了這個落差。

最讓我接受不了的是,這個專業的核心課程是化學!

我最討厭化學——不是說化學不好,而是說我討厭我學的化學。我們初中開始學化學,那個化學老師拿化學當歷史教,每個人要拿著化學書去他那裡背誦——就像我們小學背課文那樣!我感覺自己受到了侮辱,從此種上了仇恨的種子。

才邁入大學門檻,我整個人狀態就不太好了。

不過整個大一來說,我多少還是個“良民”。一方面剛進學校,新鮮感未減;另外高中那種“好好學習”的慣性思想猶在;更重要的是,大一的課程多半是我喜歡的,像數學、物理。嗯,我最喜歡物理——準確地說是喜歡裡面的經典力學部分。

所以大一的期末考試我的成績是排在中上的,有幾門課還是前五。

從大二開始,我離“好學生”漸行漸遠了。

我覺得大學學的東西越來越無聊,公式越來越複雜,越來越不知道它們到底有什麼用。

這種感覺起於麥克斯韋方程組。那天,天朗氣清,百花盛放——我們校園也沒幾朵花——我愣愣地盯著老師在黑板上寫下一大坨公式,那天在上電磁學。我盯著這坨公式足足 10 分鐘,然後感覺自己的智商遭到了蹂躪。

這種感覺迅速轉化為仇恨——從此我再沒翻過一頁物理書!當然課還是上滴,只不過課本換成了《射鵰英雄傳》。

自這以後,我的課堂狀態就進入“混沌”態。大部分課本都沒翻開過幾次,只是偶爾聽聽老師講什麼,感興趣的就聽一下,不感興趣就看小說或者睡覺。

有一門課除外——這門課叫“線性代數”。這是我在混沌狀態中學得最認真的一門課(期末還考了個全班最高分),也是最摸不著頭腦的一門課。我之所以學它是覺得這門課很奇怪,講的東西好像不是來自人類文明。必須承認,雖然考了個最高分,但直到大學畢業,我都不知道線性代數到底在講什麼——直到十年後我在網上重學這門課,才知道可以用它做空間變換(如圖形的翻轉、變形)和線性方程組求解,在圖形學、大資料、人工智慧等領域有非常廣泛的用途——對於計算機學科的人可以說是最重要最實用的數學分支之一。

老是看小說、睡覺也不是事。不學正課了,得乾點自己喜歡的。我們這幫不學習的人基本分兩種:打遊戲的和看小說的。打遊戲的基本天天泡網咖玩《魔獸世界》,看小說的則是躺在床上金庸古龍梁羽生以及各種新生代。

我不太喜歡看武俠小說(除了古龍基本看完了,金庸看了幾本,其他武俠鮮有涉獵)——我覺得武俠小說過於虛構,而且滿是套路;更不打遊戲,我覺得那是浪費生命。出乎意料地,我這個理科生很喜歡文學、藝術這類東西。從大二開始,我的大部分時間都是在圖書館度過的,看了很多文學、繪畫、書法、音樂方面的書,我覺得這樣很輕鬆,無憂無慮——當然這種無憂無慮是有代價的。

我喜歡寫作。從小時候就喜歡寫日記,高中還偶爾在校刊上發發文章。整個大學,我幾乎天天都寫日記,多半是記些人生感想、哲學思考、文藝評論啥的——從某些角度看,大學生活其實無聊至極,也只能寫這些。整個大學寫了整整五大開本——畢業後被室友當廢紙賣了。

我曾嘗試寫小說。寫大學生活。寫了一半,放棄了,大學生活實在沒什麼可寫。逃課?打架?戀愛?寫著寫著自己都覺得噁心。

一個偶然的機會,我喜歡上了哲學!

具體怎麼喜歡上的忘了,反正當時很瘋狂,從柏拉圖到海德格爾,或多或少都拜讀過——雖然很多是一知半解。

對我影響最大的是黑格爾。我花了很長時間(半個學期?)讀完了《小邏輯》,上面寫了密密麻麻的筆記。和其他(特別是早期)斷言式哲學作品不同,《小邏輯》裡面多是邏輯推理。裡面內容現在基本忘得差不多了,不過最大的收穫是學會使用辯證法思維。

黑格爾最為外界熟知的名言是:“存在的即是合理的”,說的是凡存在的(實在)定有其必然性(凡事必有因)。這句話很容易被當權者利用,以佐證當權者的合理性(合法性)——黑格爾也因此被扣上保守派的帽子。然而他們沒考慮的是,黑格爾的“存在”本身就是個矛盾體,它必然會否定自身(揚棄)。馬克思根據黑格爾的辯證法邏輯給出了這句話的下半句:“合理的即是不合理的”。

《小邏輯》是出了名的難懂——雖然絕大部分哲學書都很難懂。記得當時一晚上只能看一頁(大部分時間在消化和做筆記)!但它是我為數不多的從頭到尾認真看完的哲學書,效果是後面看馬克思、尼采、弗洛伊德就感覺不那麼難了。

黑格爾還有本《美學》當時也是非常地熱愛,剛畢業那會還據此在 MySpace 上寫了篇萬字博文。

大三時我決定考研——考武漢大學哲學系!為啥是武大?因為武大有個鄧曉芒,我看過他翻譯的康德的《純粹理性批判》(好吧,這本書比《小邏輯》還難,看了一點,實在看不懂,放棄了),有個印象。

當時的想法是畢業後在一所不錯的大學當老師。

於是我買了一大堆考研資料,加入茫茫考研大軍中——這些傢伙給外人有兩個印象:1. 特別會佔座位;2. 精神可能有問題(否則為啥老是一個人嘴裡唸唸有詞?)。

結果如你所料:沒考上。其實是差不多到後半截就放棄了,真教一輩子哲學貌似也挺無聊的——整天在那啥也不幹就亂想?

就這樣渾渾噩噩到大四了。

大四(下半學期)主要就兩件事:寫論文、找工作。

你能想象一個專業課課本還是新的、每學期必掛一兩科的傢伙如何寫論文?

你肯定想得到——多半你也幹過。於我來說,網際網路在大學最大的用途一是和陌生人聊 QQ,另外就是寫論文。

具體做法是:進入中國知網(還是其他什麼網忘記了),輸入關鍵字搜尋,狂下數十篇論文,然後複製黏貼,完事!

如果說大學有什麼事情做起來效率最高,那就是寫論文。寫論文最難的部分是摘要:你得用自己的語言總結一下這些七拼八湊的東西,而且這玩意也是你做論文答辯時的主要用辭。

寫論文的同時差不多就在找工作(哦,前面還有個叫“實習”的步驟,就是一幫人去幾個烏煙瘴氣的化工廠轉幾圈)。與其叫“找工作”,不如叫工作找我們。學校會聯絡一些企業來做專場校招,我們只要看到有公司來就投簡歷。像我這種對本專業幾乎一竅不通的,簡歷寫什麼呢?

不用怕,因為大部分人對本專業也一樣一竅不通!

校招公司多半看你簡歷上有沒有諸如“獎學金”、“活動”、“大賽”這樣的字眼。不管你信不信,我在大一還真拿過獎學金(三等)——僅此而已。如你所猜,我(以及其他好幾個人)去了四川德陽一家電纜廠——一家很大很知名的電氣集團下面的一家很小很不知名的子公司。

我的大學總結起來就是渾渾噩噩,亂七八糟而又單調乏味,但有一點是確定的:它跟程式設計(或說計算機)沒半毛錢關係。


電纜廠

七月,秋高氣爽(說什麼大瞎話,那時候還熱的要命好吧——不過詩歌裡面經常這樣寫)。

我們一眾坐著綠皮車咯噔咯噔來到了如花的成都——旁邊的一個小城市,德陽。

初到德陽,給我兩個印象:滿大街酒糟味(據說劍南春旗下一個小酒廠在那);滿大街小電纜廠。

我們是 08 年去的,那年剛好汶川大地震,德陽雖然不嚴重,廠房也斜了一些,宿舍也在整修——得住活動房,沒空調的那種。

剛畢業跟剛入大學心情差不多,有種放飛的感覺。不需要再過宿舍—教室—食堂三點一線的無聊生活,還能自己賺錢養活自己,一下子感覺自己“成年”了。另外也沒多大壓力,很長一段時間的工作其實都是實習(跑跑車間,彔彔最基本的 ERP);也不用考慮買房結婚生子這些勞什子事。所以那段時間過得可以說無憂無慮,上班打卡,下班打球——對於四川人來說,下班後最大的娛樂活動其實是打麻將,但我不喜歡棋牌,所以下班後就跟幾個同學打打乒乓球。

雖然過得無憂無慮,但工作其實很無聊,基本就是天天呆在車間,看著一臺臺機器把 PVC 融化並擠成電纜皮。雖然“專家”們告誡我們這裡面有很深的技術內涵,比如如何保證電纜皮厚度均勻不起泡,我依舊覺得這項工作無聊透頂,只是為了表現得很賣力,天天拿個遊標卡尺到處瞎測。

除了到處瞎瞅瞎測,就是畫圖。在這裡我認識了一款叫 AutoCAD 的工程製圖軟體(好像大學學過?我不記得了)——從學長們的工作內容看,自己後半生恐怕就靠這玩意吃飯了。

畫圖的過程很不愉快。當時有個圖(貌似是畫個齒輪)被總工駁回了五次——劈頭蓋臉的罵那種。

我再次感覺自己的智商遭到蹂躪。

於是第二天我不去了——沒請假的那種。

老子不幹了!

我在床上躺了一整天。

第二天我去公司,正式提出離職——就這樣結束了為期四個月的電纜廠工作,也是我唯一一份跟專業相關的工作。


淘寶

我一時衝動,裸辭了。

接下來幹啥呢?進另一家電纜廠?

怎麼可能!

很迷茫。一段時間,除了打遊戲就是睡覺,偶爾出門透透風,坐在河邊石頭上思考人生。

一次出門溜達,無意中跑到一家成人用品店前。我眼前一亮——要不賣這玩意?

我上網搜了下,成都火車站旁邊就有個成人用品批發市場。很近,不錯,可以搞!

於是當天我就殺到成都——當我看到偌大一片批發市場,各種成人用品琳琅滿目時,我覺得不做哲學老師的想法是對的。世界之大,值得出去看看。

我像個賊似的來回溜達,斜眼瞄著往來人群。來這裡的都是零售商,看他們表情很自然,我也就順著走進去,找了幾個老闆攀談起來。和用 AutoCAD 畫齒輪不同,這玩意沒什麼學習成本,一看就知道怎麼用的。我的唯一要求是先賣後買,因為沒錢囤貨。那時候淘寶很火,很多批發商都支援這種模式,於是我從他們那拍了很多照片回去,註冊了個淘寶店鋪,傳圖片,開賣!

賣得最多的是壯陽藥——這玩意是真暴利,幾塊錢的進價,能買到上百,搞得我都良心不安。

可能是我不會運營,訂單量一直上不來,平均一天不到一單!

我感覺我可能會被餓死——雖然那時候是跟同學合租的,吃住全靠他們。

於是我又去大街上瞎轉,看看有沒有什麼好點子。


初識程式設計

我來到市中心,看著步行街兩旁擺地攤的,覺得這也許是條出路。

這些零碎小玩意成本不高,時間也比較自由——唯一可能的風險是其門檻實在太低了,做的人太多。

就在我猶豫要不要擺地攤時,不遠處一個小妹向我招手。

我瞬間被她迷住了——不是說她的容貌,說實話我現在想不起來她長啥樣了——被她手上的傳單。

“你是說程式設計?”我對程式設計多少有點了解,畢竟大學學過幾節譚浩強。

“對!這個行業現在可吃香了。”

我感覺這小妹頭頂有光,照得我心底透亮透亮的。

就這樣,我去了培訓機構。在一幫老師的海闊天空下,我覺得自己已經坐在去往人生巔峰的纜車上,也差不多摸到白富美的指尖了。

於是我開始到處借錢,總算籌夠了一個學期的學費(本來他們是按學年收費的,我一個勁擴窮,最後他們答應按學期交)。

進去上課才發現,裡面基本都是初中畢業的娃娃,頂多有幾個高中生——我覺得自己就是個另類。

學了兩個月,我發現自己真對程式設計感興趣,看來這次沒走錯路。

培訓課程進度很慢——在我看來——所以我自己買了些書籍開始自學,有本很有名的叫《java 程式設計思想》,當時學得廢寢忘食,雲裡霧裡。

學了兩個月,開始做一些簡單靜態頁面,當時覺得好牛逼。

記得當時用 javascript 做了個連連看版俄羅斯方塊,拿了學校期末設計第一名——我覺得自己是個天才,很後悔為啥在學校沒去搗鼓這玩意。

第一學期很快結束了,該交第二學期的錢了。我實在沒錢,退學了。


第一份工作

學半年程式設計能找工作嗎?

管他呢,找找再說。

德陽沒有 IT 公司,得去成都。

想學半年就找個高工資不太現實。第一份工作的目標是:有班上。

簡歷也沒什麼東西可寫,只能把培訓機構做的專案搬上去(加點潤色,至少看上去高大上),再吹幾句自己怎麼怎麼熱愛這行,有什麼什麼樣的優勢。反正,如果找工作的要求僅僅是“有班上”,找到還是不難的。

我當時找到一家初創公司(剛出來多半也只能找這種),好像叫“打分網”(沒做多久就倒閉了,不記得名字了),就是使用者可以給各種品牌手機評分、寫評論。當時 SNS 概念很火,很多這方面的初創公司。

工資只有 2500——不過在當時的我看來已經可以了,畢竟在電纜廠才 1500。

那時候很流行用 flash 做頁面(只流行了很短時間,後來被 ajax 替代),有個全棧工程師負責用 ActionScript 寫 flash 互動,我負責寫後端。

我開啟後端程式碼一看,尼瑪,這是什麼語言,到處都是 $ 符號?

同事告訴我那叫 PHP。

納尼?說好的 java 呢?

在那——那個爬蟲是用 java 寫的,不過已經不用動它了。

我就這樣入了 PHP 的坑——從此再也沒碰過 java。

我的第一個任務是用 PHP 寫模擬登入,就是用程式自動登入 Google、新浪、亞馬遜等網站,然後抓取裡面的東西。至於為啥是抓亞馬遜而不是抓淘寶,估計因為老闆以前在亞馬遜工作,看不上淘寶?

抓誰不重要,重要的是我特麼壓根不會 PHP 啊(那時候我沒想到 PHP 那麼簡單,時間緊迫也沒空去學)!

我花了幾個通宵沒搞定——感覺整個人被騸了。

我瞪著雙熊貓眼,跟老闆提離職——我想一個人靜靜。


閉關

這份工作讓我深受打擊,之前還覺得自己是個天才,現在感覺原來自己一無是處。

晃盪幾天後,我決定靜下心來好好研究下這個 PHP 到底是什麼鬼東西。

一研究,發現這玩意出乎意料地簡單。我根本沒買什麼書,也沒看什麼視訊,就是把官網從頭到尾看了一遍。

我覺得我已經掌握這門語言了。這裡沒有型別,沒有無處不在的 class(那時候 PHP 已經支援 class 了,但不是主流),沒有複雜的包結構,還不用編譯!

我又系統學了其他相關知識諸如 Linux、Apache、MySQL、jQuery。

於是我又重拾信心了,覺得自己可以幹大事了。

那個時候 SNS 概念很火,人人網、開心網、聚友網(MySpace)如日中天,看得人眼饞。當時和一個朋友聊天偶爾聊到這,頭腦一熱,也想去開發個某某網出來。

初生牛犢不怕虎,想幹就幹。我們想開發個家庭 sns,一家人可以在上面建立虛擬家園,存照片、記日誌啥的。

開發不到兩個月進行不下去了。開發進度奇慢(就我一個菜鳥開發),也沒有美工,後期怎麼運營也沒有思路——更重要的是,我們發現其實已經有好幾個類似的網站在運營了(後面無一例外都倒閉了)。

於是我又放棄了。

這段日子最大的收穫就是狠狠地鍛鍊了程式設計技能,自此可以獨立承擔專案了(併發量和複雜度不是那麼大的)。


去深圳

德陽這地方是待不下去了(第一份工作離職後又回到德陽),生活節奏過於散漫(下班後滿大街的麻將聲)。

我得去大城市晃盪一番——比如深圳。

2010 年,我揹著旅行包,坐著綠皮車,咣哧咣哧來到深圳。之所以選擇深圳,一方面幾個大城市中深圳算比較近的,另外深圳有個比較要好的同學。

在深圳的第一家公司是一家招聘網站(目前已上市),那時差不多 600 人規模。面試出奇地順利,入職後技術負責人說感覺我技術挺不錯,讓我去開發流量統計系統。

這次我沒出洋相,花了一個月時間,加班加點,終於把系統開發出來了(雖然用現在的眼光看那個系統很粗陋,但基本設計思想是對的),上線執行一段時間也沒出什麼么蛾子。

第二個專案是校園招聘系統。這是個面向校招生的獨立平臺。在這個專案中,我發揮了自己出色的邏輯分析優勢。得益於大學時期的哲學訓練,我對概念澄清與邏輯推演很擅長,在我看來,需求分析就是一種邏輯推演——角色-行為邏輯推演。接到產品經理的需求文件後,我寫了一篇兩倍於斯的再分析文件,指出其中不下十種邏輯問題——結果是需求被打回重新設計。

這兩個專案給了我大量的實戰經驗——程式設計、資料庫和系統設計方面。這兩個專案後我成為團隊核心開發成員,後面很多時間在開發底層元件——很多是基於 jQuery 的前端元件。

隨著業務量的增加,網站的搜尋效能越來越被詬病,一次搜尋可能需要 10 秒之久,這對招聘網站是不可接受的。

我當時接到的任務是引入開源搜尋引擎,優化網站搜尋效能。

在今天看來這其實是很簡單的任務——引入 sphinx 或者 ES 就解決了。在當時也不難,大約花了一週多點時間就搞上線了——搜尋時間從 10 秒一下降到 0.1 秒,這讓公司刮目相看。這件事讓我深深感觸:對於公司來說,程式設計師的價值在於他給公司帶來了多少收益,而不是他自己的技術多麼牛逼。你哪怕技術平平,也沒做過什麼特別炫酷的東西,只改了個符號,但給公司帶來了巨大收益,你就有巨大的價值。公司只會重用有價值的人,而不單單是所謂“能力強”的人。

初來深圳的生活極其單調——也極其充實:除了工作就是學習,瘋狂地學習。我開始研究 Linux,研究 jQuery 原始碼,研究 PHP 框架原始碼,研究 MySQL 底層機制。提升技術水平最佳方式就是去研究優秀軟體的原始碼。

就這樣持續了一年——直到我的心又蠢蠢欲動。

那天,我跑到主管面前說我要離職。

主管很詫異,跟我聊了半天。我很堅持,理由是想去外面大廠轉轉。


大廠

每個程式設計師都有一個大廠夢。

我當時估摸著,自己現在的水平進第一梯隊(BAT)有點懸,退而求次,進第二梯隊吧。

我先是面了酷狗。面試過程出奇地順利,雖然面試題基本是 C 語言相關,不過那時候我私下學了點 C 知識,略懂皮毛,看那些題目也不太難。第二輪是 CEO 面(我有點納悶,這麼個崗位也要 CEO 親自面試?),hr 給我一份筆試題,瞅一眼,跟程式設計沒毛關係,更像是高中的閱讀理解題,主要考理解分析能力——這正是我擅長的。

題做完了,去跟 CEO 聊。我心裡有些忐忑,大佬會問我啥呢?去了才發現忐忑是多餘的,越是大佬越親和得很。他也沒問什麼廢話,就是讓我說說這些題選 A 不選 B 的原因,就是看你怎樣分析問題。對我來說小菜一碟。

於是就這樣通過了。然後跟 hr 聊薪資。薪資不是很高(或者也還不賴?我也不知道,當時糊里糊塗),八千的樣子,說廣州薪資水平比深圳還是差一截的。我覺得也有道理,先進來再說吧。

於是我滿懷欣喜回到深圳。

躺在床上,我又感覺廣州有點遠——有點不太想離開深圳。

於是我又在深圳找——去了迅雷。

迅雷主要面了 PHP 和 javascript 的一些知識,也不太難(後面聽同事說做錯了幾題)。第一輪面試官老是問我前端(主要是 js)問題,我就很納悶,我不是來面試後端工程師的嗎?後來才知道他在裡面主要就是寫 js。

第二輪是事業部技術總監面,也沒問什麼很難的技術問題,一半的時間在聊生活。

迅雷的待遇和酷狗差不多,我選擇了去迅雷,主要是它離我住的地方近,懶得搬家。

去了才知道,PHP 工程師在裡面屬於前端組,主要做各種指令碼工具(如非同步生成快取)——他們後端是用 C++ 寫的。我進的是迅雷看看事業部(現在賣給響巢了),第一個任務是給各頁面生成靜態快取——這是我在裡面用 PHP 乾的主要的事情,其他時間都在寫 js。

迅雷(應該說看看事業部)給我的感覺是工作氛圍很輕鬆自由,工作節奏較慢,我覺得一週就能搞定的,他們要兩週。所以我在裡面其實很多時候沒事做,只能學習。

還有個現象讓我受不了,他們每天晚上都要耗到 8 點以後才下班——不是說工作很忙,很多人其實在那玩遊戲、看電視、盯股票。那時候的我還沒有加班的概念,每天晚上7點前就跑了,漸漸地我發現研發這邊每天都是我走得最早,像個另類——這種感覺很不舒服。

至於技術水平,他們給我的定位是中級偏下(或者叫初級偏上),不過在我(當時)看來,其他人水平也不比我高多少(有那麼幾個技術比較牛的,但平均而言,水平一般——可能是當時的我比較輕狂?)。我大部分時間都在敲 js,原生的那種(其實是用他們內部開發的一個小框架),最讓人頭痛的就是 IE6,有一次一個小問題把我折磨了大半夜,那次剛好是產品發版,其他人都乾等著——那是我最尷尬的一次,像是吃了狗屎。

平心而論,我在迅雷多少學到了一些東西——特別是在工作流程和團隊協作上(雖然很多東西是我後來反思時才發現的)。他們的產品經理是我見到的最專業的(哈,我也沒見過幾個產品經理嘛),你只要嚴格按照他的產品文件敲程式碼就行(這難道不是理所當然的?不是,大部分小公司做不到這點)。

看看的問題是它始終未能真正盈利(賣給響巢後就不知道了),當時其主要收入是廣告,外加會員(會員在當時還是個新事物,很多使用者還沒有接受這種模式),面對高昂的版權費用,常常入不敷出——不光看看是這樣,當時幾乎所有的視訊網站都是這樣,所以當時流言道視訊就是個拼爹的行業,不幸地是,看看的爹遠沒有愛奇藝和騰訊視訊的硬朗。

對於程式設計師來說,迅雷是個很不錯的跳板。很多程式設計師在迅雷幹三年左右便去了騰訊——除了我。

這不是說我在迅雷待了很久——我在那隻待了差不多半年。

當時因為家裡有些事情,需要請兩個月長假。上面的意思是時間太久,無法按假期處理,得先辦離職,後面如果想回來可以再入職。

於是我離職了——永久的那種。

我再沒有回去。我覺得自己無法適應那裡的工作節奏,工作也沒什麼挑戰。我覺得自己還是應該去小公司,有句話叫“寧做雞頭不做鳳尾”。

這是我做過的最錯誤的決定之一。年少輕狂,缺乏長遠考慮,潛意識裡根本不把 BAT 放在眼裡——等意識到時,為時已晚。


小廠

兩個月後,重新開始找工作。

我像個無頭蒼蠅,到處亂碰——差點去了外包公司。

最後去了一家做建築設計的創業公司(早已倒閉)。當時的技術面試就是走個形式,然後就到 hr。hr 聽說我在迅雷待過,二話不說,明天來上班吧。

如我所願,我在那“帶團隊”——兩個後端(包括我),一個前端,一個運維。

公司想做建材行業的阿里巴巴,但老闆並不具備網際網路思維。產品一直在開發階段,直到我離開時都沒有一個真正的客戶。

工作之餘,我開始學彙編和計算機底層知識。

一年後,實在看不到希望,我離職了。

後面又待了幾個小公司,沒有一個超過三個月的——有些是倒閉了所以離開,有些是快倒閉了所以離開。

至今還活著的一家叫明源——不但活著,去年還在香港上市了。

我在明源呆了兩年——這是我成長最快的兩年,不光指學知識,更重要的是解決問題的能力。

明源很有技術氛圍,團隊採用 scrum 敏捷開發模式,每個團隊 8 人左右:產品經理、前後端、測試。一年後,我擔任一個專案團隊的 SM(Scrum Master)。從那時起,真正開始思考團隊問題。

也是在那時候,我開始重點學習系統架構和設計。在系統設計上,對我影響最大的是《領域驅動設計》這本書(這本書前後看了幾遍,每次都有新收穫),當時我看完第一章後,感覺它給我開啟了一扇天窗,很多疑惑撥雲見日。我很喜歡裡面的一個觀點:程式碼即設計(源自賈伯斯“產品即設計”的說法)。

明源每年都有一次“黑客馬拉松”活動,所有團隊先選一個創意點子,然後通宵達旦設計、開發、測試、PK。一些作品後來轉換成了真正的產品。

遺憾的是,我當時所在的專案不溫不火(當時很多專案都是這個狀態,真正賺錢的就一個。當然我走幾年後有幾個新專案發展起來了,最終還上市了),加之當時跨境電商很火,我決定辭職去做速賣通(阿里巴巴旗下跨境零售網站)。


跨境電商

很多人看別人做一件事情成功了,便覺得很簡單,自己也想去試試——我就是這樣。

那時候(15 年左右)跨境零售電商很火,很多人做亞馬遜發財了,阿里巴巴也在大力推廣速賣通。我覺得可以一試。

套路很簡單:去速賣通註冊個賬號,從 1688 上搞些圖片傳上去,開賣!

大家都是這個套路,所以你去商品頁隨便搜個東西都會出來一大把一模一樣的。

於是就淪為價格戰。跨境零售很大的一部分成本在物流(我們賣的小件運費比商品批發價高得多),上面很多商品的標價比運費還低,純粹賠本賺吆喝——也就是刷流量。

我堅持了一年,開始的時候還算可以,至少比上班強點。越到後面越難搞,天天傳產品、優化推廣、打包發貨,比上班累多了,但單量就是上不去。

我也曾打造過幾款爆品,一段時間內訂單量確實喜人——然而,馬上,就會看到大量跟風。

如果決定繼續做,得成立團隊才行——供應商管理(拿到更低的批發價、定製商品)、物流管理(拿到更低的價格、更穩定的服務,甚至是海外倉)、售後,最重要的,持續的打造爆品——這是一門高深的學問,非常花精力。

我選擇了放棄——這可能又是一次錯誤的決定。現在看來,如果當時找幾個人一起搞,或許結果會完全不同——當然也可能一敗塗地。

說白了,那時的我並沒有準備好全力以赴,對電商運營也只是摸了個皮毛,一旦遇到困難,就會退回老本行——至少後面還有路。


老本行

於是我又開始找工作。

在朋友介紹下去了平安一個新成立的專案團隊(平安好車主)。

這是個全新的團隊,開發人員主要由 PHP 和 Golang 組成(後來除了離職的,基本都轉 java 了)。

平安這種大公司流程出奇地繁瑣,我申請個伺服器資源,各種文件各種審批,前後折騰了三週有餘(後來據說部分是因為新團隊和平安科技運維團隊溝通不暢導致)。

我開發了個好車主推廣活動,策劃一再強調注意併發,到時候訪問量怎麼怎麼暴漲。本來信心滿滿,讓他幾次嘮叨,我倒心裡沒底了,活動當天死盯著負載和資料——結果毛事沒有,他所謂的併發也就那麼回事。

活動結束了,我的老毛病又犯了——我覺得這裡的節奏不適合我。

其實那時候我自己迷茫得很,我不知道未來該怎麼走了,甚至不知道該不該繼續呆在這個行業。

我躺在床上把過去的事放了一遍電影,總結出兩個關鍵點。

這些年蹦躂得有些頻繁。像我這種半路出家的,前一兩家蹦躂很正常(因為不太可能第一家就能進大廠,多半需要從低處開始起跳),但差不多從第三家開始就要講究沉澱了。沉澱時間差不多要三年,因為你需要時間去融入團隊,融入公司文化,理解公司業務和系統,解決幾個關鍵問題,開發一兩個核心系統,提升自己的綜合實力。

“寧做雞頭不做鳳尾”的想法害人不淺。人們喜歡用幾句濃縮的所謂“格言”來指導(忽悠)自己行事——很多人往往就死在這些“格言”上。相較於鳳凰,雞自然滿地都是,但絕大多數都活不長久。當今時代,指望通過加入一家未來能上市的初創公司發大財,等於買彩票賭頭彩。重點不在於能不能去賭,而是自己是否清楚這個概率風險。對於你我普通程式設計師來說,最優解是儘快進入大廠——收入是一方面,更重要的是自己實力提升與未來品牌影響力。

我決定進一家稍微靠譜點的公司,老老實實呆幾年。

我去了一家 toB 公司。

和以前一樣,我面對著一堆亂七八糟的系統,混亂不堪的工作流程——還有加班。

呆了一週,心情糟透了——第一念頭又想走人。

但這次我沒有那麼衝動了。所謂家家有本難唸的經,沒有一家公司能做到完美無缺。你是來解決問題的。

我開始著手解決各種疑難雜症。在這裡,我見證過因系統崩潰而導致的流血事件。老版把視訊發到群裡,大家像雞一樣呆坐著。

我開始整理公司系統架構。公司有很多異構系統,有些團隊不在一起辦公,溝通都存在困難,很多底層資料都沒有打通,系統互動困難重重。

我洋洋灑灑寫了一大篇架構設計文件,企圖一舉解決掉各種問題。然後——在漫長的時日裡——我愈加確定一點:研發問題的本質是人的問題。

你的架構設計可以做到無懈可擊(實際上做不到),但問題是很難實施,越無懈越難實施。對現有系統的改造可以用“舉步維艱”來形容,沒人願意去做大型重構——系統不穩定的鍋可以由整個研發部門來背,但一旦因重構導致重大損失,責任總能追溯到具體團隊甚至個人身上。

重構在技術上的困難主要是新舊相容問題。包括程式碼相容(灰度)和資料相容,甚至涉及到資料遷移——沒人願意幹這種勞什子活。

所以研發團隊的一個共同現象是,大家寧可日復一日地修復沒完沒了的 bug,也不願下決心重寫整個系統。

所以,如何讓自己的設計切實可行,並說服其他團隊支援你的方案,並且願意劃配資源協助你做這件事,是非常考驗一個人的綜合能力的。

與此同時,我又開始帶團隊。這次帶得比較久。

團隊的本質也是人的問題,但團隊≠個人之和。我們常說 1+1>2,卻忽略了很多時候 1+1<2,特別是在跨團隊協作時。研發團隊遵循邊際效益遞減定律,當專案參與人數達到一定規模時,再加一個人會讓整體進度更慢——外界感覺不到這點,你經常聽到“再加幾個人,這周搞完!”的豪言。

我開始反思自己的知識體系。

自從入行以來,我就在一刻不停地學習(除了做速賣通那段時間),各種程式語言、各種資料庫、演算法、架構、設計、各種新潮框架......漸漸地,我發現個問題:我學得越多,就覺得自己不知道的東西越多。這樣學下去,何時是個止頭?更重要地是,一些東西前面學後面忘。

有一天,我想通了一件事:我沒必要學這麼多東西。知識的價值在於用其解決實際問題,而不在於你記了多少定律多少公式。要想讓知識發揮實際作用,必須形成知識體系。

所謂體系,就是你的思維模型。

知識本身並不必然會構建出知識體系。想想我們學數學,從小學到大學,學了長方形面積、畢達哥拉斯定理、正負數、指數和對數、實數和虛數、微積分......越學越迷糊,越學越討厭數學——因為我們所謂的“學”數學,不過是背了一堆數學公式,壓根沒有構建出數學知識體系。

要想構建數學知識體系,你必須學會如何創造數學本身——真正要學的是如何得出“長方形的面積等於長乘以寬”的思維方式,而不是記住面積公式本身。

然而,模式提取往往需要建立在大量的經驗和知識儲備上,比如只有在實際研究了幾款軟體的叢集實現方案後,才能提取出一些通用模式,進而去研究分散式協議。

所以,一定量的知識儲備是必要的,但到達一定程度後,需要著重思考、整合、建模,構建自己的體系。


寫作

與此同時,我重新開始寫作。

和之前寫時評、寫感想——偶爾還寫詩——不同,這裡是指技術寫作。

我很早就發現寫東西能幫我釐清思路,加深對問題的理解,但一直沒開啟技術部落格。我覺得我想寫的東西早有人寫過了,沒那個必要——其實主要是懶。

後來我想通了,所謂一千個觀眾就有一千個哈利波特,每個人對同一個東西的理解和看法是不一樣的。再者,寫部落格首先是用來提升和鞭策自己的。

另外,如果能堅持不懈地寫下去(多少有點質量的那種),還能打造個人 IP——像阮大俠那樣。

於是我在部落格園開了個賬號,開始寫技術部落格。

開始兩個月還有模有樣,基本能做到周更,也輸出了幾篇自認為質量尚可的文章。

兩個月後就堅持不下去了——如你所猜,理由是工作忙。

寫作就像跑步,雖自知百利而無一害,偏偏就是堅持不下去。

某一天,在跑完十公里後,我下定決心,要重拾寫作計劃。人生最容易做的事情是放棄,最難的是堅持。某人說過:“種一棵樹最好的時機是十年前,其次是現在。”——這杯雞湯,不妨一喝,至少能讓自己覺得自己還有救。

這次我註冊了個公眾號。註冊公眾號最難的就是起名字,四五個字得讓人知道你這公眾號是幹嘛的,有什麼特色,還能勾引人,還要......總之比寫萬字博文難多了。

我不擅長起名字,我家娃出生時,我百度了半天,什麼雨熙雨夢雨軒,最後還是我老婆起的。

於是我乾脆瞎寫了個名字,先佔個坑,後面慢慢想。

一天,我在巷弄裡散步時,腦袋裡突然蹦出個名字:編碼衚衕。我覺得這名字不錯,我就是那衚衕裡的張大爺,手捧一壺茶,跟歇腳的過客們海聊計算機世界的前世今生。

我去公眾號後臺搜了下,還沒人註冊,就它了!

關於內容,我不太想寫純技術的東西,也不想天天到處蒐集各大公司的八卦新聞。

若想深入掌握某項知識(進而構建知識體系),你必須瞭解這項知識的創造過程——也就是它的歷史。如若不瞭解 IPv4 的歷史(在其歷史環境下的設計動機),你可能很難理解 IPv4 為啥採取變長頭部,為啥有那些標識位;如若不瞭解 Unicode 的歷史背景,便很難理解裡面奇怪的折中設計。

所以我決定採用“左手技術,右手歷史”的原則來寫作,以歷史的視角寫技術(當然也不盡是這樣,有些文章還是純技術,有些則是純歷史)。知其然,更重要的是知其所以然。

-----------------------------------------此處插播三秒鐘廣告----------------------------------

望各位看官能關個注,碰個場,鼓個勵,支援下鄙人的小 flag:至少寫三年!

---------------------------------------------廣告結束--------------------------------------

相關文章