为什么 Web 应用程序维护更重要
已发表: 2022-03-10传统的软件开发人员一直在向我们隐瞒一个显而易见的秘密。 这甚至不是一个有争议的事实。 这是他们商业模式的一部分。
我们谈论的是高端企业软件供应商还是小型软件公司,它们编写了我们在工作或业务中日常使用的工具,例如免费的系统日志管理器,这并不重要。 它就在前面和中间。 他们没有隐藏的额外费用,我们已经习惯支付这些费用。
那么这个秘密是什么?
嗯,许多传统软件供应商通过维护他们编写的软件赚的钱比他们在最初销售时赚的钱更多。
不服气?
快速搜索“总拥有成本”一词将为您提供许多类似的定义,例如来自 Gartner 的定义(强调我的):
[TCO 是]实施、操作、支持和维护或扩展和停用应用程序的成本。
此外,斯坦福大学的这篇论文断言,维护通常占软件产品 TCO 的 60% 到 90%。
让它沉入一分钟是值得的。 他们通过销售持续的支持和维护计划,远远超过了最初的购买价格。
我们不推动维护
我看到的问题是,在 Web 开发行业,Web 应用程序维护不是我们关注的事情。 我们可能会将它放在我们的提案中,因为我们喜欢每月保留的想法,但它们可能会涵盖简单的内务管理任务或新功能请求。
在我们的报价中为以后的迭代隐藏必要的升级和优化并不是闻所未闻的,因为我们不确定客户是否愿意为我们认为必要的改进付费。 我们试图让他们从后门进来。 或者换句话说,我们不是公开透明的,就像更传统的软件一样,这些应用程序需要维护。
不管原因是什么,很明显我们正在为未来储存问题。 我们正在构建的软件应用程序是长期存在的。 我们需要像传统软件供应商一样思考。 从现在开始,我们的软件仍将运行 10 年或 15 年,并且应该保持良好的维护。
那么,我们该如何改变呢? 作为一个行业,我们所有人如何确保我们的客户受到保护,从而使事情保持安全和最新? 同样,我们如何才能分到维修蛋糕呢?
什么是维护?
在他们 2012 年的论文有效应用程序维护中,Heather Smith 和 James McKeen 将维护定义为(重点是我的):
将应用程序移植到新服务器、与不同操作系统交互、升级到新版本、更改税表或遵守新法规——所有这些都需要应用程序——维护。 因此,维护的重点是升级应用程序,以确保其保持生产力和/或成本效益。 焦点小组首选的应用程序维护定义是——对应用程序进行任何修改以纠正故障; 提高绩效; 或使应用程序适应变化的环境或变化的要求。 因此,严格来说,向现有应用程序添加新功能(即增强功能)不被视为维护。
换句话说,维护是需要在软件应用程序上执行的基本工作,以便它可以继续可靠和安全地运行。
它没有添加新功能。 它不检查日志文件或确保备份已运行(这些是内务管理任务)。 它正在开发代码和底层平台,以确保一切都是最新的,它可以按照用户的期望运行,并且灯会一直亮着。
这里有一些例子:
技术和平台变化
第三方库需要更新。 底层语言需要更新,例如 PHP 5.6 到 PHP 7.1 现代操作系统会定期发送更新。 最重要的是维护,有时还需要更改代码库,因为做某些事情的旧方法已被弃用。缩放
随着应用程序的增长,将会出现资源问题。 每天处理 10,000 笔交易的代码中的例程与每小时 10,000 笔交易相冲突。 需要监控应用程序,但也需要在触发警报时采取措施。错误修复
显而易见但值得明确。 该软件有错误,需要修复。 即使您在交付项目后包含一小段免费的错误修复,在某些时候客户也需要开始为这些付费。
难卖?
有趣的是,当我与同行讨论这个问题时,他们觉得很难让客户相信他们需要维护。 他们担心他们的客户没有预算,也不想给人留下太贵的印象。
好吧,事情是这样的:它实际上很容易卖。 我们正在与商务人士打交道,我们只需要以商业术语与他们讨论维护问题。 业务人员了解资产需要维护,否则它们将成为负债。 这只是另一个标准的持续每月开销。 做生意的成本。 我们只需要把它放在我们的提案中,并确保我们跟进它。

