作者:王洪亮
近几年,随着社会化分工的趋势,许多领域的客户都考虑到软件外包服务,在开发新的项目中,会涉及到一些系统,设备和业务领域等进行开发,如果全部自己开展起来,承担着技术积累风险和短时间开发的风险。出于时间和成本的考虑,客户会考虑到软件外包。
与此同时,随着敏捷传入中国并发展了十五年以上,敏捷产品研发的观念逐步替代了传统的项目管理,也带来了新旧观念的现实碰撞。近期很多客户跟我们探讨过软件外包项目合同如何签署,而笔者除了在多家企业担任敏捷教练之外,也是在自己的企业中负责了多个外包服务项目,并以敏捷的理念与客户进行合作。所以这次我们根据如何在敏捷语境背景来行展开,谈谈如何签署敏捷的软件外包服务合同。
一 合同的形式
本次讨论的合同形式主要为固定价格合同和T&M合同。
1. 固定价格合同
在签署合同的过程中,首先甲乙双方根据合同的范围进行确认和意向,然后乙方给出精准的报价来进行反馈,甲方根据报价和预算来进行议价后双方签署合同。在签署合同条款中,双方需要制定需求范围,质量标准以及交付时间等内容,乙方按照合同执行,最后交付。
** 估算价格一般依照项目执行所需工时,若因甲方情况而进行延长,需要向乙方追加费用,双方会提前约定追加费用的判定标准以及价格依据。
2. T&M合同
Time & Material(简称:T&M)一般的表现形式是派遣合同。
乙方根据项目所需人员和工时向甲方进行每个资源和单位报价,在甲方采购乙方人员的时候,乙方在合同期限内需要有责任来履行资源的有效性,需要将相关人员派遣到甲方的指定场所,并且甲方对于资源的使用和管理有全部权限,并且按实际情况来进行支付。通常情况下,乙方对交付物成果不必负责任,但甲方有权利要求乙方更换或者撤回无法胜任工作的人员。
** 除在甲方制定场所工作外,也有在乙方场所工作,乙方根据花费的工时进行费用请求。但甲方可派人到现场实际监督,确保没有财务上欺诈行为。
二 风险及收益分析
在上述讨论的合同形式中,我们还需要根据甲乙双方来分析收益及风险。
固定价格合同
甲方
优势:固定合同金额可以减少财务追加投入的可能性,降低预算风险。但甲方需要投入大量时间来确定细节,为减少需求变更发生。
风险:若甲方不具备相应的技术能力,那么在谈判过程当中,甲方将处于不利的地位,乙方可以任意裁决增加的模块和移走的模块的尺寸,从而主导整个谈判。并且会导致投入时间过长,延误产品上线,无法根据实时来进行挑战,削弱了竞争力。
** 甲方目光若锁定在市场上,需求变更而所追加的费用并不是第一优先考虑的问题,需要应对变更能力强的乙方供应商;甲方若考虑的是财务上不追加费用,则需倾向于选择稳定交付能力的团队。
乙方
目前许多乙方角度并不接受这样的模式,因为缺少风险控制能力。一旦发生需求变更,双方就会根据该问题是属于“涉及遗漏”,“需求变更”,“理解错误”等分类进行讨论和确认。往往因处于弱势的乙方会谈判失利。
统一因为技术上的不成熟、管理的不到位等原因引起消耗和成本上升,造成利润降低甚至亏损。
** 因各方面因素,大多数乙方往往不接受固定价格合同,倾向于T&M合同,并且满足甲方的需求。
T&M合同模式
甲方
甲方购买的是商业价值,每套系统启动之前都是为了实现某个商业上的价值,不论是成本的下降、效率的提升还是盈利的提升。
优势:用时间成本的方式比较容易了解技术流程,容易通过财务、采购等一些列部门的审核,所以在实际操作中甲方也会倾向于选择按照时间来结算,即使在固定价格合同上也倾向于选择按照工时来判断报价的合理性。
乙方
乙方大部分风险转移到甲方身上,并且对利润有很强的可预期性。在T&M模式下,甲方买到的是乙方的工时,水平较低的人员薪资较低,利润较高,甚至可以获得更多工时,但是相对较低的水平没办法大幅度改善团队的竞争力。
优势:基本零风险模式,利润率几乎是透明状态,稳定、可预期,所以乙方选择的可能性大大提升。
** 尽管,理论上来说,甲方应该更加注重其商业价值,要求乙方为其交付商业价值,但是一旦合同转变成为“按照商业价值计算”的模式,甲乙双方的关系又会发生重大变化,都怀着一颗忐忑的心,下文会对此模式进行概述与分析。
三 敏捷框架下的挑战
乙方如果想了解敏捷框架下的挑战,首先需要了解敏捷框架下的合同都是如何执行的。不要把客户相信成喜欢你的产品,同样,也不要相信的客户(外包商)能够轻易接受你的建议,你需要了解服务对象的真实想法和感受。
什么是敏捷框架的合同?
首先,无论采用哪种结算方式,在敏捷框架下的要求,乙方按固定迭代周期进行交付成果,一旦开发中遇见需求变更,都必须消化掉。
接着,我们需要假设,由于市场竞争等诸多因素,更多的甲方会要求乙方接受敏捷框架合同,否则终止合同。因此乙方需要准备好抗风险能力,而没有准备好的乙方公司则缺乏竞争力。
那么,一旦开始执行敏捷框架合同,会出现怎样的问题?
1. 需求范围蔓延:
- 由于采用通过迭代的方式进行去整理需求,所以甲乙双方都可能遇到需求不完善的情况,双方都倾向于将需求描述的过于简单,而造成细节不清晰。而软件开发是要考虑到各种细节、边界和异常条件的。对于成熟的团队来说,看到用户故事卡,自然会整理出来合适的验收条件,但是对于缺乏经验的团队来说,这会导致各种细节的欠缺。
** 在用户验收测试的时候发现各种遗漏,造成的需求范围蔓延。姑且不论这种问题是甲方还是乙方造成的,造成这种问题的后果是,双方都要付出更多的时间和成本来应对问题。这是一个双输的局面,至少不论是否追加费用,甲方的商业价值受损是必然的。
- 由于迭代式开发,甲方看到迭代中期产物出现的时候难免会有一种“增删改行为,使之趋于完美”的冲动。而这种情形,对于乙方来说可能就是灾难性的了。
** 乙方应该记录中所有需求变更,在项目中期和甲方就发生的需求变更进行沟通和确认,就最后发生的需求变更进行是否付费的谈判,这也是约束甲方不要任性变更的一个重要手段。至于如何处理需求变更这个双方的矛盾点,将在本文的第四章有所阐述。
2. 效率提升之后的利润归属问题——利润模型
敏捷的导入会使效率得到提升,很多技术并非只有敏捷开发可以使用的,比如TDD,CI。但是为了敏捷会自然导入这些技术。
当效率提升后,如果乙方仍然按照T&M的方式来进行价格估算和费用请求,那对乙方来说,是进行一场没有动力的改革。除非压力来自于市场上的竞争对手,然而目前市场上的压力并没有达到。
因此,需要引入经济学概念——“社会平均生产”。当一个企业在某个领域竞争的石斛,他的效率如果远超过社会平均生产效率,应该创造更多的价值(不考虑其他因素情况下)。而IT这个产业刚好能通过技术、管理等提升,创造出创造比竞争对手高几倍乃至几十倍的效率。
一般商品都有市场公允价格,但定价体系会有一系列的偏差。我们简化模型来分析,就不难看出,一个企业比市场公允价格略低的价格来进行竞争,那他的效率是社会平均生产效率的几倍的情况下,理应为自己创造更多的利润。所以,如果乙方站在这个角度来考虑,应该有充足的动力来改进它的工作模型。
但实际上,这样做的乙方企业少之又少,为什么会产生这样的情况?
这是综合的因素造成的结果。比如,如果合同的形式是T&M,那么改进效率对乙方来说没有任何意义。所以,改进效率的大前提是双方签署的是固定价格合同。其实还有多方面因素,比如:乙方担心的成本上升,风险变高,难以说服甲方签署此类合同。
3. 成本的提高
- 敏捷导入初期的转型成本上升
敏捷转型不是简单一句话可以成功,更不是参加个Scrum培训就可以立即落地。转型要经历一个学习期,这个学习期的效率可能和以前比是相对下降的。因此经营者会担心敏捷转型初期引起的成本上升,迟迟不肯迈出第一步。
- 人员水平上升导致的工资成本上升
敏捷的运行是需要切实的技术作为支撑。所以,必然会对团队的技术水平提出相应的要求,不论是从外部招聘,还是内部培养,人员水平的提升必然导致人员成本的上升。上升的成本是否可以通过前述利润模型赚取回来,其实经营者是缺乏信心的。
4. 风险变高
- 由于知识体系不同而引起的误解风险
“社会公允价格”是个经济学上的抽象概念,落实到具体的软件项目,多少才是公允的价格并没有科学结论,这也是为什么T&M的方式广受欢迎的重要原因。乙方如果从项目中赚取了更高的利润,会引起甲方的“被欺骗”感。甲方会认为乙方欺骗了甲方,从而在未来的项目中削减费用,降低乙方的收益,甚至终止和“不诚信”的乙方合作。
- 技术水平上升导致的人员流失
如前述的人员水平上升的必要性,若不在报酬上有所体现,则会引起另外一个现象,就是人员流失。而人员流失所带来的损失和在以T&M的方式下,是有办法可以抵偿的。然而在敏捷框架下,由于团队规模小,人员掌握的信息多,每次人员流失都会带来较大的损失。比如5个人的团队走了一个人,就是缺少了20%的知识。要想弥补所需要的成本可能就比较高。尽管敏捷模式下通过更好地协作可以缓解这种风险,但是人员流失仍然是个不可忽略的因素。
5. 对于甲方难以说服
其实很多乙方最为担心的是害怕甲方不同意这种新的合作模式。因为甲方的顾虑可能包括:
- 如何确认估算价格的合理性?
- 如何判定需求变更,该部分费用如何计算?
- 甲方没有敏捷开发经验,不知道如何判定进度和质量。
- 甲方没有足够的资源投入来对每个迭代进行验收等。
四 敏捷框架下如何创造利润
前述的固定价格合同还是T&M合同形式,其本质上都是一种赢输博弈模式的合同。甲方希望能够购买到更多的价值和服务,乙方希望能够赚取更多的利润,双方的出发点都是基于自身考虑的,这本身没有什么错误。但是这种博弈的过程往往造成的结果是——甲方的商业利益没有得到及时交付,造成机会成本损失等隐形损失。乙方被要求追加更多的功能或者修复而提供免费的服务,双方都处在一种低效益的模式下。本文将探讨如何构建一个双赢模式的合同。
作为乙方应该更加深入的了解甲方,才能够造出合理的利润模型,从而在为甲方创造价值的同时创造应属于自己的利润。作为甲方应该深入了解乙方,通过促进其盈利能力的形式确保自己的利益得到进一步提升。
1. 甲方如何认可价格
甲方往往不是施工方,缺少施工经验,对价格的判断也缺少合理的依据。因此甲方往往在单价是否处在市场公允行情范围,工时是否合理方面进行判断。即使是技术型的甲方也会由于经验所限,或者是时间压力等原因,而产生估算的较大偏差。因此对于价格的认定,往往其参考依据是预算。或者是通过价格竞争方式来选择的。而软件项目的价格竞争会有很大的偏差,主要来自于同一个需求可能产生非常深入的理解而大幅度增加复杂度,也可以产生非常浅显的理解忽略其复杂度,再加上开发过程,技术水平,管理水平等综合因素,甲方作为采购方也无法知悉价格的合理性,因此甲方只能够通过预算来决定可以投资的额度。
2. 乙方的利润模型
乙方的利润模型从简单的角度来说就是收入 – 支出,支出部分包括固定成本(人工成本)和可变成本(设备成本、场地成本、管理成本等)构成。从乙方的利润模型来看,就是提高收入,减少支出,而很多支出是硬性的,无法降低。所以,对于乙方来说,在价格不变的情况下(这就是为什么要签署固定金额合同),如果能够通过技术、管理等方式来减少投入,就有可观的利润可以发掘。
3. 双赢策略
既然双方的立场和考虑都比较清晰,那么双方可以采取的策略也就可以做进一步分析。
双赢策略1——响应变化的迭代合同形式
该策略的模型是,甲乙双方签署基于固定范围的固定金额合同。在合同谈判初期,确认合同范围和大致UI草图,并且就很多细节通过快速需求分析工具(想要了解的请联系作者)达成合意。双方约定一定范围的需求变更不追加费用。双方基于该范围的功能进行价格协商,达成合意,按照迭代交付,迭代过程中,双方就发生的需求变更做记录并确认,并且在项目最后就需求变更的范围是否超限和追加费用作出讨论和确认。采取这种模型的合作比较常见。
站在甲方的角度来说,应该采取的行动包括但不仅限于:
- 合同上的变化
- 签署固定金额合同,而不是T&M合同
- 掌握快速定制全面、准确而精确的需求的方法
-控制变更的范围
-掌握评判估算的合理性的方法
-掌握迭代式验收项目的方法
站在乙方的角度,应该采取的行动包括但不仅限于:
- 合同上的变化
- 签署固定金额合同,而不是T&M合同。
- 一定范围(可以是5%-10%)的需求变更不收取费用。
- 提升技术实力,大幅度削减响应变更所需要的成本。
- 改进管理方式,减少浪费,促进价值流动。
- 促进对甲方的管理,包括需求变更的控制、交付和验收的管理。
双赢策略2——以价值为基础的合同形式
该策略模型以软件系统能够产生的商业价值为基础,通过一个甲乙双方都能够认可的对价公式,作为软件系统的价格,签署合同。乙方可以分享软件系统所带来的商业价值。这种模式操作起来难度有很多,第一,软件系统的商业价值难以估算。第二,软件系统的商业价值难以衡量。第三,软件系统的开发商往往无法承担商业失败所带来的损失,而且对商业的成败没有控制权。不过现实当中有这种形式的合同存在。由于其数量少,难度大,不做进一步展开讨论。
免责声明:本文仅就个人运营企业的经验和实际案例研究以及相关理论分析的结果,不构成任何投资建议。如果您或者您的企业按照本文所提到的方式进行投资所带来的任何损失,作者概不负责。
知识产权声明:本文的知识产权属于作者本人,如果您想转发此文或者引用此文的全部或者部分,请首先获得作者的书面授权。作者保留所有权利。任何未经授权的转载或者转发作者都保持追究的权利。
如果您希望作者为您的企业阐述更多的细节和可行的操作方案,请联系作者洽谈具体的操作以及相关的服务合同。
作者:王洪亮,原文:http://www.uperform.cn/agile-contract/