写点什么

供敏捷软件开发使用的合同

  • 2009-05-10
  • 本文字数:1550 字

    阅读完需:约 5 分钟

虽然《敏捷宣言》中说“客户协作重于合同谈判“,合同仍然是很多开发人员和公司要面临的现实。Peter Stevens 分析了 10 种不同类型的开发合同,并解释了每种类型对于敏捷项目的适合程度。他发现:相比固定价格合同与按时间和材料制定的合同来说,有一些合同似乎更适合敏捷项目。

正文

虽然 《敏捷宣言》 说“客户协作重于合同谈判”,合同仍然是很多开发人员和公司要面临的现实。 Peter Stevens 前不久分析了 10 种不同类型的开发合同,并分析了每种类型对于敏捷项目的适合程度。他发现:相比固定价格合同与按时间和材料制定的合同来说,有一些合同似乎更适合敏捷项目。

Peter 检查了这 10 种合同类型,针对每一种合同类型,描述了以下方面:

  • 合同的通用结构
  • 如何应对范围变化
  • 风险如何分散
  • 在客户与开发者之间培育起了什么样的关系

最基本的开发合同是按时间和材料制定的合同(time-and-materials)。 这将大部分的财务风险转嫁在了客户一边。开发人员没有动力去早点完成项目或是维持低成本式的开发。

最常用的另一种合同就是固定价格合同。这种合同很受客户欢迎,因为它将大部分风险都放在开发人员一边。如果项目时间超出预计,这种协议就对于项目范围的变化就不友好了,而且对于范围中应包含的特性酝酿着潜在的争议。

Stevens 考察了这些这些合同,其中还包括一些有趣的变种,比如固定利润方式的合同。缔约方事先就固定的利润达成一致意见,比如给付开发人员100,000 美元。不管项目用了多久完成,负责开发的公司都会得到利润外加发生的实际成本。如果项目提早完成,客户与开发人员都能受益。

Llewellyn Falco 使用了一种混合合同,并将之归功于 Bob 大叔(Richard Martin)。该合同既包括固定金额,又包括一个按小时收取的费率。开发人员会估算工作要用多久,比如 80 个小时。然后开发人员会用该时间乘以他们“通常”每小时收费的数目,比如 200 美元 1 小时;这样得到的金额会拆分成两部分:一部分是固定金额,另一部分是较低的每小时费率。比如:固定部分可能是 8000 美元,每小时的费率降低为 100 美元。如果项目按预计时间完成,那么价格就是 8000+80*100=16,000 美元。如果项目时间超出预期,开发人员就只按 100 美元一小时来收取额外的费用。该方法试图在开发人员和客户之间平分风险。

Peter Stevens 推荐使用基于阶段的开发合同与称为“ money for nothing, changes for free ”式的合同。他声称自己使用这种阶段式开发合同取得了成功,不过他也发现:

“Money for nothing, changes for free”合同将 Scrum 与 Agile 开发过程的优势转化为了竞争优势。 - 通过按增量式的方式排定并交付业务价值,彻底失败的几率就大大降低了。这种优势可以传递到客户那边。

  • 而且,这是一种合作模式,能够让双方都有动力保持成本不要升高。
  • 早期取消条款为 Scrum 团队赢得了更高的工作效率。可也有不好的一面,该条款让人觉得有点像是“黄金降落伞”【译注】,在目前的经济气候下,该条款可能在政治上难以接受。

Peter 在结尾时又回到了《敏捷宣言》,强调即使好的合同很重要,与客户保持良好的协作关系要更为重要。

您曾参与过哪种合同的制定?这些合同对于公司于客户的关系起到了什么样的作用?请在新闻后面留下评论并共享您的经验。

译注:“黄金降落伞(Golden Parachute)”是按照聘用合同中公司控制权变动条款对高层管理人员进行补偿的规定。“黄金”意指补偿丰厚,“降落伞”意指高管可规避公司控制权变动带来的冲击而实现平稳过渡。在目标公司被收购的情况下,公司高层管理人员无论是主动还是被迫离开公司,都可以得到一笔巨额安置补偿费用,金额高的会达到数千万甚至数亿美元,因此使收购方的收购成本增加,成为抵御恶意收购的一种防御措施。但其弊端是,巨额补偿有可能诱导管理层低价出售企业。

查看英文原文: Contracts for Agile Software Development

2009-05-10 08:362678
用户头像

发布了 479 篇内容, 共 171.5 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

低代码在这些方面充满优势

低代码小观

程序员 低代码 企业管理 开发平台 低代码开发

阿里菜鸟+腾讯IEG面经(阿里5面,腾讯8面)无限秽土转生

Java 程序员 架构 面试 计算机

如何利用极狐GitLab CI/CD 完成 Jenkins 的迁移

极狐GitLab

CI/CD #GitLab

百分点认知智能实验室:智能校对的技术原理和实践

百分点科技技术团队

被腾讯问蒙的各种Redis复杂问题

hanaper

使用PaddleNLP打造精准文献检索系统,看万方系统升级放大招!

百度大脑

人工智能 nlp 飞桨

跟着我乔鲁诺学面试(大误)

姬翔

9月日更

关于技术团队搭建&管理的一些思考

LigaAI

团队管理

Flutter 多引擎支持 PlatformView 以及线程合并解决方案

字节跳动终端技术

字节跳动 大前端 跨平台 火山引擎

多租户的共享与隔离

金蝶天燕云

云计算 多租户

【直播预告】从校园学习到职场实践——淘系技术开学季特别分享系列

阿里巴巴大淘宝技术

程序员 应聘tips

☕【JVM 技术指南】「理论总结笔记」Java 虚拟机垃圾回收认知和调优的"思南(司南)"【下部】

码界西柚

ZGC JVM G1垃圾回收器 9月日更

影像篡改与识别(三):人工智能时代

腾讯安全云鼎实验室

AI 影像识别

数据湖特点

奔向架构师

数据湖 9月日更

内网渗透攻击技术的利用

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

【架构实战营作业】模块三:学生管理系统架构设计文档

聆息

微前端拆分实践

Teobler

大前端 服务拆分

GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘

华为云数据库小助手

华为云 GaussDB 华为云数据库 GaussDB(for MySQL)

区块链将帮助监管科技突破壁垒,刺激金融市场的监管活力

CECBC

爬虫初探: 重定向处理与新闻明细页解析

程序员架构进阶

Python 实战问题 9月日更 spider

【Vuex 源码学习】第二篇 - vuex 插件安装 install 逻辑

Brave

源码 vuex 9月日更

推荐一个Mac端的截图工具

IT蜗壳-Tango

9月日更

JVM专题01-类加载机制详解

JustRunning

javacore JVM 深入理解JVM Java类加载

Vue进阶(幺幺幺):实现浏览器全屏

No Silver Bullet

Vue 9月日更

Python——Map-Reduce

在即

9月日更

链路压测中如何记录每一个耗时的请求

FunTester

性能测试 接口测试 测试框架 FunTester 链路压测

多线程环境下,程序运行真是危机四伏

Java 架构 面试 后端 多线程

深入理解 Linux 的 epoll 机制及epoll原理

Linux服务器开发

网络编程 epoll Linux服务器开发 IO多路复用 Linux后台开发

从特岗教师的需求金字塔,重新理解乡村、教育和科技

脑极体

挑战进阶教程,和MindSpore更近一步!

Geek_6cdeb6

mindspore

学生管理系统详细设计

缘分呐

设计 学生管理系统架构

供敏捷软件开发使用的合同_研发效能_Chris Sims_InfoQ精选文章