快到 35 的"大齡"程式設計師

語言: CN / TW / HK

大家好,這是一篇快到 35 歲的“大齡”程式設計師的自我介紹,希望能夠藉此認識更多同道者。

我叫黎清龍,廣東人,2012年本科畢業,2014年研究生畢業,是浙江大學軟體工程學院本碩連讀(呸,就是不想考研選擇了保研)。第一份正式工作經歷是在騰訊,CSIG 線上教育部,做前端開發,也是 IMWeb 團隊的一員,先後做過騰訊課堂和企鵝輔導業務,2020年正式任命 leader,管理差不多10人左右的前端開發團隊;2022年3月,因(cheng)為(xu)某(yuan)些(dou)原(zhi)因(dao),加入蝦皮金融產品部,現負責消費貸業務+催收業務的前端開發和管理工作。

我的自我介紹完了,如果大家不想浪費更多時間深入瞭解我的話,知道以上資訊已經足夠了,為了大家的腦細胞著想,提供給大家 3 個不用思考的快捷選項:

  1. 對我不感興趣,可以左上角關閉頁面(我可以對天發誓,這絕對不是相親貼);
  2. 覺得可以交個朋友,給自己保留一個未來有驚喜的可能,可以關注我的公眾號或者加我微信;
  3. 還想聽我嘮嘮嗑的,歡迎繼續看下去呀,一定滿足大家的好奇心。

感謝你能夠繼續看下去。我想了很久,怎麼樣才能不至於讓我的自我介紹寫成流水賬,但是,當我想了更久的時間之後,我發現,我想把這份流水賬寫出來更難,因為,很多的經歷我都不記得了,我只能把我的記憶片段寫下來,拼湊出我的職業生涯。好記性不如爛筆頭,我覺得本文我可以永遠留存並持續迭代,直到我的職業生涯結束的時候,可以用來回顧我的人生,也不失一樁美事。我也推薦大家這樣做。

我的前端之路的伊始

我的第一份進入企業的工作是在2011年,大三實習,在杭州阿里,阿里媽媽廣告部門(部門全稱已經不記得了),後臺開發,你沒有看錯,是的,我是後臺開發,那會兒我還不知道前端,大學課程也沒有一門是教前端的。

我對於阿里的印象,絕不是現在的"味兒"。我對阿里最大的印象還停留在當初那個時代,有三:

  1. 江湖氣派,店小二文化,隨性,直來直往,互相接受度非常高,我是非常喜歡這個文化的,當時阿里實習是不能擁有花名的,這是我職業生涯最大的遺憾之一,我還很清楚記得,當時我曾經查過,好像還沒有人取名曹操,不過也是我的異想天開,因為即使我轉正,我也沒有那個資格取這個花名。
  2. 開放,真得非常開放,當我在新人入職歡迎聚餐中,脫到只剩褲衩的時候,我相信我那會一定是完全理解了開放這個詞了。雖然直到現在回憶起來,還會有點不適,但是,當經歷了那次聚餐之後,隱隱中,我會潛意識地得覺得,好像自己沒什麼是不可以“坦誠相待”的。
  3. 倒立文化,換個角度思考,我自認為我完全做到了,當我換個角度思考我的職業的時候,我走上了前端之路。。。

雖然在我拿到轉正 offer 的時候,還是毅然決然選擇保研(其實是被父母逼的)並轉前端,但是我還是覺得,我在阿里的大半年實習期間,是我整個開發生涯中成長最快的時期,在那裡,我學到了太多太多,以至於到現在我的開發習慣還會保留當時的一些痕跡:

  • 當我碰到需要服務運維的場景,我一定是首選 bash 指令碼,然後是 python,最後才是 js,基本不會是 js 的,因為沒什麼是前兩者做不到的。定時任務,檔案鎖,離線計算,文字處理等等,到現在我還記憶猶新。

  • 記不清寫了多少 Map Reduce 了,但是當時,我真得被 Hadoop 的設計原理給深深的吸引到了,原來,大資料處理&分析,分散式計算和分散式檔案系統有這麼多的挑戰,但它的解決方案又是這麼的精簡,直到現在,我仍然堅信,任何架構設計,一定是精簡的,當我跟別人討論架構的時候,如果他講不清楚,或者表達非常複雜的時候,我就知道,不是設計有問題,就是表達有問題,我們還有更優的方案。天地良心,當時實習的時候,我真的是非常認真的做後臺開發的,當時我還啃下了那本大象書呢,現在想想也覺得不容易,當年我是真喜歡看書呀。

  • 架構設計非常“好玩” ,在當時,阿里內部有非常多的技術分享,我常常去聽我自己喜歡的分享,讓我的技術視野得到了非常大的增長,比如:

    • 中文的分詞要比英文的分詞要難很多,最終發現,自然語言處理不是我的菜;
    • 推薦系統的結果是競速的,當時真的有想入職百度,去學習搜尋引擎的衝動;
    • 秒殺的多重降級、動態降級,各種“砍砍砍”,非常有意思。

    在當時,我學到的一個最重要的知識是,任何架構設計都是因地制宜的,不能墨守成規

