一個阿里巴巴碼農的六年回眸 | 人人都是產品經理

 2012 年 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 什麼用途?分散式計算關鍵問題是什麼(調度,協同,數據交互)?應用壓力測試瓶頸如何評定,導致瓶頸的代碼所屬操作可能分成哪幾類? …… 要留下更多疑問背後的答案,而不僅僅是那一點代碼,那一些入門文檔。

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

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

鏈接:http://kb.cnblogs.com/page/160480/

給作者打賞,鼓勵TA抓緊創作!