加速创新:自动化软件开发赢得竞争优势
传统软件开发缓慢,亟需重新思考。
近三年前,微软Satya Nadella名言“每个企业都将成为软件企业”。如今,5000亿美元全球软件市场有望在2030年翻倍至1万亿美元。
据最新文件披露,J.P. Morgan拥有40,000名软件工程师(超过Alphabet)。各大企业竞相招募工程师以在开发上超越竞争对手。核心问题在于:传统软件开发缓慢、碎片化且浪费严重。
例如,平均软件工程师每周花费4小时等待测试完成、3.5小时等待构建、3小时进行环境管理——超过四分之一工作周未创造任何价值。考虑到工程师往往是组织薪酬最高群体,这显然是大问题。然而,局面正在改变。
领先开发平台CircleCI押注AI和自动化是加速软件创新、释放工程师从事重要工作的关键。过去一年,公司推出多项自动化和机器学习增强功能,将工程师等待时间减少50%。这也是Facebook、Spotify、GoPro、InstaCart等30万以上开发者转向CircleCI加速交付的原因之一。
公司由Jim Rose领导——六次创业者,曾获Google Ventures、Foundation Capital及Marc Andreessen投资。四年前加入CircleCI以来,Rose将营收提升450%以上,打造出真正令人振奋的实体。
为深入了解自动化软件开发与加速创新,Information Age专访了Rose。
软件市场现状如何?
目前,仍有大量公司和个人手动执行各类流程。谈数字化转型,实质是培育软件开发团队。
一是将软件从本地数据中心迁移至云原生环境,即时获取算力。
二是软件传统上常被视为指导方针或主营业务的附属。现在,从银行到车企再到零售商,各类企业都意识到软件是核心业务。因此他们需要弄清拥有何种资产,并将其整合为标准。
企业拥有即时算力并建立开发者可工作的结构后,中间通常是各种平台和流程的大杂烩。
大多数情况下,存在漫长的瀑布式软件发布流程,包含大量手动步骤和脚本。较先进的团队虽可能部署第一代自动化解决方案,但随着团队提速,这些方案开始失效。
这正是我们介入帮助企业导航的领域。随着软件团队提速、构建更多软件并试图更快交付,为响应市场机遇也应对潜在负面变化,企业需彻底重新思考如何整合所有环节。
您提到的速度是软件开发的主要障碍吗?
企业和开发团队试图加速以适应市场加速。他们在思考:如何快速工作以抓住机遇?
唯一途径是自动化所有不一定需要人工干预的步骤,因为原本需耗费分钟、小时、天的任务,自动化后可在秒级完成。
随着团队提速,软件成为面向客户的主要门面,必须保证高质量——不崩溃、无安全漏洞等。
所以,敏捷关乎从质量和速度两个维度变得更灵活。
在美国全是追求速度,但通过更快集成更小代码块、更持续地发布软件,软件质量天然提升。当每周部署5、8、15次,甚至客户每天部署100次时,部署不再是问题。
质量方面,过去软件开发的一大痛点是:若每季度仅发布一次,很难确保引入应用的所有变更协同工作。常见大爆发式发布后,接下来60-90天都在修复回归和故障。此模式下,软件周期放缓,应用质量也受损。
这是敏捷视角试图解决的问题。
组织如何变革以适应、支持并培育软件开发团队?
有几个不同途径。
一是开发者难招,所以要确保开发视角的所有时间都用于构建核心软件——银行做优秀银行应用,电商做优秀电商应用。我认为一个严重投资不足的领域是:软件开发者历来只管“建设”。开发周期在第三方应用视角上投资不足。
例如测试自动化和持续交付基础设施,团队不应自行构建。最好从专业厂商获取,专注于擅长的核心业务。这就像让人造咖啡机却只给铜管、焊锡和阀门——绝不会这么做。但历史上开发常被如此对待。因此,从数据中心到规划工具,全栈部署正确工具和平台至关重要。
二是传统瀑布模型中,软件开发通常扮演“接手者”角色,应用在流程早期定义,等开发团队接手时,已做出许多决策,未必可行或易于实施。
“左移”概念试图将开发推向规划周期更早阶段,让开发团队的关切和需求在应用构建和交付中被考量。从运维视角看,意味着更早考虑应用如何运维。例如构建云原生应用,需特定架构,决策必须更早参与。
当团队采用更多软件优先、敏捷流程,会形成三角关注:业务所有者和产品经理负责“为何构建”;技术架构师和开发者讨论“如何构建”;运维人员负责“最终运行什么”。所有人都需参与,对某些企业而言转型艰难。
AI和自动化如何刺激并改进软件创新?
自动化可处理预定任务和自学习任务。例如,每次发布软件都需对第三方支付系统进行第三方测试。过去需雇佣QA团队手动处理交易,极慢且极易出错。
这些是测试套件中应完全自动化的完美案例——所有重复执行的已知任务,自动化使其确定性、可预测、快速。
存在机会将开发者反复执行的重复任务自动化,任何一分钟重复劳动都是时间浪费、金钱浪费。
观察AI与软件构建,不是推送预测性确定性软件,而是推送模型。模型是关于事物如何运作的预设概念沙盒,随着人员操作、测试运行,模型随学习不断变化演进。这给测试系统带来巨大压力。
考虑AI失误:无意识偏见内置于AI,导致AI失控阻止特定人群访问应用或关停系统,这些都是测试视角的挑战。
复杂度增加,但速度和响应性大幅提升。AI和机器学习在软件开发中的融合只会持续增加。但现在需要所有必要框架以测试这些变化。
自动化控制系统