一個阿里巴巴碼農的六年回眸

本文由淘寶開放平臺技術產品負責人@放翁_文初 撰寫,它講述了一個個冷冰冰產品背後的活生生的人了,也在講述着一個碼農的六年心路歷程,“技術耐得住寂寞,低谷積累高峯衝刺,主動改變一切。”

10月13日,關於淘寶開放平臺技術部分的分享看到有些同學留言說有這樣的機會和環境是幸運 的,的確在阿里這些年趕上了公司的發展,趕上了互聯網技術的發展,是幸運的,但是背後這個普通的人,從進入公司的低級程序員一步一步成長起來到底是怎麼走 過來的,也許可以讓一些正在走的同學有值得思考的地方,我儘量少加一些自己的收穫在裏面,因爲每個人看到這些場景感到了什麼那就是什麼。

 

2005年:走出國企

畢業4年多在一家通信國企做的順風順水(不是自己能力有多突出,是老闆經常被挖,所以提升的不錯),總感覺有點養老的味道,於是開始在招聘網站投簡歷,沒想到一家叫阿里巴巴的杭州公司聯繫上我去面試,聊下來是類似於後臺運維部門,興趣不在此,就拒絕了,但其實埋下了伏筆。

2006年:一切歸零

剛過完年,那家阿里的公司HR又聯繫我,說這次部門不太一樣,去了,然後說了一些關於Work at alibaba的想法,那時覺得互聯網要比通信企業更有意思,所以不顧家人和未來老婆的反對,辭職去了這麼一家以前都沒聽說過的企業。進公司以後,一切歸 零,工作四年後又從底層做起,雖然忙碌,感覺充實。半年後開始覺得有些無聊,該學的都學到了,剩下的就幹一點常規的活,啥 work at alibaba 又沒影了,心裏落差很大。

2007年:徵召入伍

突然被徵召“入伍”,20來號人被拖到老馬(馬雲)的福地“湖畔花園”創業去了,我的感覺就是 莫名其妙,收購了一家公司(主要做CRM系統框架和模型驅動),然後就開始要搞創業了,不過起碼work at alibaba的說法有找落了。一幫子人窩在3室一廳的房子裏面,不同業務團隊分在不同的小屋子裏,測試和架構團隊在客廳。雖然我是個沒有背景的小兵,但 老大還是給了我足夠的機會,我沒有去做業務支撐,反而成了團隊裏面做基礎系統的,這裏每個人的level都比我高2級,於是我揹着“架構師”的名字開始努 力奮鬥。

2008年:照貓畫虎

菲青老大加盟淘寶,成爲淘寶的首席架構師,菲青組織集團所有架構團隊的同學定期聚到西湖邊上的 “淘咖啡”(現在已經沒了),相互間交流技術,我這毛頭小鬼,託福也被拉了進來。翻着yahoo的網站,看到了flickr(記得今年年初的時候還談當年 的flickr是最能夠成爲今天FB的公司,結果給雅虎浪費了)的開放模式,於是照貓畫虎,還就搞出了一個看起來還有點摸樣的東西。接下來我的主業就放在 這塊上面了,這一年技術成長很快,因爲開放平臺是新事物,安全(數字簽名,授權,加密),數據處理(xml解析各種基礎知識,json的規範),REST 代理服務器實現等等,這些都是互聯網的產物,都非常紮實落地,充實的日子過的總是很快。

2009年:阿里軟件解體

阿里集團的不同公司的氛圍是完全不同的,阿里軟件團隊氛圍還是那種強調自上而下的管理,加上一 些關係糾纏在裏面,我這個苦臉碼農一直都不入流,因此也想換換環境,加上看到當時HSF的成長中菲青老大能抗的住壓力讓畢玄最後堅持下去,心裏還是酸酸 的,但HR和boss的左手大棒(你去哪家公司我們管不了你)右手胡蘿蔔(晉升名額本來就是你的),我能做什麼呢(那些日子的經歷讓我記憶猶新,也許當時 運氣太好了吧,在淘寶快3年多了,每個HR都讓我覺得受寵若驚)。但世事難料,年中的時候突然宣佈公司解體,就這樣我們笑話的說我們把公司搞沒了,很多人 非常傷感,我卻非常開心,因爲我有機會去淘寶了。

2010年:空降淘寶

空降淘寶,雖然新老闆對我能力比較認可,但是淘寶的開放平臺已經有了一個10個左右的小團隊 了,如何融入是最迫切的。我缺乏的是業務,瞭解的是平臺,能力在於技術,於是天天幫助團隊同學打雜,解決問題,慢慢的也用能力證明自己。一直處於一個團隊 攻堅和打雜的角色,技術能力還是得到了飛速的提升,因爲這一年開放平臺正式商業化了,對於基礎平臺的要求非常高。但這一年也有些不好的評價對我,有些同學 覺得我太強勢了,對於團隊成員的發展會起到反作用,順風順水的我依然覺得用技術說話,判斷力取決於技術能力。

