轉貼:《程式員》鄭柯的文章!
我本人是公司負責提供平台給員工的,讀了這篇文章很受鼓舞 - 內部的資訊共用,公司的各種內部平台的建設是公司是否可以基業長青的重要乃至主要因素。 我們公司應該向Google和微軟那樣,提供越來越堅實的肩膀,讓員工可以站在上面成就事業!
今天是鼠年第一天上班,心輕氣爽,上海的天氣少有的好,天空少有的藍。
中午從MountView過來的Google做PageRank演算法的朋友陽萌,和大家一起去吃水餃。傳統行業的確比互連網行業傳統,就算我們已經開始上班,餐館還堅守者初八上班的傳統,害得我們繞交大一周才找到一家開著的館子。在吃飯期間,我們不可避免的聊起了Google,當然還有微軟。
基礎設施
Google和微軟,從大的角度來說,他們很像:他們都是軟體公司。但軟體公司多了,Oracle也是軟體公司,Adobe也是,Netscape
也是,還有很多很多的軟體公司,但Google和微軟和他們有都不一樣,顯得很另類。從行業來說,微軟主營的是作業系統和辦公套件,Google專註互連網上的搜尋,看似行業不一樣,但他們在不同的行業又有一點相同。
這一點相同的地方,就是他們都是平台供應商。
平台這個被濫用的詞挺難準確的表達我想表達的意思的。我要說的就是,就是他們都希望做好東西,讓別人在在自己的基礎上做開發,而不僅僅滿足於別人用自己的應用程式本身。做為公司,它們是這樣對待外部的使用者和夥伴的,但更重要的是,他們也是這樣對待自己的員工的。
比如說Windows,首先要說,他是個不錯的應用程式,否則也就沒有它做平台的份兒了。但他真正的成功是讓開發人員在上面開發應用。如果我們看到微軟內部,內部的各個部門互相提供大量的編程介面,這成就了微軟內部的很多的創新。在微軟內部,大家都爭著為其他部門提供更好的"編程介面"好讓他們用自己的服務。也就是說,在微軟裡面,自己可以在其上開發的"平台"很多,所以可以做出更好的東西。
Google的搜尋當然不錯,但看到他的背後,也是一個大的平台,讓Google的工程師可以更高效的開發程式。比如GFS(Google File
System),就提供了便宜的,巨大的,高容錯的,高效能的儲存。這樣的平台,估計現在全球範圍內不多。還有Mapreduce,這個讓一個程式並發的跑在數萬台電腦上的程式架構,讓一個剛剛加入公司的程式員就可以操縱數萬台電腦一晚上處理到幾個Terabyte的資料;再比如說Bigtable這樣的東東,巨大的儲存結構。
這些東西,借用陽萌,其實是一個公司提供給員工的基礎設施。
放大個人的力量
在微軟和在Google的人,或許和在很多的成功的大公司裡的人一樣,都有種交織在一起的幸運感和失落感,至少我是有的。幸運你的是,這個環境是如此的完美,幹什麼都有很多的工具,很多的知識庫,還有很多團隊在支援者自己。其中分工是如此之細,每個分工上都有最專業的人用最高效的方式提供支援。
比如在微軟,最喜歡的一個內部網站就是http://toolkit,各種各樣的內部的小工具,全是微軟平台上的,工程師自己解決自己的問題寫的;
如果要建個有新的郵件地址,隨便誰都可以馬上在autogroup裡面申請一個abc@microsoft.com這樣的郵件,三分鐘不要,就發行就緒到互連網上去,內送郵件了;要解決問題,近百萬篇知識庫文章,找什麼有什麼的感覺;想學東西,內部的培訓資料好像比發布出來的1000都多,看也看不完;就算找人,各種牛人一把一把的讓你問。總之,很多人都會覺得在這個公司做一個工程師真幸福。
失落感也同時在於此。優秀的公司是個系統,在系統裡面,每個人都很偉大,離開了系統,離開了支援,自己頭上的光環就立刻消失,才發現幹什麼為什麼都這麼難,幹什麼都沒有現成東西支援著自己。所謂橘生淮南則為橘,橘生淮北而為枳。有自知之明的人應該知道,自己只是那一株橘子,而真正偉大的是土壤。
陽萌也有類似的感慨。Google內部的好的資源太多,外面有的,Linux陣營有的,Google內部都會自己實現一遍,讓自己覺得這裡什麼都有,自己建立在這些平台上面可以做出來的東西,比自己不用這些資源的產出大不至百倍。這感覺就好像用彙編也能寫東西,用Windows下的Visual
Basic也能寫東西,但是有了好的平台和工具,畫同樣一個視窗花的時間是完全不同的。這也就證明了Windows+VB是晶片+彙編好得多的平台。但問題就在於,所有這些好東西,根本沒有辦法拿出來用。
做加法還是做乘法的公司
一個好的公司,不能是做加法的公司。不是說一個人可以產生一塊錢,是個人可以產生十塊錢的公司。一個部門產生一塊錢,加一個新的部門產生兩塊錢。
好的公司一定是做乘法的公司。4個人可以產生4塊錢,5個人應該就可產生8塊錢。這個乘法的基礎,就是大家都在做基礎設施,自己站在別人的肩膀上,也讓別人站在自己的肩膀上。
微軟和Google的不同
但很顯然,微軟和Google支援員工的基礎設施還是有很明顯的區別的。
微軟更多的還是在封裝好的軟體的層面。這和微軟過去30多年的積累有關。比如微軟裡的一個工具,可以方便的做出單機,或者區域網路環境的好的系統 -
微軟工具的快速開發是被業界稱道的,但是他沒有辦法把自己的資料中心向員工開放,因為,從本質上來說,微軟不是一個圍繞著資料中心起家的公司,微軟的資料中心的成本,也不足以支撐這個體系。畢竟,在微軟誕生的年月裡,現在規模的資料中心的概念還無法想象。
而Google更多的是在於服務上面。Google從第一天就是建在資料中心基礎上的公司,他的基礎設施顯然也是對於所有的員工開放的。一個普通的工程師擷取的支援,不是一段代碼,而是跑著一個服務的上萬台電腦。有種說法,Google已經成為世界頭幾大的PC製造商了,只不過他們的PC都是自己用,而不銷售而已。
如果從這個角度上來說,微軟的支援是一節電池,一個發動機,可以組裝成一個個玩具車;而Google的支援更像一個交流電網,一個電話系統,可以做出基於這些網路的應用。而沒有這些模組支援的人,好似在森林裡赤手空拳的找到了一根木棍。
所以微軟依然會在他擅長的軟體領域取得巨大的成功,無論是安裝在桌子裡的電腦,放在硬體裝置上的軟體,而Google則會在圍繞互連網資料中心的領域取得成功。這些,都是可在公司的DNA裡面的。
給我們的啟示
無論是程式還是公司,架構很重要,就是如何把人員和資源搭成梯子,文化上有讓別人更偉大的導向,讓一個剛剛進公司的人,可以迅速的做到比他進入其他公司的同齡人獲得更多的支援,這才是一個公司的結構上的成功。
好的公司,尤其是非常成功,並且長久成功的公司,一定是在基礎機構上面投資最多的公司;一個好的公司,一定要讓員工站在自己的肩膀上。
--
鄭 柯