简单之美:软件开发实践者的思考
上QQ阅读APP看书,第一时间看更新

2.4 最好的软件开发方法

2.4.1 中庸

最好的软件开发方法,就是最适合企业文化的软件开发方法。而企业文化的建设,也离不开软件开发的实践。

企业文化包含哪些内容呢?我认为,最重要的有两个:一个是企业经营者和管理者的价值观;一个是组织成员的结构和背景。这两个都与人有关,而前者对企业文化的形成更是起着决定性的影响。

场景故事点评:

孔如之强调他的新方法,并不是在排斥敏捷方法。例如,同样是迭代开发,同样是每个迭代递交一个可用的程序。但是,孔如之更加关注迭代活动的实质内容,这使他不断地思考新的实践方法。例如,收集能力评估的历史记录、长期培训、发现和培养软件开发人员的技能、新的考核方案等。这些新的实践方法,是他在探索什么是最适合企业文化的工作方式上的努力。

在我们的案例中,孔如之在不断地宣传自己的价值观,例如,公平、有趣、有意义、积极的文化气氛等。这些价值观念对于TFC项目团队形成一种核心凝聚力是有益的。

当然,孔如之本质上是个纯粹的技术人员,思想上逻辑严密野心勃勃、行动上简单而固执。这给他带来了一些工作上的阻碍。我们在以后的场景中可以看到这个问题。

企业经营者和管理者的价值观,是评判组织成员价值(从组织的角度)的标准。在现实中,那些与价值观相左的贡献,常常会因为一些狭隘的认识而变得毫无意义。比方说,保守稳健的价值观会排斥激进创新,崇尚残酷竞争的价值观会排斥内敛独善等。

价值观的狭隘,会造成不同价值观之间的频繁冲突,会造成大量人力资源的浪费。我提倡的是兼容并蓄、博采众长的价值观。这种价值观,在软件开发实践中是很少见的,在东方人的实践中更少见。

要形成兼容并蓄、博采众长的价值观,需要站在一个更高的层次上,需要具备一种为敌人辩护的精神。

伏尔泰有句名言:“我可以不同意你的观点,但是我誓死捍卫你说话的权利”。为什么呢?因为现在你失去了说话的权利,那么将来我也一定会失去说话的权利。

中国近代史上的蔡元培先生也站在这个更高的层次上。蔡先生是清朝的翰林,1916年被北洋政府任命为北大校长。他提倡思想自由、兼容并包。他有句名言:“我们教书,是要引起学生的读书兴趣,做教员的不可一句一句或一字一字地都讲给学生听,最好使学生自己去研究,教员不讲也可以,等到学生实在不能用自己的力量去了解功课时,才去帮助他。”这种创新的思想估计在21世纪还少有人能真正理解。五四时期,在北大任教的有留洋的先锋(徐志摩)、有留着长辫的怪才(辜鸿铭)、有来自乡间的旁听生(沈从文)、有自学成才的落榜生(梁漱溟)。不拘一格用人才,才为中国的巨变奠定了思想基础。

企业经营者和管理者,应该清醒地认识到,企业需要的是人的技能,而不是技能发挥的形式。如何兼容并蓄、博采众长,应该是我们最应该关注的问题。

十几年前上大学的时候,我和哲学老师关系不错,经常一起聊天。有一次聊到了中庸之道。

他告诉我,中庸,不是僵硬地居中于两个极端,而是一种非常动态和灵活的平衡。就像秤砣:秤砣在秤杆上来回移动,最终使重物与秤砣保持了平衡。

换句话说,目标和能力是客观存在的两端,中庸之道就是这两者之间的平衡点。一旦找到了这个点,目标就容易实现了。

每个企业都有自己的平衡点(各种动态的变化都达到一种稳定),找到那个点,并有意识地应用产生稳定的规律,就是中庸之道。对于软件开发来说,中庸的解决方案,常常是最合适的软件开发方法。

中庸之道,也会在一个范围内进行调整,调整的结果一般会趋向于更加合理。但是,坦白地说,中庸之道没有足够的创新精神。而且,即使在一个恶劣的情况下,要打破已经建立的平衡也是很困难的。

所以,我们一方面要追求中庸之道,另一方面要追求创新精神。这是“破”与“立”的辩证,两者并不矛盾。