2011年:忐忑生涯

經過一年多的基礎平臺建設,整體平臺架構已經比較完善,而我的角色開始顯得有些尷尬,叫架構 師,但業務管不着,技術管一塊,不帶人,幹活自己做。後來這年有個毛頭小夥子聽了我的課死活要加入開放平臺(技術大學第一屆),因此他成了我第一個徒弟式 的同學,然後加上我是淘寶第一個做App OPS(原來運維是獨立於開發的,後來因爲希望給開發更多空間,所以允許有開發有能力的人自己管理系統基礎運維和發佈,這類人被叫做App OPS),另一個還在實習的愣頭小夥子也成了我的徒弟式的同學,就這樣我這個架構師有了一點人員資源乾點可以乾的活。

事情總不按每個人的想象走,最後組織結構調整,開放平臺技術部分人員可以讓我來管,看我是否能 夠留下來,我比較堅定的要求就是我要帶產品和技術兩塊,可以想象的是,老大看着一個從來沒帶過人的P,突然要帶人了,還要帶產品,那有多忐忑。最後爲了風 險可控,開放平臺技術兩個技術核心團隊留給我,其他兩個團隊拆分,給我一個產品經理,其他產品經理還是統一組織管理。我給老大的承諾是:一年,除非老大你 炒我,否則我會讓你覺得放翁說到做到。

2012年:感動着

事情就這樣開篇了,我開始帶人了,開始跑業務了,象塊海綿一樣吸收各種信息,和三淘的各種團隊 打交道,作技術的久了總以爲自己對業務很熟悉,能夠分析出產品需求,當你真實的去做了,去落地了,你會發現這個世界在變,淘寶這個甲方的身份在變,開放平 臺能夠承諾的事情落地是多少不容易。半年裏面,人變化了很多,因爲了解的更多,學會了更多的傾聽和學習,學會更多的謙虛,遇到了很多好朋友UED,測試, 項目總監,這些人真的是爲了開放平臺而不顧我們組織結構調整到天貓繼續支持着,很感動。

最初打算寫這個內容的時候有很多想寫的,但是發現寫完了就是一個亂,呵呵,權當看故事吧。總結幾句話:技術耐得住寂寞,低谷積累高峯衝刺,主動改變一切,找到自己的特點,沒有問題的時候最可怕,不同階段追求不同的收穫,先聽再說,永遠都要清楚你到底要什麼!

下面是自己的一些問答,覺得不靠譜的一笑而過。

一、怎麼看待老闆?

老闆就像老婆,他能容忍你的個性就是最大的幸福,不要期望他成爲你的老媽,對你百般照顧。要換老闆的時候看看離開了他是否一樣找不到“幸福”,如果是,那麼問題在你,“離不離婚”其實不是那麼重要。

二、怎麼看待技術重複造輪子?

碼農那麼多,有時候重複造輪子也不一定是壞事,也許比直接拿別人的東西來用要靠譜,畢竟高P不會分工資給你的兄弟。原則就是對產品負責,對人負責,兩句話很簡單,作技術老大的自己把控和判斷。(做不到只能說明你還處於被技術玩的階段)

三、怎麼看待開源?

當年寫了一個Memcached的客戶端,阿里軟件一直在用,就一直維護和更新,到了淘寶用 Tair了,那個就廢棄不更新了。有時候對於國內的公司的開源,我更傾向於叫做“曬代碼”,只有自己參與,一旦自己不用就Over了。授之以魚不如授之以 漁,多把設計細節和代碼片段分析說明作詳細了就好了,至於開源,對於一般的業務或平臺團隊投入成本太大了(一來自己都保證不了幾時內部都不用了,二來開源 和曬代碼最大的差別就是易用性和文檔及長期更新),專職做基礎設施的團隊可以(操作系統,數據庫,存儲等)。TOP技術分享月結束以後會把幾個核心系統的 設計和細節優化代碼說明曬出來。

四、怎麼看待晉升?

對晉升的人來說:

1.有時候不多想反而就成了。(因爲你腦子只有一個,想多了這個,該想的就沒想了)2.挫折未 必是壞事。(我唯一一次被一棒子打回來的時候,頭暈目眩,現場什麼都好,結果就不給理由的說no,但最後老大一句話點醒:如果不能承受這樣的結果,你的心 胸就還不夠那個level)

對Leader來說:

1.給兄弟們創造更好的環境,你不是管人來的,你是來“創收”的,管人誰都會,“創收”纔是真本事。2.讓兄弟放心的去做事,自己做好各種準備來幫助到他們。(瞭解晉升真實的考覈目標和需求)

