欢迎来到山东捷君信息技术有限公司!
DETAILS详情
当前位置:首页 > 公司新闻 > 详情

为什么山东软件开发问题多?

作者:山东捷君         上传时间:2020-08-18
从我的标题,大家已经可以知道我的结论,就是我不建议软件开发通过外包的形式来完成。

我们知道,现代社会是一个陌生人协作的社会。一个组织、一家公司、一个团队的能力和精力都是有限的。把非核心能力的业务外包给其他组织、公司、团队是再正常不过的事情,我并非反对一切外包行为。

我想说的是,有些东西可以外包,有些则不能。要看某项事物是否适合外包。为什么软件开发就不太适合外包呢?

我们来看软件开发有什么特性。我将通过边界、估算、验收和合同四个方面来分享我的观点。


1、边界

一谈到软件项目,大家一定会想到超支、延期、加班等等。所有这些,都和一个重要因素有关,就是边界不清晰。

光是在需求这个源头,就经常出现需求不清晰、需求泛滥等问题。这些情况,就算是我们自己开发,和用户坐在一起都会经常遇到和难以解决。我们怎么能指望离岸的外包团队能更好地解决这些问题呢?

另外一个最核心的问题是,有人总结得很好,从农业时代、工业时代过渡到知识时代,最大的变化就是我们的工作对象从物品变成了事情。物品的边界是清晰的,所需要的工作时间是有限的。所以在工厂,可以通过计件来量度一个工人的产出和效率。

而事情的边界是可以无限扩充的,可以膨胀成任何规模的工作。也很难量度一个知识工作者的产出。

几乎所有的知识工作,都有这样的特性。软件项目也是其中的典型例子。一个看似简单的需求,一旦挖掘到细节,就可以无限泛滥。我想这是所有软件人的痛。

简单总结就是,如果对象是物品,由于边界清晰,完全可以外包。所以在工业领域,供应链已经被证明是最有效的生产协作方式,很多手机厂商,把销售和设计以外的所有环节都外包了。如果对象是事情,由于边界模糊,外包的有效性就会大打折扣。

2、估算难题

还有一个问题是,软件项目的估算永远不准确,根源也和上面提到的边界问题有关。

软件项目每次都在实现不同的目标、完成不同的东西,每次都是陌生的,充满“意外”,所以无法准确估算所需要的时间。

但作为甲方,我们需要乙方提供估算,以便确定外包合同的金额和交付日期。己所不欲勿施于人,如果估算这件事情我们都觉得头疼,怎么能指望乙方估得准。

在这种情况下,无非两个结果:

  1. 乙方在估算时加入大量的缓冲时间,导致合同金额过高;

  2. 乙方在合同金额内无法完成约定交付,要么甲方追加投入,要么中止合作,得到一个烂摊子。


3、验收标准

由于每个项目和需求都是不一样,针对项目和需求的验收标准都必然不一样。针对每个需求,测试和验收所需要花的功夫和难度其实和设计、编程等过程其实是相当的。

需求分析、设计、编程、测试都需要对需求进行深入的理解,都是深度的知识工作,都同等重要,不分贵贱。

当我们把整个软件项目或项目中某些模块或过程(比如测试)整体外包后,如何验收就成了难题。更难的是,为了避免甲乙双方的纠纷,验收标准应该约定在合同中。但也因为刚才提到的因素,在项目开始前对每个需求约定具体的验收条件几乎是不可能的,有这个功夫,半个项目已经完成了。

这也和前面提到的边界问题有关,如果对象是物品,每个物品(比如某个零件)都应该是一样的,其验收条件完全可以标准化,清晰地写入到合同里。知识工作则很难满足这样的条件。

这就导致了项目的验收条件和合同中相应的条款是开放的,而非封闭的。验收标准一旦不能在一开始统一,将来的纠纷和扯皮就不可避免了。

4、合同模式

目前比较流行的外包合同模式无非就是以下两种:

  1. 固定金额——双方根据项目估算约定一个金额。甲方不管乙方交付项目的实际成本,只支付合同约定的金额。这种模式 ,相当于乙方承担项目交付的所有风险。

  2. 时间与材料(Time & Material,T&M)——甲方按照乙方投入人员的工作时间支付费用,不管乙方是否交付预期的成果。这种模式,相当于甲方承担项目交付的所有风险。


我们可以看到,在边界、估算、验收等问题的存在下,不管是哪种合同模式,都有一方明显吃亏。
但其实,不管表面上是哪方吃亏,最终后果其实都是甲方承担。我们在第一部分提到,甲方试图外包项目,无非就是想省钱、省事和转移风险。但大多数情况下,这三个目标都难以实现。

5、省钱

如果双方签的是固定金额合同,由于边界难以厘清,估算无法准确,乙方肯定需要在其估算基础上加大量的缓冲来降低自身风险,导致合同金额高昂。

如果双方签的是T&M合同,则更容易陷入“只收钱不出工”的窘况。

而且,对于甲方来说,最大的成本在于得不到一个想要的产品。外包过程中,交付团队与甲方的用户缺乏默契、缺乏对业务的深入理解,交付正确产品的几率本身就不高。

6、省事

表面上,外包团队的所有人事甲方都不需要管。但是著名的管理大师德鲁克总结道,所有的知识工作者都是管理者。要做好软件交付这件事情,需要交付团队每个人都有丰富的知识、技术、软技能(沟通与协调)和经验。

我们期望外包公司有现成的人员配备,但是实际情况往往是,外包公司由于要承担人力成本,在没有项目的时候,会尽早解散人员。所以很少在新项目启动前就组织好所有人员,往往都是在项目启动时才临时到人才市场上聘用,人员素质良莠不齐,培训不到位。

另外,参与项目人员的业务、领域知识往往非常重要,这些知识需要长期在某个具体的业务领域长期浸淫才能累积。我很难想象一个外包团队何以在短期内掌握这些知识。

如果外包团队的人员达不到甲方的这些预期,我看不到甲方如何省事。
7、转移风险

对于甲方而言,外包的另一个好处是,一旦项目交付出现问题,可以找到一个明确的责任方。然而,我们可以转移责任,却无法转移项目交付问题的后果。一个家居装修搞砸了,承担这个后果的只能是业主,而不是装修队。
还有一种外包形式是购买市场上现成的供应商产品。如果该产品能完全满足公司业务的需要,倒还好。但真实情况是,由于每家公司的具体业务都有差异性,也有自己的合规要求,即使是购买供应商产品,也势必需要供应商进行大量的定制化开发,这就衍生出和项目外包一样的问题了。

总结

很多公司和团队选择把整个软件项目或项目中某些模块或过程整体外包给另一家公司或团队,试图省钱、省事和转移风险。

然而,由于软件项目存在边界模糊、估算不准确、验收无法标准化、缺乏两全其美的合同模式等问题,软件项目外包很难实现省钱、省事和转移风险的目标。

建议的外包形式是外包人而不外包事。从项目制转型到产品制,也是一种很好的方法。

联系我们

  • 地址:济南市高新区丁豪广场6号楼705
  • 咨询热线:0531-66958699
  • 服务热线:0531-66956760
  • 邮箱:jitservice@ijiejun.com
Copyright © 2017-2026 - www.ijiejun.com All Rights Reserved 捷君信息技术有限公司 版权所有 鲁ICP备17035670号  技术支持:永易搜科技