技术开发 频道

如何成为XP客户

    在一开始就定义所有需求的唯一方法是让业务人员提出一组需求,在末期试用完成的产品以确认每样事情都和这些需求一致,而在中期则置身事外。

    结果是大多数软件项目生产(如果它们确实生产了某些东西)的是某个人在开始时认为他想要的软件,而不是软件用户在末期最终想要的。我们最终得到的是我们根本不想要的东西,但似乎没有办法能走出这个怪圈。管理人员不能只是规定变化。这在过去从未奏效,将来也不会。为什么我们会深陷于此,我们该做些什么?

    首先,身为 XP 客户的人需要起到客户的作用。什么人能成为客户?通常是具有足够领域和最终用户知识、能对特性的优先级作出困难决定的人。他可能是了解用户真正需要的超级用户。他可能是了解市场需求和竞争对手情况的市场销售人员。他一般不会是顺理成章就获得这一职位的经理,尽管这也许总比没有客户要好。必须有人接受该职位并承诺做好这项工作。

    第二,任何接受客户职位的人都必须把自己当作团队的一份子。他必须愿意花必要的时间和团队其他成员一起生产正确的软件。客户不能预先说明需求后就离开,若软件失败则依靠难以自圆其说的推诿伎俩来为自己掩护。客户不能在团队其他人叫他离开叫他不要制造麻烦时勉强同意。他不是在制造麻烦;他是在为团队指明方向。

    第三,客户必须暂时把怀疑放到一旁,尽力表现得好象让团队探索生产最终产品的方法会比预先规定每一项事情取得更好的结果。这对于程序员和客户都很难。程序员希望不被方法的每一步所困扰就能生产出优秀的软件。他们认为预先说明每项事情并且不背离规范就能确保这一点。客户也担心。他们希望写进每一个可能的需求(包括他们并不真正需要的需求),以便在不得不放弃时给自己留有更多商议的余地。这些观点没有一条有助于团队生产优秀软件。客户需要说明软件真正需要什么,什么是最重要的。然后,他们必须相信程序员(是的,很难做到的一件事)会朝着那个目标坚持不懈地工作。当然,程序员必须通过言出必行来赢得更多信任。这对每个人都有风险,但却是做事的典型方法。采用 XP,风险是显而易见的,而不是被成堆的纸张和承诺所隐藏。

    第四,客户必须改变他们考虑软件的方式。如何才能知道真正需要什么软件?我只知道两种方法:猜测并指望猜对,或者一点一点地交付软件并在更好地理解了客户的真正需要时对软件进行调整。花大量时间让人们讨论他们需要的软件而不实际使用软件只是第一种方法的翻版。人就是人。让他们使用计算机并不能改变这一点。真正理解需求的唯一方法是有一个运行的示例,两方的团队成员都可以用它找到共同点:“这里,看到这个了吗?那根本就不是我想要的。那个东西的位置真是糟透了,非常碍事!那里可以更好些。不过这个,这个真是太好了。”反馈是非常重要的,所以团队应及早且经常地发表反馈。坐等软件变得“完美”只会推迟您猜错的坏消息。

    如果这就是客户所要做的全部,那有什么问题?事情不止那么简单。事实上,它太难了,以至于大多数人都不愿做它。即使他们愿意做,也不能做。大多数组织在建立时都不允许这样的过程发生。使用 XP 制作软件会遇到强大的抵制,因为一些有权利的人对于这是否明智有正统的考虑 — 并且因为一些有权利的人很顽固。

    组织可能成为问题

    如果 XP 客户所在的组织不同意使用 XP,那么他不能做他的工作。这意味着两件事情:

    必须存在 XP 团队以便将客户包括在内。

    客户的上司必须让客户成为该团队的一部分。

    团队必须在 XP 客户能够做他的工作之前就在使用 XP。如果团队在假装使用 XP,或限制客户充当那一角色的能力,则 XP 不会起作用。遗憾的是,大多数组织的建立机制与 XP 是对立的,这种对立或是有意识的或是自然形成的。除非组织中至少有一小部分愿意尝试 XP,否则它不会起作用。但您可以从小做起。一位客户,几个开发人员和一个小小的应用程序就是您需要的全部。如果那个团队生产出优秀的产品,则有可能其他团队将采取一些那样的行为。

    如果 XP 团队需要某位客户,而该预期客户的上司却不允许他在该团队上花任何时间,那会怎么样?那样的话,这个项目从一开始就注定要失败。如果团队需要客户参与计划会议或试用最新的应用程序,但该客户却始终忙于填写 A-324-XYZ 报告以应付即将到来的每两周一次的形势通告会,那么该团队将不能交付他们所承诺的东西。没有某位相似领域的专家,您就无法有效地研究,而那位专家就是客户。组织中控制客户时间的人必须放弃部分要求。

    大多数组织的建立机制使这几乎不可能。那么我们就永远深陷下去吗?也许,但我不认为我们必须如此。改变这种情形只需要勇气。

    进行改变的勇气

    坦率地讲,我认为有三个原因共同促使公司的 IT 人员陷入这个怪圈

    习惯

    懦弱

    缺乏远见

    打破习惯是很难的。您甚至没有考虑过这么做。习惯是您生活中很自然的一部分,即使某些清醒的情况下您知道不应那样行事。这就是为什么人们会抽烟、暴食或对着他们的孩子大喊大叫。一旦您有了某种习惯,打破它就需要有意识的努力。大多数公司生产软件的方法直接来源于该公司各成员的习惯。

    有些公司的很多人都没有胆量。当事情真正有麻烦,并且他们真正意识到组织走向了错误方向时,他们要么屈服要么走人。此刻,如果留在某个组织中的日子确实很糟糕,而且您尽了最大努力也无法改善它,那就可能是离开的时候了,对于这种情况,我将第一个赞成。但一看到阻力就逃跑并不是解决问题的办法。您是在逃避必然性。您跑到别的某个地方,在那里相似的问题突然再次出现,而您又会离开那个新地方。组织不会改变有什么奇怪呢?每个人都跑开而使它们支离破碎。

    我们需要的是新一代的公司领导(既有技术型也有非技术型),他们将站起来说真话 — 即使要面对传统和习惯。缓和与退却的战略根本不起作用。非技术型领导必须担当 XP 团队的客户,并且如有必要应该用全部时间参与。技术型领导必须愿意放弃控制规范的权利,并探索制作优秀软件的方法。

    我们需要更多勇敢的人,但光有勇气没有远见也不能成事。对理想的状况有远见并有勇气尝试达到那一状况,我们需要的是这样的人。在真正的 XP 方式中,这种远见在我们朝向它前进时会改变,但我们必须前进。

    软件开发让人痛苦而产品成为垃圾,这是因为您我允许它这样。这是我们的过失。责备“那些人”或“那个组织”起不了任何作用,只会无限期延长这一循环。我们需要痛定思痛,要求变革,并首先自己做好表率。做到那一点非常困难。最后,一言以蔽之:您是希望混日子领工资,还是希望改变世界?

0
相关文章