在實習轉正答辯的時候,最後問我的未來規劃的時候,我的回答更多是偏架構設計和 UI 相關,現在回想起來都會覺得搞笑,當時我一度以為是轉正失敗了,但是沒想到阿里開放到這都給我發了 offer,真得很感激我的老領導,但也覺得很對不起他們,因為我真的不想淹沒在資料的海洋裡,我更喜歡開發一些"看得著,摸得到"的東西,我會覺得做這個更有意思,所以,我選擇了前端。

一波三折的騰訊夢

先說說為什麼想去騰訊吧,因為我是廣東人,父母都在深圳,都希望我回深圳,當時深圳不用多說,大公司就騰訊了,所以,我在實習和畢業的選擇上一直都非常明確,就是深圳騰訊,但是我自己都沒想到我回深圳是這麼的坎坷。

研一找實習的時候,我第一次面試騰訊掛了,當時是電話面試,我記得是早上,很突然接到了面試電話,然後突然開始面試,我完全沒有準備,很自然地就掛了,跟我同一個專案的做 web 服務的同學拿到騰訊的實習 offer 了,當時心理還有點不平衡,但是後面我也很快拿到新的 offer 了。

插一段題外話,當時我跟另外兩個同學一起跟著導師外包專案,專案也挺有意思的,因為我們是嵌入式方向的實驗室,所以我們做的是一個實時監控系統,有個同學主要負責感測器和網路程式設計,另外一個同學主要負責 web 後臺服務,我負責前端頁面(extjs),我們的專案是給一家醫院做冰櫃的溫度實時監控系統,在冰櫃中放入溫度感測器,然後不斷把冰櫃的溫度資料通過各個區域網網路節點傳輸器一路傳到中心伺服器中,然後中心服務負責儲存並分析資料,落庫並返回資料到前端,展示實時監控頁面並新增告警功能。整個系統非常有意思,通過這個專案,我深深地感受到物聯網的魅力,軟硬體結合的威力。這還只是單向的,如果可以做到雙向,再加上智慧化,那基本就可以取代人的工作了,實際上,現在很多的無人XXX系統,他們的本質都是這個,現在網際網路環境這麼差,哪天干不下去了,換個行業,做物聯網+虛擬+AI,做現實虛擬,實業升級事業,也是大有可為的。

迴歸正題,在騰訊突然面掛之後,我就開始認真複習,專門找前端的實習工作,然後很快就找到了網易的教育部門的前端開發 offer,這段經歷我印象最深刻的是當時那批前端的筆試當中,我是最高分的,面試也沒怎麼問就拿到 offer 了,果然有筆試就是好呀,妥妥我的強項。或者是因為我有這段經歷,所以後面我才會被分配到騰訊做教育吧。。。

在網易,我做的是網易雲課堂和網易公開課相關的前端工作,在網易的實習過程中,我的前端基礎和實踐不斷加強,三劍客,前端元件庫,前端基礎庫,模組化,構建,瀏覽器相容處理等等,基礎技術收穫很多,但是大的方面上,沒什麼特別的收穫,就像網易的公司文化一樣,沒什麼特別的感受,至今都沒留下什麼。在網易,印象最深的兩個點就是:

  • 除了遊戲,萬般皆下品,主要靠情懷。其實這點跟在騰訊做教育也差不多;
  • 網易的伙食真的是網際網路第一,不存在之一。

