外包软件开发时要避免的五个陷阱

发布于:2020-12-30 17:30:51

0

68

0

外包 软件开发 陷阱

IT外包行业在2018年实现了620亿美元的收入,已成为真正的全球业务; 您将工作外包给乌克兰或加拿大的可能性与您将其外包给印度或巴西的可能性一样。这不仅对初创公司和非技术公司有用。Slack,GitHub,阿里巴巴和WhatsApp等主要公司在成立之初就成功利用了外包开发的优势,从而达到了目前的成功高度。

外包有潜力提高您的业务效率,减少应用程序的上市时间,并节省大量成本,但前提是必须正确完成。外包开发也存在重大风险。这些会对您的业务底线产生负面影响,并导致项目在您有机会启动之前崩溃。

制定有效的外包策略

尽管外包开发有其一系列的好处,但是如果没有以有组织的方式进行设置和管理,它很快就会损害业务目标。实话实说,在开发工作中找到值得信赖的开发公司与您合作可能是一项艰巨的任务。如果公司外包开发不是高科技公司,那么任务将变得更加复杂。 

过去与外包公司广泛合作,随后共同创建了一家定制软件开发公司,这是我对软件开发外包的注意事项的指南。

外包开发中的常见陷阱以及如何避免它们

1.沟通障碍

外包开发的最大好处是,获得全球人才储备的同时,也带来了主要陷阱之一-沟通问题。您需要克服不同的时区,语言和文化习俗。与外包团队建立定期的沟通渠道对于确保项目成功至关重要。 

Qlicket的创始人兼首席执行官Vivek Kumar在将员工反馈亭的开发外包时,亲身经历了沟通渠道差的不利影响。他在最近的一项调查中提到,开发人员突然停止了一天的响应,未能完成任务。“不管它有搬迁创始人,控股频繁检查呼叫,或其他一些方法,透明度和频繁的沟通是小企业外包生活必需品的形式”,他告诉离合器。公司 他现在坚信经常与远程承包商沟通和互动的重要性。

有效的沟通是一种技能,而英语仅仅是一种语言。与外包开发人员进行交流时,最重要的因素是对项目要求的理解和对交付结果的明确性。

使用协作工具(例如Jira和Asana),通过视频或音频通信与远程团队进行定期交往以及定期召开站立会议是与外包开发团队建立通信渠道的最佳实践。 

2.无法理解项目范围

在将开发工作外包给远程团队之前,明确您期望的要求和可交付成果,交付的预期时间表以及项目的总体范围对于成功外包至关重要。 

无法传达这些详细信息可能会导致示波器蠕变和产品外观不一致。如果不解决这些问题,软件工程师将继续孤军奋战,您的期望与实际交付成果之间的差距将越来越大。

您必须建立基础,要清楚地记录要整合到应用程序中的功能。软件需求规范(SRS)文档是一个很好的起点,它使开发团队可以清楚地了解需求。 

对于非技术公司,起草此类文件似乎令人生畏。我建议使用SRS模板,该模板可以帮助进行文档编制。 

SRS文档可帮助您组织基本项目需求,以使外包开发团队在开始时就了解这些需求。然后,开发团队会做自己的工作,在上面添加更多细节。通过这种合作,双方可以建立一个共同的计划,即在任何实际生产工作开始之前就已建立的共享蓝图。 

例如,如果要开发的应用程序需要注册页面,则初始SRS文档将仅列出需要合并的注册选项。通过与您的软件供应商合作,然后添加更多详细信息是明智的:例如,在注册页面上为每个元素指定功能规范,需要进行的验证检查以及需要的可能方案列表被覆盖。 

文档的清晰是确保您的期望与外包公司提供的交付成果彼此同步的第一步。 

3.代码质量挑战

在为应用程序编码时确定外包开发团队是否遵守质量标准是一个挑战,当您在没有大量编码专业知识的非技术公司工作或经营这家公司时,这一挑战就会加剧。代码质量是一个不明确的术语,因为对于高质量和低质量的代码可能没有严格的定义。 

代码质量是需要与外包开发团队进行沟通的属性的集合。以我的经验,好的代码需要具备两个关键的素质:清晰度和可维护性。 

记录良好且经过测试的代码,应遵循编写应用程序所用编程语言的格式最佳实践和编码约定,这对于长期成功和无错误执行(或任何人都尽可能接近无错误)至关重要合理预期,不能压扁他们的人所有。)

外包发展离岸团队时保持代码的质量要求的期望沟通,放下提前质量基准,并与团队定期通报停留在发展的努力之上。 

您要外包的团队应该有适当的检查,以确保代码质量的一致性。在您注册公司之前,请询问他们是否采取了诸如代码审查(点对点和管理),单元测试以及功能测试之类的措施。这些预防措施将有助于确保在发布给您之前,他们已经开发了一个强大的应用程序。 

我建议您在选择要查找的基础知识时,要建立一些基本的质量保证流程,其中包括进行全面的应用程序测试(包括对代码进行任何更改时都进行回归测试以及使用项目管理工具记录问题和管理积压工作)。外包您的工作。   