一个非常有效的方法是提供一个保留器,它以维护为核心,但也为客户捆绑了很多额外的价值,比如:
- 报告进度与 KPI(例如流量、转化、搜索量)
- 每月有限的“空闲”时间对网站进行小幅调整
- 报告停机时间、服务器更新或已完成的开发工作
- 通过电话联系您或您团队的特定成员以回答问题
事实上,您可以让聘用者为客户节省资金并为自己买单。 一个很好的例子是客户要求每月从数据库中获取一份简单的报告或导出以进行离线处理。
您可以引用一些开发日来构建一个(可能比最初假设的更复杂)报告用户界面,或者将客户指向您的保留者。 在其中包括每个月的任务,让开发人员手动运行预设的 SQL 查询以手动提供相同的数据。
对您或您的团队来说是一项微不足道的任务; 对您的客户有很多价值。
一个实际的例子
当然,您会有自己的方式来编写提案,但这里有一些来自示例推介的片段。
在您可能描绘未来愿景的提案部分中,您可以添加一些关于维护的内容。 以此为契机,播下建立长期关系的种子。
您正在寻求将长期风险降至最低。
您希望确保您的应用程序运行良好、保持安全且易于操作。
您还了解维护对任何业务资产的重要性。
稍后,在可交付成果部分,您可以添加有关维护的部分,作为独立选项或与正在进行的保留器捆绑在一起。
在以下示例中,我们保持简单并将其与预付费开发保留器捆绑在一起:
我们强烈主张所有客户都将维护视为其网站的基本开销。 现代 Web 应用程序需要维护,就像您的房子或汽车一样; 你 保持 你 的 资产 以减少 它们 日后 成为 负债 的 有形 风险.
作为一个热衷于保持应用程序维护以及添加新功能的客户,我们建议每月 N 天(作为起点)进行一般维护和开发保留。
我们会将事情分散开,以便开发人员至少 [每周/每月的某个时间段] 在您的系统上工作,这为您提供了明显的优势,即如果在 [同一时间段] 出现问题,开发人员能够切换到更重要的东西. 根据您的优先级,时间可以全部用于新功能工作或用于维护,这由您决定。 我们通常建议在新功能和重要维护之间分配 75%/25%。
如前所述,这也是一个很好的机会,可以将维护与其他增值的持续服务(如性能报告)、执行内务任务(如检查备份)以及可能每月讨论进度和优先级的电话联系起来。
您可能会发现,在您完成工作后,就不再提及固定器了。 这是可以理解的,因为您和您的客户在项目开始时需要考虑很多事情,但是随着项目的结束,是重新引入它作为项目卸载过程的一部分的好时机。
无论是谈论第 2 阶段还是简单地介绍最终发票并移交,都提醒他们注意维护。 提醒他们正在进行的培训、报告和可获得支持。 推动保留者,记住用同样的商业术语说话:他们的新资产需要维护才能保持闪亮。
维护会很烦人吗?
一个常见的误解是维护固定器可能成为额外的负担。 令人担忧的是,客户会不断给您打电话,并要求您进行一些小的调整,作为您聘用的一部分。 对于较小的团队或单独的顾问来说,这是一个特别关注的问题。
但通常情况并非如此。 也许一开始,客户会有一个需要解决的问题列表,但这是课程的标准; 如果你有经验,那么你期待它。 这些很容易通过改进沟通渠道(使用问题跟踪器)并将所有请求集中在一起来管理,即一次性处理它们。
随着应用程序的成熟,您将进入滴答模式。 这就是保持器对双方特别有价值的地方。 这显然取决于您如何构建保留者,但从您的角度来看,您每个月都在努力提醒客户您的价值。 您可以将您的月度报告发送给他们,告诉他们您是如何解决该例程中的减速问题的,并且服务器已针对本周的全球操作系统漏洞进行了修补。
当然,您也可以参与一些额外收费的新请求功能。 从您的客户的角度来看,他们看到您在那里,他们看到了进展,并且他们可以从他们的列表中删除“对网站的担忧”。 显然,“那些客户”确实存在,所以最重要的是让你的聘用者措辞正确并相应地管理期望。
如果您的客户希望以较低的月费获得成功,请推迟或重新谈判。 在提供月度报告和其他辅助任务中,每月付钱给你做两小时的维护和家政服务就是这样; 进行大量临时更改并不是一张空白支票。 提醒他们什么包括在内,什么不包括在内。
我们如何使维护更容易?
最后,为了确保为您的客户带来最佳价值并让您的生活更轻松,在构建应用程序时使用其中一些策略。
长期支持 (LTS)
- 使用具有良好记录的 LTS 版本和升级路径的技术平台。
- 对于所有项目,都应该预期并考虑到正在进行的操作系统、语言、框架和 CMS 升级,因此跟踪 LTS 版本是轻而易举的事。
- 一切都应该在受支持的版本上运行。 如果不是这种情况,应该敲响大警钟。
良好的项目卫生
- 在您的功能积压或问题跟踪系统中公开维护任务,并与您的客户就优先事项达成一致。 不要隐藏维护任务。
- 代码级别和功能测试使您能够密切关注特别有问题的代码,并且在将模块拉出进行重构时会有所帮助。
- 监控应用程序并了解瓶颈和错误在哪里。 任何问题都可以添加到开发积压中并相应地确定优先级。
- 监控支持请求。 最终用户是否向您提供了可能表明维护要求的有用反馈?
应用程序应该是可移植的
- 任何开发人员都应该能够在本地轻松启动和运行系统——不仅仅是你! 使用虚拟服务器或容器来确保应用程序的开发版本与生产版本相同。
- 应用程序应该有很好的文档记录。 至少,配置和部署工作流程以及部署到现场所需的任何特殊咒语都应该被记录下来。
维护是真正的双赢
维护是我们需要对应用程序进行的工作,以便它可以安全地静止不动。 这是一个标准的商业成本。 在软件应用程序的生命周期内,平均占总拥有成本的 75%。
作为专业人士,我们有责任从一开始就对客户进行有关维护的教育。 这里有一个巨大的机会来获得额外收入,同时为您的客户提供有形价值。 您可以保持持续的商业关系,并且当他们有新要求时,您将成为他们求助的第一人。
通过您的聘用人继续提供价值将建立与客户的信任。 您将获得一个平台来建议增强功能或新功能。 工作,你有很大的获胜机会。 您的客户降低了他们的生命周期成本,他们降低了风险,并且他们不再担心性能或安全性。
帮您自己、您的客户和我们整个行业一个忙:帮助使 Web 应用程序维护变得更加重要。