我们知道,很多企业中正在使用的软件开发方法,往往没有经过系统的规划和思考。它们是在企业发展的过程中,逐渐沉淀下来的。如果追溯历史,我们会发现,某个方法,可能是某个特定时期某个人的临时决定,也可能是某次会议上的一个妥协方案。

我们追求中庸之道,是希望通过稳定来形成企业文化。我们追求创新精神,是希望企业文化不会成为发展的阻碍。自然形成的中庸之道,往往是不可取的。

CMM为企业文化的建立贡献了自己的价值,它尝试建立一种科学的软件开发方法。这种尝试是开创性的,所以常常伴随着剧痛;换句话说,实施CMM,会使以往的开发方法受到全方位的挑战,各种显性或隐性的激烈对抗将层出不穷。

纵观历史,文化的形成,往往源自于严酷的制度。与之类似,在组织的软件开发方法形成之初,求助于制度也不失为一种办法。

在个人主义的操纵之下,美国的股市曾一度出现问题……如何让美国的股市走上正轨,有一个人有办法,他就是道格拉斯,罗斯福的谋士。道格拉斯认为,只有加强监管才能挽救美国股市。此话一出,全世界哗然:“哎哟,水至清则无鱼,又来了,先把蛋糕做大了再说。”

罗斯福提出两个法案:证券法和交易法,证券法在国会通过,交易法却死活都通不过。罗斯福和华尔街“斗法”之后,华尔街决定,指派当时最大的庄家,“擅长”内幕交易和操纵股价的人去当证监会主席,他就是肯尼迪。华尔街说,让这种人当,我们就放心了。

肯尼迪发明了一种非常有利的武器叫做辩方举证,也叫举证责任倒置。一般情况下,辩方举证是假设人无罪,除非你能证明他有罪。比如,你要证明自己上个星期去看电影了,电影票的票根就是证明……你不是没有信托责任吗?我们就用法制培养你的信托责任。良心有时候是不可靠的,只有靠严刑峻法,才能建立信托责任。

——整理自郎咸平在浙江大学举办的中国企业文化国际论坛上的演讲

不要尝试从文化优劣的角度,来看文化形成的问题。文化就是一种习惯,没有优劣之分。接受一种习惯,就形成了一种不再需要约束的文化。

事实上,软件开发方法是企业文化的集中反映。和社会文化不同(有着漫长的形成过程),企业文化(常常体现在软件开发方法中)需要快速形成。一种好的办法是,在兼容并蓄、博采众长的价值观基础上快速建立制度,然后用中庸之道进行调整。

前面谈到,企业文化包含了两个重要的方面。一个是企业经营者和管理者的价值观,另一个是组织成员的结构和背景。

和企业经营者相对固定的价值观不同,组织成员的结构和背景经常会发生变化。另外,和这个变化一起发生的,还有组织的规模、组织的规章制度以及相应的游戏规则。

如果企业的软件开发方法能够在上述各种变化发生的时候,根据中庸之道及时做出调整,那么企业文化的建设就进入了一种理想的状态。(也是基于这个想法,我把组织成员的结构和背景,作为企业文化的一部分。)

什么样的调整呢?比方说,当规模变大时,我们应该在组织的软件开发方法中加入一些精细开发的思想。

迄今为止,我还没有见到过精细开发的案例。这也许和我所能接触到的软件企业的规模有关。我接触到的很多软件开发组织,精细开发思想是很糟糕的。在这些企业中,一个软件开发人员往往要兼顾很多任务,而任务的指派基本上是随机的。

软件开发人员常常被视作没有任何差别(个性、技能、兴趣等)的资源。

这种想法,无论从个人的角度来看还是从组织的角度来看,都是有问题的。

从个人的角度,粗犷分工不利于软件开发人员自身知识的积累。如果没有知识的积累,生产效率会变得极为低下。

从公司的角度,粗犷分工会造成大量重复投入的学习成本。当随意安置的个人与小团队文化不适应的时候,同样会带来严重的生产效率问题。

所以在企业发展的某个阶段,必须做出精细开发的调整。

总之,企业经营者和管理者的价值观,以及组织成员的结构和背景,为企业的软件开发思想定下了基调。而兼容并蓄、博采众长的价值观,以及基于中庸之道的适应性调整,为软件开发问题的解决提供了方向。

此外,从操作层面看,为了解决软件开发问题,还需要一个方法——聚焦。