代码改变世界

尊重反动派(上)

2009-04-27 12:11  乱世文章  阅读(158)  评论(0编辑  收藏  举报

尊重反动派(上)
  ——再说阿朱的《走出软件作坊》


1、历史中
=====

我读熊逸的《春秋大义》时,便感叹了:无论是怎样的谬论,在历史中都能找到足够的论据。以
历史为大背景来看,正确与错误并不重要,重要的是哪种论调更符合发言者的利益。

如是,我现在也甚少与人论长短。在盛大工作的时候,Soul曾给我说:大多数的争论不是为了正
误,而是为了面子。这句我给写到了“架构师的能力模型”图中,作为架构师的修养之一,如何
看到“什么是正误,以及什么是面子”,是需要修炼的。

如同《春秋》被截成文字片断之后,各个部分就互相矛盾,而又能为甚至互悖的观点提供支持一
样,当一本书或一句话,失了去前提与上下文环境,仅仅只看文字的表面,便可以被不同的解释
者佐为谈资。如此我们追寻一本书的宏旨,便显得无比重要。在我看来,作者也可能说错话,也
可能想不清楚,写出来的文字如果有违于宏旨,那错就是错了,指了出来便是,不至于伤及作者
本心与本意。如果作者的宏旨便不对,那谈也不必谈,开骂就是。这就是出来找骂的,怪不得人。

历史中,出来找骂的多了。但开骂的人先看看别人的宏旨的,不多。

2、软件作坊
=====

《走出软件作坊》这本书是我荐给博文的。当时我只在阿朱的博客上读过几篇,觉得写得很真实。
我认为这种真实,是走过那些年的工程历史、公司经营的程序员与老板们都深有体会的。于是借
了一次机会,把阿朱推荐给博文的周筠老师。随后的进度,远出我所能料。这本书只用了不到半
年便完稿、发布了。

很幸运,这本书还是秉承了我荐它时的那种文字风格和中心思想。这种思想很简单,就是“反思”。
走了很多的路,许多人只会停下来找个地方喝喝酒、解解乏。而他们喝酒解乏的目的,是为了明
天走更多的路。而反思则不是这样,反思是“回顾所来之径”,看看什么地方不稳,什么地方有
坑,怎么掉下去,又怎么爬起来。反思就是这样,看到好的,也看到不好的。因为大家都从泥坑
里爬过来,走出来,所以反思就会看到脏东西。如果真有人一路平顺,他的反思也就失去了价值,
因为他成了特例。

软件作坊承认了一种公司和团队模式的存在:公司小,生存危机大;经验少,连写代码都还在学,
更不要谈架构、设计、工程之类的风花雪月。这种公司如果要去接大公司的单子,就还得看客户
挑剔的脸色,人家会说:我不是不给你们做,是给了你们我不放心。

“不放心”,需要依据吗?不需要的。客户的“不放心”没法衡量,不是象拿到名片去唬人那么
简单的事。很多工程专家开口闭口要原则、讲量化。你问他“客户不信任我们,怎么办”,他就
没了办法。因为大公司没这个问题,服务于大公司的顾问专家也就没有这个问题。所以大公司拿
得到单,小公司拿不到。——那么,接下来,小公司如何生存?

阿朱的《走出软件作坊》从根本上,就是从一个小公司、小作坊如何对外建立公司信任,对内建
立公司信心讲起。细节到人、到事,到方法。但是,看不以小作坊的背景,就觉得这些人、事与
方法都是啥白活,都没有“工程理论依据”。

3、我为啥好评《走出软件作坊》
=====

前些天给《程序员》写了一篇评阿朱这本书的文章,是《本来面目——大教堂、集市,与作坊》(*1),
发在09年3月份的那一期上。这篇文章对比了教堂、集市与作坊三种工程团队的结构与思想、目
标。这是我第一次站在这个角度上来想问题:为什么无论是哪种工程模式,放在国内去用的时候,
都会有这种那种的问题。注意我上面说的是“哪种工程模式”,而不是“工程方法”——我承认
一些具体的工程方法很有效果,而我问的是那些搬来抄去的“工程模式”为什么有问题。

这个问题其实到某天我与韩磊在ZDNET的采访中才突然想明白。我当时给韩磊说:我们讲人情讲
面子,但哪本书是讨论到人情面子问题的呢?我们的团队——就是基于这样的人情面子建立起
来的团队,在一些根本不讨论到人情面子问题的方法、模式与学说的引领下,怎么做?

这个问题引发了我对《走出软件作坊》和《梦断代码》的重新品读。的确,如o6z所说(*2),软件作
坊是“研究国内软件开发落后现状的最佳标本”,但o6z说的是阿朱的“做法”落后,而我要说
的是,我们的工程对象、环境的落后。例如我们从来没有想过,客户其实不懂UML,却又要求我
们的工程师去向客户展示我们的UML图——因为这样展示,才显得我们正规而专业。

跟客户的沟通,不单单是建立我们“正规而专业”的印象,还要保障沟通的“有效性”——这个
我在《大道至简》中强调过。客户认为你正规而专业了,却对你所描述的“项目内容”一无所知,
那项目的成功又从何谈起?所以,在这种情况下的最佳实践通常是:开会时我们向客户的代表及
BOSS展示我们的UML,以表现我们毫不逊色于其它XX大公司,而会议下,该秘谈的秘谈,该小话
的小话,总之让客户知道我们最终要做成什么样子,并且为这些秘谈与小话而签下订单。

o6z当然可以说这样的行为是“丑陋的”,但可有想过其背后的环境之丑陋?所以我在《本来面
目》一文中所说的,就是那些(我们的现实)工程的本相:可能丑陋,可能落后,但我们还是要
挣钱吃饭。

07年的SD2C大会里,有一位国企的高工问我,说他的一些想法总是无法推行,因为在企业组织结
构里,有一些部门在设立上就是跟他对立的,而那些人跟他也对立。所以,大多数情况下问题不
是他想要做的对或不对,而是根本就不可能被接受。我当时跟他说,这就是权力、权利之争,不
是工程本身的问题。解决它的方法,就是清洗掉那些不利于你的组织与结构。你可以上窜下跳,
可以通过手段换掉那些人,或者成立更有实权性质的机构……总之,你要么改变环境,或者改变
目标。体制上不对,你就动体制,要么包容它,要么干掉它。这就是权术。我当时说到这里的时
候,那个高工汗都下来了。我说,结果要么是你被干掉,要么就是你把事干成。但是,这些与工
程本身无关,这是你的环境中的问题。

丑陋吗?现实吗?清理环境谈何容易?那可是抛头颅洒热血的事。所以我在《本来面目》一文中
说“权术可以弄,道理也要能讲”,那是委婉的,没这么血淋淋。


"下篇"在这里……


==========
  (*1)这篇文章已经公开了:http://blog.csdn.net/aimingoo/archive/2009/04/23/4104813.aspx
  (*2)o6z兄的评论:http://ozzzzzz.javaeye.com/blog/361692