在后泡沫时代,IT 预算被大量削减,造成预算供不应求,于是经理们不得不寻求更具有成本效率的解决方案。在这样的情况下,流向新兴市场国家的外包软件开发(离岸开发)的趋势开始增强。经济驱动力并不是造成这种趋势的唯一动力。最近由通信基础结构的进步所带来的迅猛增长也发挥了重要作用。
无论是传统的分布式团队还是特别的离岸外包,都可使用 Internet 协议 (VoIP) 软件、即时通讯软件、电子邮件客户端和 wiki 更方便的进行在线通讯。而且,现在人们更加倾向于使用 wiki 等在线工具而不是进行个人通讯,因为这些工具不但能够传达信息,还有助于组织和存储信息。这些工具还可以有效地将信息分发给大量接收者。
这些可在全球范围内使用的快速 Internet 连接同样增强了其他工具的功能,这也是加速离岸外包的原因之一。通过建模工具,分布式团队更容易理解文档。错误跟踪器、源代码控制服务器、Web 门户和在线协作工具都有助于协调分布式项目。终端服务和虚拟机简化了远程测试和管理。
在 Internet 的影响下,新兴市场国家也开始发展高科技。Internet 跨越了政治边界,在俄罗斯和中国等发展中国家,成千上万的年轻人可通过它来学习最先进的技术并提高他们的英语水平。这种通过在 Internet 上接受教育来成为软件工程师的新浪潮也加剧了离岸外包的趋势。
但是离岸外包的飞速增长也引起了政治辩论。这场讨论假设离岸开发的存在具有现实意义,而且我们将着眼于最大化外包聘用所带来的回报。政治因素不会影响我们的决定,不过我们会参考 McKinsey Global Institute 经研究后提供的资源列表,因为这里量化了外包为美国经济带来的益处,同时也驳斥了一些关于外包的神话。
敏捷软件开发趋势
现在来讨论一下国内的情况。在国内,很多经理和工程师都在深思现在出现的另一个趋势:敏捷软件开发。在当今不断变化的商业环境中,缓慢的“重量型”方法无法满足要求。现在需要用更少的投入产生更大的利润,而且官僚作风再也不是获得投资回报 (ROI) 的最佳方法。敏捷方法的优势在于它的协作、灵活性,以及它对软件的商业价值作出的贡献,这体现在“敏捷宣言”的核心原则中:在过程和工具的基础上独立工作和交互、在综合文档的基础上使用软件、在合同谈判的基础上进行客户协作以及在遵循计划的基础上对变更做出响应(请参阅资源)。
敏捷方法在很大程度上满足了基于 Internet 的新型创业(通常称作 Web 2.0)。某些新型创业通过敏捷软件开发可以付出更少、获利更多,而且可以通过小型团队以很小的预算完成大型项目。这种短迭代和工作软件原则反映在一种称为“不断测试”(constant beta) 的实践中,该名称源于一些 Google 产品(其徽标中包含了“beta”一词)。
然而,敏捷方法不是“通用型”的方法。该方法最适合小型的、同一地点的团队用来应对飞速变化的情况。
尽管在某些情况下应用敏捷软件开发会遇到问题(例如将其应用于使用离岸外包的分布式开发中),但是在过去的五年中,我成功地将敏捷开发的原理应用到了分布式团队中,这说明只要使用得当,这种开发方式也可带来巨大的回报。
还有其他一些说明敏捷软件开发会带来问题的案例。这些案例是:大型开发团队(一个独立项目有 20 名以上的人员参与)、可预见性至关重要的系统(生命关键应用程序)以及官僚环境。我们不会在这里讨论这些案例,而且我们会假设公司已经将敏捷开发融入其企业文化之中,并且打算将这里列出的观点应用到不足 20 人的软件团队中(这里的 20 人是指某个特定团队或项目的人数,而不是整个开发团队的人数)。我们会讨论如何将敏捷方法应用到传统的分布式开发和特别的离岸外包。
结合趋势
离岸软件开发交易中存在各种不同的聘用方式,可从 rentacoder.com 雇用一个国外开发人员,也可与拥有海外分公司的美国公司进行上亿美元的交易。不过即使交易的某一方希望采用敏捷软件开发过程,某些交易也不会按照这样的过程来安排。
要执行敏捷过程,所选的外包模式应该鼓励通信和协作,具有灵活性,以及经常发布。能够在外包交易中采用的标准有很多,不过其中最值得关注的是定价模型。关于最常用的定价模式计划,请参阅图 1。
可预测的结果暗示了可预测的过程。图 2 中列出了按预测自适应等级进行排列的开发过程组。如果使用预测自适应标准和可预测模式(这更靠近等级的左端,请参阅图 1),则软件开发过程需要具有更大的可预测性;同时敏捷开发过程会处于软件开发过程整体的另一边。
可预测性因素与“固定范围-固定价格”的聘用方式密切相关。如果在外包交易中采用此类合约,则客户和供应商都只能采用可预测软件开发过程及其结果。因此这类合约不适用于敏捷软件开发。所以在制定外包聘用时,请记住鼓励采用时间和材料等的定价模型来应对变化,这既为客户和供应商提供了灵活性,也更适合进行敏捷开发。
处理这项交易时,需要考虑所选模式将如何影响通信和协作。敏捷开发过程需要开放的环境、联系紧密的合作团队、共同的目标、显而易见的商业价值和频繁的沟通。工程师、客户、用户、经理和其他股东之间的壁垒越多,进行敏捷软件开发就越困难,这意味着需要减少中间人以在团队之间最大化透明度和集成性。
重量级人物们通过在其他国家建立分支机构来处理这个问题,如果公司希望自己的海外开发中心拥有 100 名以上的工程师,这是很有经济意义的。工程师的确切数量在很大程度上依赖于其他国家的实际情况,例如该公司是否能轻易地在这些国家招募到人才。
文章来源于领测软件测试网 https://www.ltesting.net/