一句話:人都要養家餬口,都要付出得到肯定,以心相待。

五、怎麼看待帶人?

我告訴自己最多就只能帶20個人左右(現在就這個極限了),一個團隊必然工作有差異之分,但是 讓每個人都能夠滿意和滿足就需要讓所有人認同這個團隊要做的事情,以及每一步的結果都是團隊的結果,這個時候個人覺得靠“管”其實不太靠譜,更多的是靠 “感染”。“感染”能力隨着精力分散到技術和業務中一定是有限的,當然梯隊化的感染需要每個梯隊環節都能夠做到位,那麼就牛叉了。

一句話:先讓自己相信,別人纔會相信,每個人都相信了,人就不是“管”出來的。(理想很美好,現實很骨幹,有時候自己就說服不了自己)

六、怎麼看待技術兼顧業務?

我第一個小軟件也是修改了flash文件將操作光驅的代碼植入,然後調研了各種業務場景,最後 成功的傳播出去並操縱了一把,那時我就默默的感到傳播纔是關鍵。今天也是如此,我和每個程序員包括我老闆一樣擔心我自己分心到業務上是否會廢了自己的“武 功”,其實取決於:1.你到底code了多少代碼?(你會因爲一個月用叉子吃飯忘記怎麼用筷子麼)2.你到底是喜歡寫代碼做技術,還是爲了生活所迫?(後 者無論你寫多少代碼還是一個沒內功的人)3.寫了10年代碼以後你留下的只有那些代碼和技術入門文檔,還是有更多的設計理解。(你用了hadoop除了會 配置,會修改部分性能代碼,對他適用場景的理解,整個流程的瓶頸點設計,所有分佈式都糾結的問題是否有感知)這麼多年了,爲什麼只有那些paper不斷的 給人啓示去做更多的工程化內容,因爲用筷子吃麪和叉子吃麪沒那麼大的區別。(關鍵是吃的人怎麼理解面難吃的原因)

所以,前面1,2,3都是你在碼農時候做到了,那對業務的理解只會讓你如虎添翼(重要的是更多去學習和傾聽,放空自己的程序員經歷,做個用戶)

七、怎麼緩解項目總監和開發的矛盾?

開發角色:

1.開發要把項目總監的客戶作爲客戶,而不是把項目總監作爲客戶,就和走棋一樣,你會比他更能主動的把控下一招的變化,不會糾結於項目總監不斷的變化。2.量化!如果產品無法量化結果,無非就是需求不明確,所以追問。

項目總監角色:

1.數字是基礎但不是全部。2.多一點興趣愛好,多一點思考。blog當年如果沒有瀏覽量這個數字會怎麼樣?微博爲啥要搞個雙向關注纔可以評論的設置?音樂播放器如何在用戶不點擊like反向收到用戶喜好行爲?

八、怎麼看待平臺產品?

先要活下來,服務好一個產品線,如果沒有任何其他產品線過來,那麼就不要在乎平臺的稱呼,留好 口子就可以了。當有多個產品接入,同樣要活下來,因爲脫離單一業務線爲了更好的平衡個體需求和平臺發展,但重要的是要找到自己有羣聚價值(也就是隻有集成 在一個平臺上,多個業務得到的平臺功能纔會最大化),這樣就業務方就不會獨自建立平臺來快速響應需求。最後如果業務非常繁榮,那麼更多的考慮爲業務方挖掘 業務價值,而不要聚焦於平臺,幫助別人就是幫助自己。(這是平臺永遠都正確的說法)

九、如何學習技術?

不用急着什麼都學,珍惜每一次不同工作的機會,挖深做細,幾年以後回過頭來原來自己積攢了那麼 多!xml解析分成幾種模式,各種解析的優劣?http 1.1協議中的Header中的緩存設置,返回頭裏面的trunked什麼用途?分佈式計算關鍵問題是什麼(調度,協同,數據交互)?應用壓力測試瓶頸如 何評定,導致瓶頸的代碼所屬操作可能分成哪幾類? …… 要留下更多疑問背後的答案,而不僅僅是那一點代碼,那一些入門文檔。

碼農活下來很容易,活的好不容易,好像各行各業都是這樣,所以碼農和其他行業的人一樣,技能僅僅是一方面,更重要的是人的素質和能力,你要活的被動,那麼生活就會趕着你走,你要活的主動,那麼你就可以走走看看。

結語:今天上午爬山回家,公交車上看到一對夫妻都是盲人,心裏一陣感慨,如果自己看不到,還有活着的勇氣麼,因爲我們今天那麼脆弱的抱怨很多事情,當你看不見的時候那是怎麼能夠抗得住的打擊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章