研二找工作的時候,我研究了騰訊的校招路演,發現有以下問題:

  • 杭州算是最後一站那種,時間很晚,到我們這邊黃花菜都涼了;
  • 杭州離上海很近,過來招聘的團隊應該基本都是上海的;
  • 像我這樣的杭州畢業生不去阿里想去騰訊的奇葩真得不多了。

因此,我決定跑去上海蔘加校園招聘。當年校招我只面了百度跟騰訊,當時校園招聘都是統一筆試,面試,我記得百度是去他們上海分公司內部面試的,面了 2 輪就到 hr 了,還能留下記憶的是當時 2 面面試官對我的阿里經歷很感興趣,問了非常多,我當時就懵了,你們不是招前端的麼。

然後是騰訊的面試,在一家 5 星級酒店的房間面的,當時進去就問我,能不能接受 web 服務研發崗位,我當時第一反應就是,你有無搞錯呀!?但是機敏如我,肯定是立刻回答可以接受的,雖然這是一個隨時都可以被廢棄的萬金油 api 崗位,但是它勝在可上可下,呸,是可前可後,啊呸,是可前端可後臺,必須難不倒我呀,然後就是很無聊的面試,問了一些簡單的前端題,瞭解了一下實習專案,最後做了一道智力題就結束了,相比百度的面試,有點看不過去了。最後問了我填的志願是深圳的崗位,問我服不服從調劑,我說只想看深圳崗位,讓我一度以為我又掛了,不過最後還是順利進到 hr 的房間。。。面試,隨便瞎聊,最後確認我只想回深圳,並表示可以給我爭取調劑。

在回杭州的火車上,我知道百度的 offer 基本穩了,不過是上海的,騰訊的 offer 還是內心忐忑,實在是騰訊的面試有點“敷衍”了,那會兒我都在思考怎麼忽悠我爸媽先在上海工作2年再回深圳了。不過沒過2天,就收到了騰訊的 offer,是深圳易迅的前端開發崗位,當時在上海招聘的 90% 都是易迅(騰訊收購)的招聘,也很感謝當時幫我調劑的面試官跟 hr 了。興奮的我在跟百度 hr 電話的時候就直接拒掉了百度 offer,現在回想起來,還真有點輕率了。

很快,我就決定提前到騰訊實習,當我坐在回深圳的火車時,看到了一則新聞:騰訊決定出售整個 ECC 給京東置換京東股份,並和京東開啟戰略合作。我不太記得我回家那天是什麼心情,我只記得我辦理入職手續的時候,窗外的天空是沒有太陽的。我甚至都沒認識全我的團隊,因為當時所有工作都暫停了,那會兒,不是開大會,就是漫長的等待,現在想想,還挺像現在經歷這場寒冬的我們一樣,迷茫,忐忑,甚至有點慌張。

我加入了應屆生群,在聯名信上“簽名”,在論壇上堆樓,終於,高層聽到了我們的聲音,跟京東友好協商之後,給予了我們這屆應屆生自主選擇權 —— 是去京東還是留在騰訊,待遇不變。毫不猶豫地,我選擇了騰訊。

寫到這裡,我還是很感慨,我的騰訊夢還真是一波三折,除了幸運還是幸運,或許因為在這件事情上花光了我前半生積攢的運氣,以至於直到到現在所有的年會我都是陽光普照,深圳車牌搖號還遙遙無期,但是,我的騰訊之路還是開啟了。。。

我職業生涯中最大的幸運 —— IMWeb 團隊

多動動腦子

剛轉來 IMWeb 團隊,我接到的第一個任務是做一個爬蟲,要爬淘寶教育的課程和購課資料。這不是很簡單嗎,之前做過呀,殊不知噩夢即將開始...

不到半天我就寫好了,包括郵件模板,也自測好了,正式啟動,美滋滋去喝杯茶,回來就能交差了。當我摸魚回來一看,咦,指令碼停了,介面報錯,被限頻了。於是我進入了瘋狂除錯模式,新增重試邏輯,不斷調整請求頻率策略,最終祭出終極策略,3分鐘請求1次,這下不會被限頻了吧,在穩定跑了1個小時沒問題之後,我安心的下班回家了。

