转贴:《程序员》郑柯的文章!
我本人是公司负责提供平台给员工的,读了这篇文章很受鼓舞 - 内部的信息共享,公司的各种内部平台的建设是公司是否可以基业长青的重要乃至主要因素。 我们公司应该向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里面的。
给我们的启示
无论是程序还是公司,架构很重要,就是如何把人员和资源搭成梯子,文化上有让别人更伟大的导向,让一个刚刚进公司的人,可以迅速的做到比他进入其他公司的同龄人获得更多的支持,这才是一个公司的结构上的成功。
好的公司,尤其是非常成功,并且长久成功的公司,一定是在基础机构上面投资最多的公司;一个好的公司,一定要让员工站在自己的肩膀上。
--
郑 柯