一個阿里巴巴程序員的心路歷程

0 評論 18172 瀏覽 0 收藏 18 分鐘

  來源:創業家 作者:@放翁_文初 淘寶開放平臺技術產品負責人

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,測試,項目總監,這些人真的是為了開放平臺而不顧我們組織結構調整到天貓繼續支持著,很感動。

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

———————

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

 一、怎么看待老板?

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

 二、怎么看待技術重復造輪子?

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

 三、怎么看待開源?

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

  四、怎么看待晉升?

  對晉升的人來說:

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

  對Leader來說:

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

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

 五、怎么看待帶人?

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

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

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

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

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

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

  開發角色:

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

  項目總監角色:

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

  八、怎么看待平臺產品?

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

  九、如何學習技術?

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

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

 結語:

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

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!