第二天到公司,資料跑完了,完美。於是,我做了最後的資料校對和計算調整,然後調通自動傳送郵件的邏輯,再次執行。當我美滋滋地再次摸魚回來,發現指令碼又停了,這次是新的錯誤,沒有錯誤資訊,就是 5xx,黑人問號啊,於是各種除錯各種排查,最終得出一個結論,ip 被拉進黑名單了。

好傢伙,算你狠。於是我上網各種研究代理,不管免費付費,能用就是好代理,再次調整策略,申請十多個賬號輪流爬,光榮犧牲了一批又一批的 ip 之後,我還是敗下陣來。那個時候,我覺得我的人生都是黑暗的,我的面前立著一座大山,我怎麼樣都翻不過去。

當老大諮詢進度的時候,我並沒有得到任何安慰和建議,而是一句“多動動腦子”。

我已經忘記當時的我是什麼心情,被打擊成什麼樣了。也已經忘記了一週後是怎樣完成任務的。我只記得,之後我只花了半天時間就爬了網易雲課堂和慕課網的資料,他們就是毫不設防的裸......奔。

任性如我

對於我們程式設計師來說,碰到的最棘手的問題中,無法復現的問題肯定名列前茅。

有一次需求釋出,現網驗證的時候發現了一個問題,在本地和 test 環境都復現不了,live 打斷點也復現不了,真是絕了,打斷點沒問題,不打斷點有問題,我大概能猜到問題,但是需要列印一些日誌來定位最終問題,可是隻能在 live 才有效,先不說 live 構建會自動刪掉 console.log 語句,執行一次 live 部署非常慢,如果要折騰幾次來除錯,那半天都解決不了問題了。

急性子的我肯定受不了這種折磨,所以我選擇了直接登入現網伺服器改程式碼除錯。先把壓縮檔案 down 下來,本地格式化,找到對應位置新增 console.log,然後傳回伺服器覆蓋檔案,禁用 cdn 資源,直接在現網復現排查問題。幾分鐘不到就確定問題,然後修改程式碼重新部署一次過完成最終需求釋出。整個過程行雲流水,但是我內心慌得一比,這要是出問題被發現,那後果不敢想象。

還有好幾次的 Node 服務問題,我也是直接現網除錯,其實 Node 服務才是最適合這麼做的場景,但是,我並不是推薦大家這樣做。再到後面,我行我素的我越來越能夠理解流程機制的用意和作用,現在踏上管理崗位,我更希望小夥伴們是嚴格遵照流程規範來工作,但我的內心深處,還是住著一個不羈的我

“萬惡的” owner

“清龍,這個需求就由你來當 owner 吧。”

“owner?要做什麼?”

“就是這個需求的負責人,看看需求進度有沒有問題,釋出別延期就行”

“好”

【需求開發中...】

“清龍,現在需求進度怎樣?有沒有風險?”

“我這邊沒問題,我問一下後臺同學看看”

“你可以每天下班前收集一下大家的進展,然後在群裡同步哈”

“好”

【需求測試中...】

“清龍,需求測得怎麼樣啦?”

“......(這不應該問測試嗎)應該問題不大,我這邊的 bug 都處理完了,我找測試跟進一下測試進度哈”

“可以每天下班前找測試對齊一下測試的整體進度,讓測試在群裡同步哈”

“好”

【需求釋出中...】

“清龍,需求發得怎麼樣啦?”

“後臺發完了,前端正在發,問題不大”

“牛呀,一定要做好現網驗證,釋出完成記得要在群裡周知哈”

“好~”

自從團隊推行 owner 機制,工作量是噌噌噌地往上漲,但是工作能力也有很大的提升。

怎麼說呢,這是譭譽參半的機制,重點在於每個人怎麼看待這個事情,它可以是卷、分擔壓力的藉口;它也可以是培養新人,鍛鍊專案管理能力,提升溝通協調能力的最佳實踐機會。

我眼中的 IMWeb 團隊

