当前位置: 首页 > 科技观察

持续更新是软件项目的医疗保险

时间:2023-03-18 16:48:00 科技观察

其实软件很像房子。如果你想让你的房子整洁舒适,你必须每周打扫一次。随着时间的推移,出现问题,您必须修复它或用新的替换它。但大多数时候,您需要做的只是简单地粉刷门窗。如果房子保养得好,人们会喜欢住在里面。但是想象一下你现在要离开这所房子。起初,房子会保持良好的外观,里面一切正常。然而,一旦没有人扫地或倒垃圾,房子就开始积灰。过了一会儿,事情开始出错了。起初只是一些不重要的小事出了问题,但有一天一场风暴袭来,摧毁了很多东西。坏了的东西不修好,房子就会年久失修。不一会儿,房子变得破败不堪,再也没有人愿意去那里了。人们会告诉你建造一个新的比修复它更好。这同样适用于任何软件产品。假设一个项目是由你们7人组成的团队开发的。每周您都会添加新功能或修复错误。随着项目的增长,您将进行一些重构以保持软件架构的健康。你们会做一些迁移工作。软件包会不时更新以修复错误、安全漏洞和新功能。之后,开发工作戛然而止。也许上面有人决定不再向该项目投资。决策者说:“这个软件很好用。我们只需要它保持这种状态,我们不会花钱添加新功能。”所以你的团队被分配了其他任务,这个项目就变成了被忽视的项目。该系统仍在正常运行,每天为现实生活中的人们提供服务。几年后,突然里面的支付系统不正常了。发生了什么?多年来没有人接触过代码。怎么突然不行了?怎么会这样?一不留神,暴风雨来了……要知道,今天的软件已经不再是一个自给自足的世界了。基本上所有软件都与外界交互。软件取决于操作系统、硬件,可能还有数据库或其他后台服务。它甚至依赖于一些外部API。它们都是动态的,不断变化的。因此,您的软件需要更改才能保持运行。在我们的案例中,这是因为欧盟通过了一项统一货币的新协议。这导致不再支持旧的支付API。这似乎不是一个大问题。我们的上层决策者决定聘请一名Ruby程序员来解决这个问题。这是一个RubyonRails+MySQL项目。很常见。Ruby程序员上来很快,估计一两天左右就能解决问题。然后Ruby程序员开始查看项目代码并意识到这是一个使用Rails2.x而不是Rails3.x或4.x的非常古老的项目。不,当前版本下面有两个主要版本号。他从来没有用这么旧的Rails版本开发过。然后让他吃惊的另一件事是MySQL是4.0版,而不是5.0或5.5。不,一个主要版本号低了!项目中的MySQL驱动gem使用的是nativeextension,由于他的gcc太新,无法在他的开发机上编译。他必须降级gcc编译器版本才能安装旧的数据库驱动程序。我只会在这里停下来。我想你已经知道我想表达什么了。因为这个项目已经很多年没有维护了,所以现在即使是一个小改动都非常痛苦。一个根本用不了一天的小bug修改现在用了一周。而Ruby程序员真的不喜欢他正在做的事情。所有其他程序员都可以在Rails4.x中使用诸如“Turbolinks”之类的有趣功能,而他仍在处理这个老废话。他宁愿建议放弃该项目并使用当前最先进的技术开发一个新项目。教训很清楚。如果您已经离开家几年,您应该让管家每周清洁一次,在软件开发领域,这意味着您应该每周花一点时间检查您的系统并更新依赖项。很多时候没有可用的更新,外界也没有任何变化。在这种情况下,您可以在5分钟内维护它。很多时候你会发现一个包的新补丁或次要版本升级。此时,您必须升级以查看测试是否仍然通过并且系统可以正常工作。这种事情通常需要20分钟,而且完全值得投资,因为这些升级修复了错误、弥补了安全漏洞并带来了新功能。有些还带来了内存和速度的优化。一般每隔几个月,你所依赖的数据库或API等软件包都会有一次大版本升级。更换它们可能需要数小时,甚至数天。但这是值得的,因为这些升级将使您的软件保持最先进的状态,这是吸引有才华的程序员使用它的一种方式,他们都喜欢最先进的技术,而不是一堆旧代码。有时这些更新是必要的,没有它们您的应用将无法运行。持续更新是为了让软件常年保持活力、健康和新鲜。这样可以保证即使业务逻辑发生重大变化,也能在合理的预算和可接受的时间内完成。持续更新是您软件项目的健康保险。英文原文:Whyyoursoftwareprojectwillslowlydiewithoutcontinuousupdating翻译链接:http://www.vaikan.com/why-your-software-project-will-slowly-die-without-continuous-updating/