4.利益相关者的歧义

缺乏项目所有权是外包的最大弊端之一。如果您选择的外包合作伙伴是按合同而不是全职聘用程序员,那么实际的项目所有权就变得很容易。项目中来回的资源可能会导致可交付成果的不一致,因为没有项目负责人或始终如一的团队负责整个工作并在整个过程中负责。

在将软件项目的开发外包时,请确保您了解将由谁负责,并尝试确保至少几个项目经理在整个过程中保持一致。这些是您可以追究责任的人,他们应该在电子邮件线程,视频通话和其他常规签到中出现。 

我发现让业务分析师或项目经理作为团队的主要利益相关者非常有帮助。此人可以充当您和开发人员之间的促进者,记录功能规格并分解对开发人员的要求。

当您选择外包合作伙伴时,不仅要编写代码,还要投资于为客户提供出色的用户体验的开发人员是另一项资产。寻找一家可以成为您项目潜在的利益相关者并且致力于寻找正确的解决方案而不是实施快速解决方案的公司是成功外包的关键。 

5.签订合同时的漏洞

在初创企业的初期,将大量资金用于律师费似乎不是一个可行的选择。但是,合同框架松散,或者倾向于承包商的合同,可能会导致漏洞,外包公司可以利用这些漏洞并造成严重的金钱损失。 

GuardianEYE的联合创始人Yoav Achiam知道写得不好的外包合同的价格。在一篇有关签订外包合同技巧的文章中,他谈到了自己与外包公司签订合同时出了什么问题。“合同不包括时间承诺,分配的人手安排,未按时完成的罚款,或者如果发展速度超出预期,则不予积极加强。” 他写了。事情很快从那里走下坡就不足为奇了。

古老的说法“以书面形式获得”对于软件开发也至关重要。正确起草的合同可以作为外包承包商遵循的路线图,以防万一发生错误的情况,使您免受损失的冲击。  

签订外包合同的最佳做法

起草一份没有任何法律漏洞的紧密合同有助于确保您在应用程序开发过程中不会错过任何重要问题。在与外包代理起草合同时,应牢记以下几点。 

  • 概述可交付成果以及时间表:合同需要以功能列表或用户故事以及承包商能够完成工作的估计时间表的形式清楚地说明预期的可交付成果。遵循敏捷开发方法并将需求分解为冲刺的外包机构可以帮助准确地了解开发进度。 

  • 与基于时间的联系相比,基于功能的联系:代替基于时间的合同来概述基于时间的开发和部署,而是拥有一个基于功能的合同,该合同优先考虑编写良好且经过全面测试的应用程序,而不是让开发人员只愿意坚持使用时间表。将可交付成果划分为任务级sprint,有助于确保您要外包的公司的所有权和责任心。 

  • 基于里程碑的付款:将项目分解为不同的里程碑,并根据这些里程碑的实现来定义付款时间表,从而简化了付款结构。计划定期的后续活动以实现里程碑并安排与团队的站立会议。制定基于里程碑的付款时间表可以使合同更加清晰明了,并且可以轻松解决付款冲突。 

  • 灌输代码保证:没有代码保证的应用程序接受是一个很大的禁忌。您签署的合同应指定您收到的代码没有任何恶意软件,并指定验收测试期限。5-10天的期限是一个合理的期限,在此期限内,应解决由应用程序中发现的所有错误,并由承包商承担费用。合同还应指定如何管理网络托管或应用商店提交的内容

  • 维护支持合同:任何没有价值的外包公司都不会在没有任何支持合同的情况下让您大吃一惊。维护支持合同应明确说明团队为他们构建和交付的软件提供支持的期限。在项目中指定支持还可以增强开发人员在构建应用程序时的主人翁意识。他们知道草率的代码将为他们带来更多的工作。 

  • 知识产权:作为客户,您拥有项目的完整权利,但请通过在合同中包含知识产权条款来确保拥有书面权利。如果将来出现任何侵犯版权的问题,这将使您免于头疼。这也将防止承包商在将来为可能的竞争对手工作时重用为您的应用程序编写的代码。 

  • 保密协议:保密协议是一项保密条款,可确保您与承包商共享的专有信息的保密性。这样可以确保您的应用创意无法复制或与他人共享。保密和保密协议不仅应与外包机构签署,还应与个人开发商签署。这样可以防止编码人员离开外包公司并自己从事您的业务构想。 

  • 赔偿条款:赔偿条款是合同中包含的法律规定,涉及您与外包机构之间的风险责任分配。它指出谁承担法律费用,并为正在开发的应用程序中出现的任何诉讼付费。 

  • 终止条款:尽管您希望事情会顺利进行,但始终建议为最坏的情况做准备。确保您的合同中包含终止条款,该条款明确说明了当事情进展缓慢且项目未能完成时将采取的行动过程。 

  • 解决问题的司法权:外包使软件开发成为真正的全球过程。确定发生纠纷的司法管辖区,并在合同中提及争议是确定合同所依据的法律所必需的。