它是綜合的。我們團隊涉獵的領域非常廣,移動端,pc 端,後臺均有涉獵,正因如此,我們有非常好的土壤茁壯成長,嘗試各種新技術。在很早的時候,我就在資料介面低程式碼平臺落地 GraphQL,實現了基於mysql 的 GraphQL 的 node 版本,不說業界,在公司內肯定是領先的。在公司成長的過程中,我們團隊也在成長,在前端工程化上也有很多的實踐和成果。後面騰訊搞 Oteam,我們團隊也多有貢獻。

它是著眼於業務的。 我們團隊推崇做產品的主人翁,堅持不懈地以技術手段助力業務發展。我們做的所有專案都是為了業務服務,為了整個團隊服務。我們團隊是專業的,沒有鑽技術的牛角尖,更多地是紮根於業務,一切以實際出發,更多以落地與實踐為主。但我們團隊的業務並不是很出彩,屬於半公益的教育,至今我仍然唏噓不已,只能感嘆時運不濟,現在回過頭來細品,再厲害的技術,沒有好的業務相輔相成,也是無法一直走下去,業務是王道啊。

它是被信任與敢於信任的。作為前端團隊,能夠有那麼大的空間來施展身手,這足以說明我們團隊是受到領導的充分信任的,我們團隊也非常努力來對得起這份信任。而團隊也非常信任團隊裡的每一個人,會給予很多的試錯機會和時間,就看我們有沒有耐心,主動與堅持了。

在一個已經建立了一定文化的團隊是幸福的,它是需要細品的,但很多人都不願意去感受。這兩年,我過得很難受,不知變通地我一直守著這份堅持,與已經被潛移默化的團隊文化對抗,最終只是落得個遍體鱗傷。但是我並不後悔,反而很慶幸,因為最後我找到了自己內心的真相,一直以來,我覺得是 IMWeb 團隊造就了我,其實,我所依戀的一直都是它的價值觀與文化,而我願意一直為之踐行。

我的管理之路

我正式任命是在 2020年上半年,但實際上,我在 2018 年下半年就從騰訊課堂調到了企鵝輔導,從一組調到三組,並開始做一些團隊管理的工作。整體而言我的管理經驗成長的非常緩慢,這是我自己的結論。

首先,我的角色轉變比較緩慢。經常看到小夥伴們做事情太“慢”,我都忍不住要自己上,或者直接告訴他們答案,我知道這很不好,但是初期的我就是忍不住,我感覺我的管理之路就是憋氣之路,最後總結就是,在大方向上,我要站出來,但是具體實施層面,我要當個隱身人,這對我來說,非常難受。

其次,我是主貓頭鷹次考拉的重事風格,不太擅長管理小夥伴的情緒還有激勵,溝通和語言藝術真是我需要投入一生去學習鍛鍊的課程。另外,我有一個最大的問題就是不喜歡衝突,直接導致我不太擅長爭取資源,這會讓我覺得很對不起小夥伴們,這點也是我離開騰訊最大的原因吧。感覺我比較適合增量市場,在存量市場這點真的是致命的,不過專心搞好業務不挺好嗎,何苦浪費時間在這些地方。

最後,管理的學習是需要實踐與討論分享的,我雖然上過很多管理相關的課程,但吸收到的並不是很多,理論知識都懂,做不做得到是另一回事。多年的自己摸索,還不如跟江哥的一番請教收穫的更多。因此,我現在非常希望有同道中人跟我互相交流學習,歡迎掃下面的二維碼加我微信呀!

如果不是小組長也沒關係,也可以加我微信,給我分享你的故事或者困惑,說不定我正好有這方面的經驗可以幫助到你。互相學習,互相交流也是一種成長的方式,我願意分享一些我的故事,一些工作心得,一些職場經驗和技能,一些職業規劃,一些架構設計,一些學習指導,我也願意多交一些朋友,期待你的好友請求!

不想加 V 也沒關係,可以掃下面二維碼關注我的個人公眾號,我會不定期分享一些程式設計師職場乾貨,一定不會讓你失望的!

歡迎加我v【longyiyiyu】,進行無負擔溝通,我會

  • 長期職業發展規劃指導
  • 近期工作重點交流
  • 職場解惑
  • 面試輔導

也歡迎關注公眾號【潛龍在淵灬】,收穫程式設計師職場相關經驗、提升工作效率和職場效能、結交更多人脈。