今年的程序員節(jié),也恰恰是我在阿里工作滿3年的時(shí)候,借此機(jī)會(huì)盤(pán)點(diǎn)一下自己近3年來(lái)的工作,也為自己后續(xù)發(fā)展把把關(guān)。個(gè)人的眼界和思考總是有限的,特別是對(duì)于研究和技術(shù)領(lǐng)域來(lái)說(shuō),知道得越多,其實(shí)就會(huì)知道自己有多無(wú)知,從而對(duì)未知心生敬畏,并因未知的廣闊而興奮。
我是1976年生人,屬龍,今年41歲,所以可以算是老程序員了,15年前我讀研的時(shí)候,就被一起創(chuàng)業(yè)的小伙伴稱為老何了。我對(duì)寫(xiě)代碼確實(shí)喜歡,大概在96年,大三的時(shí)候拿到了高級(jí)程序員證書(shū),算是一樁可以拿來(lái)吹的事。
博士畢業(yè)工作以來(lái),最大的樂(lè)趣就是學(xué)習(xí)和深入思考。所以,從來(lái)不以工作過(guò)程中項(xiàng)目或者業(yè)務(wù)的簡(jiǎn)單或者復(fù)雜而困惑。對(duì)自身的發(fā)展,我一直有一個(gè)明確的指導(dǎo)方針:一步一個(gè)腳印,提升自己解決問(wèn)題的能力,不給自己設(shè)限。我大概在10年前面試一個(gè)40歲的大叔的時(shí)候,就認(rèn)真地思考過(guò),結(jié)論是:我喜歡寫(xiě)代碼,我會(huì)為此堅(jiān)持一輩子。
一、既然這個(gè)項(xiàng)目這么重要,我們就干吧
回歸正題,總結(jié)一下在阿里最近3年的工作。前兩年,我主要在御膳房數(shù)據(jù)引擎團(tuán)隊(duì)做豬頭小隊(duì)長(zhǎng),聊兩個(gè)重點(diǎn)經(jīng)歷的項(xiàng)目。
第一個(gè)就是5k+,一個(gè)通用大數(shù)據(jù)平臺(tái)。剛?cè)ヒ粋€(gè)月就趕上這個(gè)集合京杭兩地的大項(xiàng)目,確實(shí)蠻幸運(yùn)的。在這個(gè)項(xiàng)目中印象深刻的有幾個(gè)地方吧,一個(gè)是立項(xiàng)的時(shí)候參與方案的討論,因?yàn)樯婕熬┖純傻亍⒖绮块T、跨團(tuán)隊(duì)的溝通,各個(gè)團(tuán)隊(duì)的老大難免在一起相愛(ài)相殺,我們一幫小弟在旁邊參與討論。一直相殺到凌晨的時(shí)候,在自由發(fā)言的階段,我實(shí)在忍不住,跳出來(lái)說(shuō):既然這個(gè)項(xiàng)目這么重要,我覺(jué)得我們就干吧。真的是仗著自己在創(chuàng)業(yè)公司積累的銳氣跳出來(lái)說(shuō)這一句。我覺(jué)得大不了就是拼啦。
我說(shuō)完就意識(shí)到這可能給自己的老大帶來(lái)了巨大的麻煩。很幸運(yùn)我老大也早就扯煩了,站出來(lái)承擔(dān)責(zé)任,一時(shí)間各個(gè)老大分別出人出槍,一時(shí)間群情激奮。最后的責(zé)權(quán)分配在20分鐘內(nèi)就完成了,甚至一位老阿里都哭了。
感謝那一晚上的感覺(jué),也感謝阿里給我一幫很棒的隊(duì)友和老大。永遠(yuǎn)記得,后面996兩個(gè)月,在京杭兩地互換出差的過(guò)程中,我負(fù)責(zé)兩個(gè)小模塊的項(xiàng)目管理,我發(fā)揮自己解決問(wèn)題快的能力,哪里有窟窿我就去哪里堵,當(dāng)然,整個(gè)團(tuán)隊(duì)的人都非常強(qiáng)大也非常努力。在最后項(xiàng)目結(jié)束評(píng)獎(jiǎng)的時(shí)候,我拿了個(gè)最佳救火隊(duì)員獎(jiǎng),我真喜歡這個(gè)獎(jiǎng)。
雖然我也是項(xiàng)目的PMO之一,但是除了打醬油,更多的是觀摩和學(xué)習(xí)阿里的項(xiàng)目管理和組織協(xié)調(diào)。這個(gè)項(xiàng)目真的很難,做的過(guò)程中經(jīng)歷了各種妥協(xié),項(xiàng)目完工后我們又?jǐn)鄶嗬m(xù)續(xù)還了一年的技術(shù)債,但是當(dāng)時(shí)那種拼搏自己和燃燒自己成就BIG ONE的感覺(jué),再難重現(xiàn)。后來(lái)也跟一些其他公司的同學(xué)溝通關(guān)于數(shù)據(jù)平臺(tái)構(gòu)建的事情,發(fā)現(xiàn)我們真的走得很遠(yuǎn)。因?yàn)槭菍?xiě)自己的感受,就不表?yè)P(yáng)其他同學(xué)了,要不然寫(xiě)一本書(shū)都可以啦。
二、這不是我一個(gè)人的工作,只是努力使它變得完美
第二個(gè)項(xiàng)目也帶有我自己的強(qiáng)烈特色,我們一直被業(yè)務(wù)壓得很緊。但是對(duì)于引擎層研發(fā)來(lái)說(shuō),團(tuán)隊(duì)成員也有自己的訴求,而且,系統(tǒng)要逐步完善和改進(jìn)。在5K+項(xiàng)目完成后,我們依賴的一個(gè)重要模塊開(kāi)始頻繁出現(xiàn)問(wèn)題,隨著團(tuán)隊(duì)間溝通的深入,我們發(fā)現(xiàn)對(duì)方團(tuán)隊(duì)的不穩(wěn)定和發(fā)展方向不確定導(dǎo)致這個(gè)模塊未來(lái)風(fēng)險(xiǎn)非常高。
我們首先想到的是部署一套新的作為過(guò)渡。在過(guò)渡階段,為了完成業(yè)務(wù)的同時(shí)來(lái)做這件事,我把團(tuán)隊(duì)兩位同學(xué)的一部分業(yè)務(wù)工作承接過(guò)來(lái),騰出人力開(kāi)始做這件事。兩位同學(xué)遠(yuǎn)赴杭州,出差一個(gè)月,把平臺(tái)基本接過(guò)來(lái),保障了我們業(yè)務(wù)的平穩(wěn)運(yùn)行。
隨后,我們調(diào)研后果斷拋棄了這個(gè)模塊的原有實(shí)現(xiàn),調(diào)集團(tuán)隊(duì)的技術(shù)力量重新規(guī)劃設(shè)計(jì)新的模塊,除了替換,更重要的是為了發(fā)展。這一步走出后發(fā)現(xiàn)后面很多東西都活了,數(shù)據(jù)服務(wù)開(kāi)始作為一個(gè)重要的點(diǎn)慢慢從整個(gè)平臺(tái)浮現(xiàn)出來(lái),與數(shù)據(jù)團(tuán)隊(duì)產(chǎn)生更深度的互動(dòng),進(jìn)而隨著原數(shù)據(jù)服務(wù)的不穩(wěn)定,催生了新的數(shù)據(jù)服務(wù)平臺(tái)。
這不是我一個(gè)人的工作,我只是努力使它變得完美。當(dāng)初萬(wàn)分糾結(jié),每一步都步步驚心,現(xiàn)在相信每個(gè)參與這個(gè)項(xiàng)目的同學(xué),心里都是美好的回憶。而且,我們不僅通過(guò)這個(gè)項(xiàng)目成就了自己,更成就了兄弟團(tuán)隊(duì),成就了御膳房的發(fā)展。說(shuō)大了。
三、技術(shù)挑戰(zhàn)是獵物,是機(jī)會(huì),是戰(zhàn)功
在這三年里,我不認(rèn)為自己遇到了很大的技術(shù)挑戰(zhàn),很多事情提前想到,組織技術(shù)專家提前討論,當(dāng)和團(tuán)隊(duì)在一起的時(shí)候,技術(shù)挑戰(zhàn)是獵物,是機(jī)會(huì),是戰(zhàn)功。
舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明我做一個(gè)項(xiàng)目的過(guò)程,例如:我們要實(shí)現(xiàn)一個(gè)限流的服務(wù),就是允許一個(gè)租戶的QPS最高多少。首先需要界定問(wèn)題的邊界,包括:要不要考慮網(wǎng)絡(luò)層攻擊(可能被其他模塊處理掉)、未來(lái)一段時(shí)間業(yè)務(wù)的規(guī)模,系統(tǒng)穩(wěn)定性、架構(gòu)擴(kuò)展性等。
這些問(wèn)題確定后,會(huì)有一系列的技術(shù)方案成為技術(shù)選型,那么如何判斷采用什么技術(shù)方案,當(dāng)時(shí)不是最新最酷的最好的,要考慮將來(lái)部署環(huán)境,上下游環(huán)境。最重要的這是一個(gè)分布式需求。簡(jiǎn)單來(lái)說(shuō),N臺(tái)服務(wù)器共同維護(hù)一個(gè)QPS值,這后面的分布式理論,樸素來(lái)說(shuō)就是CAP,在CAP三者不能同時(shí)滿足的情況下,應(yīng)該降低那個(gè)并保證業(yè)務(wù)的目標(biāo)。
為此,我們參考分布式的BASE模型,降低了一致性的需求,采用分區(qū)和主體配額池結(jié)合的思路解決了大租戶的流量控制,而針對(duì)長(zhǎng)尾租戶采用了另一套控制來(lái)保證精確限流。
同時(shí)考慮第三方模塊和非關(guān)鍵模塊掛掉或者降級(jí)中的應(yīng)急預(yù)案,以及模塊部分宕機(jī)或者機(jī)房斷電導(dǎo)致的服務(wù)不可用,以及某些服務(wù)的單點(diǎn)問(wèn)題等而設(shè)計(jì)完整的穩(wěn)定性方案。當(dāng)然,最后還要考慮擴(kuò)展性方案,如果需求規(guī)模突然變大,但是整體是有邊界的。
總結(jié)起來(lái),整個(gè)項(xiàng)目要有明確的目標(biāo)和階段以及對(duì)應(yīng)的關(guān)鍵指標(biāo),做到可觀測(cè)、可評(píng)估、可擴(kuò)展、可恢復(fù)、以及容易交付給其他人繼續(xù)研發(fā)和維護(hù)。
我不認(rèn)為自己做得很好,但是當(dāng)逐步完善一個(gè)系統(tǒng)時(shí),真的蠻快樂(lè)的。
四、我不認(rèn)為做到35歲轉(zhuǎn)管理是必要的
現(xiàn)在細(xì)想起來(lái),在我的成長(zhǎng)道路上,給我提供技術(shù)指導(dǎo)的大牛真的很少,更多的時(shí)候,我更喜歡向任何一個(gè)我遇到的人學(xué)習(xí),我學(xué)習(xí)的目的不是超越別人,而是超越自己。
轉(zhuǎn)崗到iDST團(tuán)隊(duì)后,我坐在iDST老大的旁邊,有幸耳濡目染研發(fā)和管理達(dá)人的工作,受益匪淺。我一直覺(jué)得,程序員沒(méi)有人能教會(huì),要的是自己的鉆研和用心的學(xué)習(xí)。包括我原來(lái)御膳房團(tuán)隊(duì)的同學(xué)和現(xiàn)在iDST的同學(xué),在合作和交流中,總能發(fā)現(xiàn)那些令你眼前一亮的優(yōu)點(diǎn)和閃光點(diǎn),這如何不欣喜?
另外,我覺(jué)得保持持續(xù)的思考和以開(kāi)放的態(tài)度與其他同學(xué)溝通非常重要,互通有無(wú)。我覺(jué)得我目前最大的技術(shù)優(yōu)勢(shì)可能還是在工程領(lǐng)域,主要是服務(wù)器后端研發(fā)以及數(shù)據(jù)平臺(tái)建設(shè)這邊,主要是思考和經(jīng)驗(yàn)比較多。我會(huì)在理論和實(shí)踐兩個(gè)方面繼續(xù)增強(qiáng)自己的能力。與此同時(shí),我一直在儲(chǔ)備自己在人工智能方面的知識(shí)。得益于我博士論文期間在信息檢索方向的深入思考,我很早就發(fā)現(xiàn)了這個(gè)能讓我著迷的領(lǐng)域。
這里稍微聊兩句人工智能領(lǐng)域,雖然一些人說(shuō)這里面也就是所謂的調(diào)參、特征工程、訓(xùn)練深度網(wǎng)絡(luò)等。這些真的是門外漢才會(huì)這么說(shuō)。真正里面需要的是理性的思維,解決這種沒(méi)有明確的路徑可尋的問(wèn)題需要非常深入的思考、嘗試,經(jīng)歷無(wú)數(shù)次失敗可能有一點(diǎn)小收獲,然后還要把這種小收獲用最精準(zhǔn)的數(shù)學(xué)語(yǔ)言闡述出來(lái),為后續(xù)的研發(fā)鋪平道路。
目前我剛剛讀完NLP領(lǐng)域的一本綜述——《統(tǒng)計(jì)自然語(yǔ)言處理》,正在重新構(gòu)建自己的概率論和統(tǒng)計(jì)學(xué)的知識(shí)體系,盡量做到基本的概念信手拈來(lái),然后找一個(gè)小的領(lǐng)域進(jìn)行深入的思考和嘗試。對(duì)于我來(lái)說(shuō),找一個(gè)點(diǎn)建立一個(gè)模型,改改參數(shù)出一篇論文的誘惑不大,我希望能夠研究前人的研究成果,在理論深度有一定的突破。
在這個(gè)領(lǐng)域,那些談35歲就轉(zhuǎn)管理的程序員可能根本就無(wú)法明白。當(dāng)遇到一個(gè)可以持續(xù)投入精力去鉆研,并且越鉆研覺(jué)得越難的事情的時(shí)候,對(duì)于我來(lái)說(shuō),何其幸運(yùn)。更何況,我不認(rèn)為做到35歲轉(zhuǎn)管理是必要的。管理并不好做,很多人以為管理就是分配工作,技術(shù)人員都是心高氣傲之輩,能力低的根本領(lǐng)導(dǎo)不了,只能領(lǐng)導(dǎo)能力更低的。而且真正的管理和寫(xiě)代碼一樣,也是一門學(xué)問(wèn),一門理論與實(shí)踐相結(jié)合,需要邊探索邊實(shí)踐的學(xué)問(wèn)。人家讓你領(lǐng)導(dǎo),是把自己的發(fā)展托付到你的手里,所以是更重的責(zé)任。
我主要利用上下班路上的時(shí)間來(lái)做機(jī)器學(xué)習(xí)的鉆研,每天大概3個(gè)鐘頭左右,上班時(shí)間主要還是寫(xiě)業(yè)務(wù)代碼,我熱愛(ài)寫(xiě)碼,調(diào)通一個(gè)功能的感覺(jué)真爽!
舉個(gè)例子,《統(tǒng)計(jì)自然語(yǔ)言處理》,我用了將近一年的時(shí)間,在上班路上讀完,在讀到機(jī)器翻譯模型的時(shí)候,深深的迷醉于那5個(gè)IBM工程師發(fā)明的模型。這些模型發(fā)明的過(guò)程,思考的過(guò)程,是我學(xué)習(xí)的對(duì)象。
最后想說(shuō)的是,在阿里,一樣經(jīng)歷繁華,經(jīng)歷迷茫,經(jīng)歷失落甚至冷落,最重要的是守住自己的技術(shù)之心,與大家共勉。
-
工程師
+關(guān)注
關(guān)注
59文章
1570瀏覽量
68514 -
阿里巴巴
+關(guān)注
關(guān)注
7文章
1614瀏覽量
47196
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論