浅谈软件开发的权利和权力

在日常生活中,有各种各样的法律规则和道德准则来约束、指导行为。比如在初次的商业合作中,双方都会选择制定一份详尽的合约来规约双方,包括双方拥有的具体权利、以及单方出错时对方享有的权利等。软件开发,在商业上面也必然会有详尽的合约,处理的是两个组织之间的利害关系。但是,软件开发同时作为紧密involve商业客户与开发团队的活动,正如Alistair Cockburn把它比喻称为game——由客户、管理层和开发人员共同play的game,其中也需要由参与play game的各方利害人来共同制定规则,让大家都能玩得开心、尽兴,甚至长久。这样,围绕着多赢长赢的出发点来play game,就同样需要这样一份“权利法案”,对开发过程中的三方利益利害人的权利做出基本的原则上的规定。在敏捷软件开发方法中,特别是极限编程中,就存在这样一份“权利法案”。

其实,我一直不知道原来极限编程里面还存在这样一个“权利法案”,问一些朋友,也有不清楚的。正巧,在翻译《ThoughtWorks Anthology》中的“What is an Iteration Manager Anyway?”一章时,原文写到:

the IM(注:Iteration Manager) must facilitate, enforce, and defend the team member’s rights. For many agile teams, these rights come from the developers’ Bill of Rights.

多亏一位资深同事透明指出,其中的Bill of Rights就是前面所讲极限编程中的“权利法案”,并给出了出处Extreme Programming ‘Bill of Rights’。该文由Steve Hayes发表,对play game的客户、开发人员和管理层都规定了各自的基本原则,试图对各方都定义一份清楚的职责和权利范围,减少各方因为认知不同造成的混乱。

Customer rights

  • The customer has the right to plan on a large scale with costs and options.
  • The customer has the right to set development priorities weekly.
  • The customer has the right to see progress in the form of a working system at the end of the first week, and to see a little more functionality every week thereafter.
  • The customer has the right to updates of the schedule, good or bad, as soon as the information is available.
  • The customer has the right to change his/her mind without paying exorbitant costs.

Programmer rights

  • The programmer has the right to estimate work and have those estimates respected by the rest of the team.
  • The programmer has the right to honestly report progress.
  • The programmer has the right to produce high-quality work at all times.
  • The programmer has the right to know what is most important to work on next.
  • The programmer has the right to ask business-oriented questions whenever they arise.

Manager rights

  • The manager has the right to an overall estimate of costs and results, recognizing that reality will be different.
  • The manager has the right to move people between projects without paying exorbitant costs.
  • The manager has the right to monthly updates of progress, and to help the customer set overall priorities.
  • The manager has the right to cancel the project and be left with a working system reflecting the investment to date.

从内容来看,这份法案给客户、开发人员(这里的开发人员包括项目团队中主要工作是与软件开发相关的各种角色,比如BA/DEV/QA)和管理层提出了很高的要求,但也在一定程度上让各方认清自己享有的权利。各方都有自己的权利,也就是在play game时可以行使的权力,让game的规则尽可能摆出在桌面上面,减少对规则的误解。但是,在具体的game中,各方毕竟不是完全对等的,如何避免对权力的误用,使各方保持一个清晰的远景?

这些天读Scott Berkun的《The Art of Project Management》,其中提到权力的来源和挣得颇有意思。拨去笼罩在“权力”一词上面的褒贬,Random House College Dictionary里对“权力”的解释是:

权力(power,名词):做事或行动的能力,进行或完成事情的能力。

Scott指出权力通常分为授予型和挣得型,授予型来自于阶级体制或者职衔,而挣得型则必须由效能和行动耕耘而得:“权力在团队中不断流动、改变方向,在不同时刻对不同人会有辅助或阻碍。因为权力在使用前纵使晦暗难明,谁有什么权力,很容易搞混”。Scott把权力误用定义为“只要无法为项目及参与项目的人提供利益,任何行动都是权力误用”,并指出“因为权力来源是自然的,而使用权力以影响和推动决策则是团队工作的副产品,这些事情本身并不邪恶”。如何防止权力误用?Scott也指出“最佳方式就是大量依赖项目远景所定义的目标,借此推动权力的应用。”

 

Leave a Reply

Your email address will not be published. Required fields are marked *