Tim Bray 最近的一篇博客文章, Doing it Wrong,在最近几天受到了广泛的关注和议论。 在这篇博客里,Bray 对两种软件开发过程进行了比较,一种是那些面向Web开发的创业公司使用的(大概意义上的)轻量级的敏捷开发方式,一种是受大企业采用的相对正规的、重量级的开发过程,观察到了如下的现象:
这些工作在Web领域的人,他们几乎不知到ADO或UML或JPA都代表什么意思,但他们却开发出来很好的低成本的、低风险的系统,相对来说,在那些大企业里,他们永远做不到这些。 在那些高度灵活和快速成长的创业公司里,情况更是如此…
这真是让人难以接受。 世界财富1000强里的那些企业正在流血,他们错失了大量的超越自己和完善自己的机会。 我并不想说软件开发是一种唾手可得的过程,因为如果软件开发水平的差距可以简单的弥补的话,这样的弥补早就会发生了。 但事实上,这种差距如此的大,报应是如此的强烈,现在已经到了我们需要严肃的看到这个问题,需要我们去做一些投资去消除这种差距… 这个问题也许是我这种职务的人目前最需要去做的事情。
Bray 然后尝试着去探索发生这种巨大差异的原因,并且认为,在企业中,技术问题和文化问题是导致不断增长的开发代价的原因。
Doing it Wrong 这篇博客的读者们已经指出,Bray 的分析中疏漏那些大量的创业公司最终是倒闭了的。 另外的一些朋友指出,受风险投资控制的创业公司,他们对企业事务掌控的很少,他们必须很小心的计划如何使用这有限的资源:经理必须在软件项目动工之前计算出需要的投资和完工时间,开发人员呢?他们只能按照这种计算好的要求去做他们的开发工作。
企业主和代管人
然而,Bray的分析和人们对它的评论中,在说明为何软件项目的成本和质量上有如此大的差异的问题上, 我认为,漏掉了一个重要的因素。 这种差异,归根结底,并不是由于他们分别属于大企业和面向Web开发的创业公司的原因,而是两种不同类型的管理人和开发者之间的问题:企业代管人和企业主(企业所有人和职业经理人)。
从商业的角度去看—Bray的主要观点—企业代管人使用的是别人的钱,而企业主花的是他们自己的钱,或者说至少他们非常慎重的和切身的考虑如何在一个项目上投资。 更通俗的说,业主通常会有很强的意愿让他们的客户满意,从财务上考虑或是从单纯的技术追求上考虑。 这样,对于业主来说,高效和压缩成本并不是他们简单的行动指标。 而企业代管人很少有让他们着急的工作目标。
大企业和创业公司里都存在企业主和企业代管人。 我曾经在几个的很大私有公司里工作过—这些公司都是由几个合伙人管理的,而不是有无数的股东管理的—他们始终坚持很朴素的软件开发过程; 我也在一些有由那些没有切身得失和职业焦虑感的职业管理人管理的大公司里干过。 还有,尽管是一些创业公司,尽管他们的员工有着强烈的愿望使企业成功,但风险投资人却让他们的简朴创业的作风成为一个遥远的概念。
企业主和敏捷开发
我发现,企业主类型的公司 喜欢在项目开发中使用敏捷的开发原则:举个例子,他们会对自己的钱包有绝对的控制,而你,作为销售或者是顾问,如果你的工作成绩不高或没有持续的进步,就不会从老板哪里得到很好的回报。 这样往复,是一种良性循环。 在这种背景下,开发人员都会得益于这些敏捷开发原则。 另一方面,企业主对一些短期的看不到回报的企业项目会非常的谨慎,不会轻易投资。 这样一来,某种程度上,出现了像Bray描述的那样:这些因素决定了这些企业采用的技术路线。 结果是,成功的企业主们关注的是软件的可持续维护性和造价,敏捷原则能够更好的对需求变化作出应变,更适合这种环境下的企业们使用。
企业代管人,相反,他们很少有企业主的那样的动力:从商业角度上说,企业代管人通常会每年一次的或每季度一次的根据绩效获得红利或晋升,这和长远的角度上看问题是矛盾的。 企业管理人同样很少会把自己的前途和一个项目的成功绑在一起:如果这个项目失败了,他们只有再找个项目或换个公司就行了。 企业主关心他们的客户,而管理人关心他们的老板。 这样一来,代管人相比较更注重决策的稳妥:他们的这种处境决定了他们不能让项目的失败对自己地位有所损害。 企业代管人同样很少热心于迭代开发、持续集成、可测量产出原则,一部分原因就是他们是按固定的周期拿固定的薪水的。 而企业主是没人给他发稳定的工资的:他们必须时刻想着如何从自己面前的客户那里能到自己的酬劳。
Bray 提到的 Basecamp 就是这样的一个例子; 那种情况里,所以的开发人员其实都是公司一小块的拥有者。 他们有着明确的动力去让软件朴素整洁,易于维护,这些于是就影响了他们的技术选择。 而另一端,那些大规模的政府投资项目,所有人其实是无组织的纳税人,几乎每个人都是项目的一个代管人。 Bray 提到的那些引起轰动的失败项目很多属于这种情况。
这两种极端类型公司中的雇员,多少都有愿望他们的公司的决策正确。 这“最好的”决策并不一定都会导致节省开支或者使用最合适的技术方案。 是否是“最好的”是由环境决定的,人们可以根据不同的环境定义自己喜好:一些人创业公司的人在他们的日常工作中极力推荐一套技术方案,而晚上自己在公司里使用的却是完全不同的另一套方案。 在一种环境里,他们是代管人的角色,而另一种环境里,他们是企业所有人,这就导致了不同的动机和决策。
我们都应该成为企业主吗?
从企业主和代管人的视角看这个问题,我们会发现Bray的博客中提到的问题实际上是一个很老的商业问题:一旦一个公司开始招募员工,或经理人,那么,这群带着不同的心思和动机的元素就会进入公司文化中。 虽然只有合伙人的公司效率很高,但没有雇员你就很难成长壮大。
软件开发是同样的道理,即使是在开源软件项目里。 单干或者带着几个合伙人或者几个关键持股人一起开发是一种理想的情况,当你开发出的软件项目被人广泛使用时,这种理想状态反而会制约公司的成长。 我对这种处境没有个人的经历,但你可以想象,那些大的开源项目,例如Linux kernel 或 Eclipse IDE,它们需要比那些几个人开发出来的小项目需要更多的资源。
你必须接受这样的现实,损失一些效率,换来的是更壮大的企业,为更多的用户服务。 很多公司都是这样,从微软到谷歌: 谷歌拥有两万多怀着不同动机的员工,
而技术决策者只有5个。
我们当然不能全部都是企业所有者,但一个企业可以逐步的让他们的员工感觉像是个企业所有者。 敏捷开发提倡“产品拥有人”或更甚“企业拥有人”的概念,聪明的公司可以在商业目的上也使用这种方法。
有一点还必须认识到,企业主虽然有着好的动机,但他们未必就能做出正确的决策。 重要问题上的错误的决策会让一个公司倒闭,让企业主损失惨重,让他们的希望破灭。
你是否同意,用“企业主”和“管理人”如何做技术选型的角度也可以解释Bray所提出的问题呢? 你对Bray的这篇博客有什么看法?
About the Blogger
Frank Sommers is a Senior Editor with Artima Developer. Prior to joining Artima, Frank wrote the Jiniology and Web services columns for JavaWorld. Frank also serves as chief editor of the Web zine ClusterComputing.org, the IEEE Technical Committee on Scalable Computing’s newsletter. Prior to that, he edited the Newsletter of the IEEE Task Force on Cluster Computing. Frank is also founder and president of Autospaces, a company dedicated to bringing service-oriented computing to the automotive software market.Prior to Autospaces, Frank was vice president of technology and chief software architect at a Los Angeles system integration firm. In that capacity, he designed and developed that company’s two main products: A financial underwriting system, and an insurance claims management expert system. Before assuming that position, he was a research fellow at the Center for Multiethnic and Transnational Studies at the University of Southern California, where he participated in a geographic information systems (GIS) project mapping the ethnic populations of the world and the diverse demography of southern California. Frank’s interests include parallel and distributed computing, data management, programming languages, cluster and grid computing, and the theoretic foundations of computation. He is a member of the ACM and IEEE, and the American Musicological Society. |
对于这篇文章,你的反应是: