其实软件很像房子。

想让你的房子整洁舒适,你必须每周打扫。随着时间的流逝,有些东西会出问题,你必须修理它或换新的。但大多时候你需要做的只是简单的给门或窗刷一道漆就行了。

如果房子料理的好,人们就会喜欢住在里面。

但想象一下,你现在要离开这个房子。刚开始,这个房子还会保持不错的外观,室内一切正常。可是,一旦不再有人打扫地板或清理垃圾,房子就开始落灰积沉。一段时间后有些东西开始出问题。起初只是一些小的、不重要的东西出问题,但有一天一场暴风袭击了它,毁坏了很多东西。

如果这些毁坏的东西没有人来修理,房子就会持续破败。

一段时间后,房子变得破败不堪,没有人再愿意去哪里。人们会告诉你,与其去修好它,不如盖个新的。

对任何软件产品来说,道理是一样的。

假设一个项目由你们7个人的团队来开发。每周你们会往里面增加新功能或修改bug。随着项目的变大,你们会做一些重构来保持软件架构的健康。你们会做一些迁移工作。时不时的升级软件包来修补bug、安全漏洞和新功能。

之后,开发工作突然停止了。也许是上级的某个人决定不再往这个项目上投入更多的资金。决策者说:“这个软件运行的很好。我们只需要它保持这样,我们不会再花钱来添加新功能。”

于是,你们这个团队被分配了其它任务,这个项目变成了没人照料的项目。系统目前还是正常运行,每天都在给现实生活中的人们提供着服务。

几年后,突然里面的支付系统出现异常。发生了什么?多少年都没有人碰过这些代码了。它怎么会突然的就不能用了呢?怎么可能?

无人照料,一场风暴来临了…

你 需要知道,如今的软件不再是一个自我封闭的世界。基本上所有的软件都会和外部世界进行交互。软件要依赖操作系统,硬件,很可能还会有个数据库或其它后台服 务。甚至还依赖一些外部API。它们全部是动态的,不停的在变化。所以,你的软件也需要跟着变化,这样才能保持正常运行。

在我们的这个例子中,是因为欧盟通过了一个新协议来统一货币。这导致老的支付API不再受支持。

这看起来不像是个大问题。我们的上级决策者决定招聘一个Ruby程序员来解决这个问题。这是一个Ruby on Rails + MySQL项目。很普通。Ruby程序员很快就招到了,而且估计出大概一两天就能解决问题。

然后,Ruby程序员开始查看项目代码,发现这是一个很老的项目,使用的是Rails 2.x,不是Rails 3.x或4.x。不,比当前的版本低两个大版本号。他从来没有用这么老的Rails版本开发过。

而 接着的另一个让他惊奇的事情是,MySQL是4.0版的,不是5.0或5.5。不,低一个大版本号!项目中的MySQL驱动gem使用的是一个本地 (native)扩展,无法在他的开发机上编译,因为他的gcc太新了。他必须降级gcc编译器版本,才能安装老的数据库驱动。

我只打算讲到这里。估计你已经知道我想表达的是什么了。

因 为这个项目多年无人维护,导致现在即使一个很小的改动也变得异常痛苦。一个根本用不了一天的小bug修改,现在用去了一周时间。而且这个Ruby程序员非 常不喜欢他现在干的活儿。其他程序员都可以使用Rails4.x里像“Turbolinks”这样有趣的功能,而他还在跟这些老破烂打交道。他宁愿建议扔 掉这个项目,利用现在的最新技术重新开发一个。

教训是清楚的。如果你离开你的房子几年之久,你应该请一位家政每周清扫一次,而在软件开发世界里,这意味着你每周都应该花一点时间检查系统并更新相关依赖。

很多时候都是没有更新可用,外部世界没有任何变化。这种情况下,5分钟你就能维护完。

很多时候你会发现软件包出现了一个新的补丁或小版本升级。这时,你必须进行升级,看看测试是否仍然能通过,系统是否能正常运行。这种事情通常会花20分钟,完全值得投入,因为这些升级会修补bug,弥补安全漏洞,带来新功能特征。有些还会带来内存和速度的优化。

一 般每过几个月,你依赖的数据库或API等软件包都会有一个大版本号的升级。替换他们可能会花数小时,甚至数天。但这是值得的,因为这些升级会让你的软件保 持最新技术,这是用来吸引有天才的程序员最好的途径,他们都是喜欢最新的技术,而不是一堆老代码。有时候这些更新是必须的,如果不更新,你的应用就无法运 行。

持续更新是为了让软件常年保持生命力,健康和新鲜血液。这能保证即使有业务逻辑上重大修改也能在合理的预算内、可以接受的时间里完成。持续更新就是你的软件项目的医疗保险。

