敏捷价值观之一:个体和交互胜过过程与工具

工业化大生产一直有一个梦想:就是由一些聪明的人来设计过程和工具,然后教会笨蛋们使用工具,并通过过程来规范他们的行为,这样就可以用最低的成本来进行生产,并且能够迅速扩大生产规模。肯德基、麦当劳就是这种模式的典型例子。他们通过这样的方式消除了招聘技艺高超的大厨师的需要——大厨师薪酬太昂贵,而且由于水平高超的大厨师的数量有限,依赖于大厨师就无法将分店扩展到全世界。

这样一种将人划分为“劳心者”和“劳力者”的想法,在建筑业和低端制造业也许行得通,但是应用到软件开发行业,却肯定不能奏效。

建筑业重度依赖于过程和工具。建筑属于典型的工程学科,已经出现了数千年,几千年来积累了无数的知识和经验。他们可以严格划分设计师、工程师和建筑工人的职责,通过最合用的工具(塔吊、混凝土搅拌机等等)来提高生产力,通过历经验证和改进的过程来规范工人的生产。工人的劳动是非常简单的机械动作,容易计量、容易评估质量、也容易通过增加人手加快进度。

软件行业则不同。软件是一个年轻的行业,出现至今不过数十年,远远没有达到成熟的程度。基本上还没找到所谓正确的道路,所有的探索都还处于试错的阶段。《软件工艺》一书的作者Pete McBreen认为我们目前所处的阶段,只有软件工艺,没有软件工程。对于软件开发来说,工具是有用的,过程也是有用的,但是,它们的作用绝不能神化——工具和过程对于软件开发的成功贡献有限,过分强调的话反而会伤害生产力,更严重的是伤害开发人员的积极性。

软件业是知识密集型的产业,它既不是纯粹的艺术,也不是纯粹的工程。软件的成功高度依赖于开发人员的创造力和专业精神,较少依赖于使用工具和遵循过程规范。在软件开发的所有层面中,创造、构思和规划是最重要的,而使用趁手的工具和遵循一定的流程来实现则相对次要得多。人永远比工具重要。

软件开发有工程的一面,因此涉及团队成员的沟通协作。开发人员之间高效、及时、密集的交互对于软件的成功非常重要。过程和工具可以有,但它不能是由外界(上司、项目管理部门等等)强加的给团队的,而应该是由自组织的团队根据实际需要自行遴选、裁剪和改进适合自己的过程和工具。过程不会增加任何价值,它的主要作用是防范失败。当一个开发团队近半数的时间用于会议、评审、校验、编写文档、填写表格时,它还能保留多少时间和精力用于生产?

Mike Pearce说:

……流程本身没有创建和使用流程的人影响更大,他们使用的工具没有这些一起工作的个体的影响更大,尽管这些个体会创建流程,创建或使用工具来支持自己的工作。有流程很重要,可如果组织中的人会使用这些流程,并能以达成敏捷原则为目的,调整流程来适应自己的需要,那么这些人就更重要。有正确的工具很重要,但是你怎么使用这些工具、以及拿它们来做什么要更为重要。

任何时候,我们应重人轻物,不要重物轻人。选择专业的人才,组成自组织的团队,由他们自行选择过程和工具。Mike的结论是:

雇佣好的人才,然后放手让他们去干,别挡他们的道。

你可能感兴趣的:(敏捷价值观之一:个体和交互胜过过程与工具)