软件随想录(local.joelonsoftware.com/wiki)-2001年10月14日 为非我发明症辩护 - In Defense of Not-Invented-Here Syndrome

2001年10月14日 为非我发明症辩护 - In Defense of Not-Invented-Here Syndrome

 

The Joel on Software Translation Project:为非我发明症辩护

From The Joel on Software Translation Project

为非我发明症辩护

作者:周思博 (Joel Spolsky)
译:Paul May 梅普华
Sunday, October 14, 2001
属于Joel on Software, http://www.joelonsoftware.com

猜谜时间到了。

Copley_Square.jpg

1.程序代码重用是:

a)好的
b)不好的

2.重新发明轮子是:

a)好的
b)不好的

3.非我发明(Not-Invented-Here)症是:

a)好的
b)不好的

当然啰,每个人都知道应该要善用别人的工作成果。所以正确答案 当然就是1(a) 2(b) 3(b)。

确定吗?

别说得那么快!

非我发明(NIH)被公认为典型的管理病状,指某个团队拒绝使用不是自己创造的技术。NIH症的患者显然只是很小家子气,只因为没办法居功就拒绝为整体组织的利益贡献(对吧?)。你可以在当地大书店的沉闷商业史区找到一堆故事,说愚蠢的团队花了几百万美元和12年的时间,却只做出某些只要9.99元就能在Egghead(译注:在线零售商)买到的东西。任何人只要有注意过去三十年间电脑程序设计的进展,就会知道重用是所有现代电脑系统的圣杯。

没错,我也是这样想的。所以我在做第一版Visual Basic for Applications的项目经理时,就很小心的联合了四个(注意是四个哦)微软内不同的团队,要做出Excel VBA里的定制对话盒。整个想法非常复杂而且各部门间相互牵连。有个叫AFX的团体在制作某种对话盒编辑器。然后我们会利用OLE团体新写的程序把一个应用程序嵌入在另一个程序里。而Visual Basic团队则是提供里面的程序语言。经过几星期的协商,AFX和OLE还有VB团队原则上都同意这个作法。

我去到Andrew Kwatinetz的办公室。他当时是我的经理而且我知道的一切都是他教的。「Excel开发团队绝对不会接受这个方法,」他说:「你知道他们的格言吗?『找出相关性,然后去掉。』他们绝对不会接受这么不独立的东西。」

真-有-趣-啊。这事我竟然不知道。我想这解释了Excel团队有自己的C编译器的原因了。

现在我确定很多读者已经笑到在地上打滚。「微软真是笨啊,」你会这样想「他们拒绝用别人的程序代码,而且只是为了一个产品还自己做编译器。」

别说得这么快,老弟!Excel团体粗鲁的独立心态意味著他们总是能如期上市,而且出来的程序代码都有一致的高水准。另外他们的编译器(由80年代开始的)会产生pcode,所以不必修改就能在Intel电脑和麦金塔68000晶片的系统上执行。pcode也使得执行档在Intel平台上只有原本的一半大小,所以由软盘载入时能更快启动而且需要较少的内存。

「找出相关性,然后去掉。」当你在一个非常非常优秀,有著伟大程序员的团队工作时,其他人的程序坦白说都是有虫的垃圾,何况其他人都没法子准时上市。如果你是法国蓝带学院的主厨,需要新鲜薰衣草时你会自己种而不是去菜市场买,因为有时候新鲜的薰衣草可能会缺货,有时候店家可能拿不新鲜的薰衣草假装新鲜卖给你。

事实上最近的网络热潮中,一堆装内行的企业作家说未来的公司会完全虚拟化,公司变成只有几个时髦的家伙待在起居室里喝著白葡萄酒,所有事情都外包出去做。这些换气过度的「梦想家」并没有注意到市场机制是为所增加的价值而付钱的。一个客厅加上两个雅痞,向A公司买一套电子商务引擎,拿B公司做的货来卖,再找C公司处理库存和送货,客户服务则交给D公司,这种作法实在没有增加什么价值。事实上如果你曾经把很关键的业务拿去外包,就会了解外包其实是个地狱。不能直接控制客户服务,客服就会烂到不像话,烂到像某人在网志上写的,想在电话公司找个人(任何人都好)去做些最最简单的事都办不到。如果物流外包出去,你的物流包商或许对即时送达会有不同的认知,而你的客户就会不太高兴,可是你一点办法都没有,因为重新找一个物流包商要花三个月。何况事实上你根本不会知道客户不高兴,因为他们找不到你,因为你设立了一个外包的客户服务中心,宗旨就是不要让自己听到客户的声音。至于你买的电子商务引擎?绝对不可能像Amazon用obidos做的那么有弹性,obidos可是人家自己写的(否则Amazon跟买那种东西的竞争者相比就没有优势了)。另外也没有现成的web服务器在速度上比得过Google自己亲手制作并最佳化的服务器。

很不幸的这个原则似乎与「重用程序代码好,重新发明轮子坏」的想法直接冲突。

我能给的最好建议是:

如果是核心的事业功能,不管是什么都要自己来做。

找出你的核心事业能力和目标,然后在公司内执行。如果是家软件公司,写出优越的程序代码就是成功的方法。公司餐厅和光碟压制都可以外包出去。如果是家药厂,就去写药物研究的软件,可是不要写自己的会计软件。如果是家网络会计服务公司就写自己的会计软件,不过别想做杂志广告。如果有客户的话就千万不要把客户服务外包出去。

如果你在开发电脑游戏,而且地图(plot)部份是你的竞争优势,大可去用其他厂商提供的3D程序库。不过如果游戏特色是很酷的3D特效,3D程序部份最好自己来。

我怀疑这个规则唯一的异常,就是当你自己的人完全比不上别人,不管自己做什么都会失败。没错,这种地方很多。如果是这种情况,我就帮不上忙了。

讨论

这些网页的内容为表达个人意见。
All contents Copyright © 1999-2006 by Joel Spolsky. All Rights Reserved.

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值