文章转载自 开源中国社区 [http://www.oschina.net]

持续更新就是给软件上医保相关推荐

  1. petapoco mysql_PetaPocoEfCoreMvc[持续更新]欢迎在github上star

    原标题:PetaPocoEfCoreMvc[持续更新]欢迎在github上star Us PetaPoco and Entity Framework Core 进行开发的一个样例项目 PetaPoco ...

  2. linux生物代谢图软件,生物图像处理软件汇总(持续更新)

    生物图像处理软件汇总(持续更新) 生物图像处理软件汇总(持续更新) 前言 成像(imaging)是生物学研究的常用手段之一.然而,对于生物学研究者,如何分析成像后的图像数据是一个普遍的难题.对此,前人 ...

  3. HIS 与医保系统的接入方案及实现

    HIS 与医保系统的接入方案及实现 刘剑锋 李刚荣 第三军医大学西南医院信息科(重庆 400038) 摘要: 目的 建设HIS,迎接医疗改革的挑战.方法 分析HIS与地方医疗保险系统的不同特点, 提出 ...

  4. 广州医保个账支付接口开发 微信医保支付

    一.背景说明 微信医保支付是由微信与各地人社局联合推出的"线上医保移动支付"的结算方式.对用户而言,在人社局指定的医院就医后,可以直接通过微信进行医保支付结算,无需线下窗口排队:对 ...

  5. 贵州农信凭证打印小程序_我的医保凭证小程序入口

     阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都会有分享,都是免费订阅,请您放心关注.            ...

  6. 中央重磅文件明确互联网医疗服务可用医保支付!

    文章目录 中央重磅文件明确互联网医疗服务可用医保支付! 中央重磅文件明确互联网医疗服务可用医保支付! 当下,互联网医疗机构已加入到新冠防治的"主战场",在分流线下诊疗发挥了很大作用 ...

  7. 老太太冒雨交医保被拒收现金?这是对程序员最大的侮辱

    这两天,微博上有一件事情非常火. 一位头发花白的老太太冒雨去交医保,结果被工作人员告知不收现金,要么找亲戚帮忙,要么手机支付,只有这两个方式. 我把完整的视频放在这里了,大家可以看一下... 墙上的& ...

  8. 【支付架构】医保支付-支付宝小程序

    1 方案场景介绍 1.1 背景 据统计2020年全国参保职工医保3.4亿人,其中在职职工2.5亿人,参保人员医疗总费用1.3万亿,其中医疗机构发生费用1.1万亿,医保个人账户支付费用2千亿,占总额的1 ...

  9. 【持续更新】 2022年 (2023届) 计算机 软件 保研经历 保研经验贴 (菜鸟 211 低rank 无科研成果 复旦/浙大/西安交大/中山/武大/华师大/东南/国科大杭高院)

    写在最前 保研之旅已经画上句号了.作为一名边缘人,在排名.竞赛.科研.英语上都很平庸的普通人,一路走来,有太多的不易,太多的心酸. 在保研的过程中,从学长学姐和各类保研经验贴中获取了太多的帮助,汲取了 ...

最新文章

  1. CentOS下查看已经登录用户并踢出的方法
  2. ajax 示例_通过示例了解挥发
  3. 计算机软件选修课选什么好,大学值得选的“选修课”,一点不比专业课差,能选上最好认真听...
  4. 使用handler倒计时
  5. 动手学无人驾驶(7):车道线检测
  6. MySQL Mathematical Functions(数学方法)
  7. kkFileView ---- 文件预览开源项目
  8. 本地jupyter notebook远程连接服务器
  9. 软件过程改进杂谈 00.序
  10. 每周送新书:Python数据分析、SSM框架、Redis深度历险
  11. AIX 系统默认ftp
  12. java车牌号识别EasyPR_EasyPR-Java
  13. Questa-sim安装最后一步点了是之后,安装了hardlock.sys文件导致电脑无限蓝屏重启的解决方案
  14. Android JNI学习-调用第三方SO库
  15. php tp5修改语句,tp5修改(实现即点即改)
  16. 星星是怎么来的?—— CG短片《繁星》幕后分享
  17. 今日头条精准引流技巧,今日头条超简单的引流技巧
  18. 搭建kubernetes集群管理平台
  19. 关闭Vue Eslint语法检查
  20. 解决eclipse报错:错误: 在类中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)

热门文章

  1. 没有申报就对房屋进行装修可以吗?
  2. PPT突然不能翻页了
  3. 测试|模拟器Genymotion、Emulator、夜神配置选择
  4. cpu插槽类型 产品参数解释
  5. mac系统安装Anaconda后再打开终端自动进入Anaconda环境
  6. 播放音乐的开始暂停用一张图片
  7. python实现摩斯密码解密
  8. 软件单元测试要点的一些理解
  9. Tocmat的中文问题解决方法总结:mxz
  10. 猴子吃桃问题:一只小猴子摘了若干桃子,每天吃现有桃的一半多一个,到第10天时就只有一个桃子了,求原有多少个桃?请编程实现。(C++)(迭代法)