何时升级到新版本的语言或框架?

时间:2009-05-05 11:00:19

标签: language-agnostic technical-debt

当出现新版本的框架或语言时(例如.NET 3.5,SQL2008),人们采用什么方法来采用/升级?

一般情况下,开发人员会尽快说明(他们希望在自己的简历和管理层的角度为他们提供他们想要的东西提供动力)但商业上通常没有什么动力(很少有客户要求最新版本)和来自从成本角度来看(重新测试,培训)通常会产生抑制因素。

我特别想到“正在进行”的系统和项目(例如在软件公司中),这些系统和项目多年来一直存在和发展,其中“新项目使用新技术”的方法不起作用。

人们是否受特定要求的驱动(需要使用新功能,潜在或现有客户要求支持它),他们是否正式评估它(在这种情况下是什么标准)或者他们是否升级了常规(在这种情况下 - 前沿与出血边缘)?

人们是否认为不使用最新版本的东西应被视为技术债务并按此管理?

或者“如果它没有破坏不修复它”是一种有效的方法吗?

7 个答案:

答案 0 :(得分:5)

阅读Technical Debt。这是一个简单的成本效益决策。

“如果它没有破坏不解决它”是一个共同的管理政策,“明天的美元不值得今天,所以不计划未来的改进。”最终,技术债务累积到产品无法再跛行的程度。

最常见的突破点是不再支持某些基础架构。到那时,增量变化是不可能的。

从头开始重塑是一项新的资本投资。修复现有代码是一项费用。这些帐户迫使管理层做出技术上疯狂的决定。

对于开源软件,它需要仔细的技术管理,因为Oracle / Sun没有正式的“支持日落”公告。当然,糟糕的技术管理会导致技术破产。

答案 1 :(得分:2)

我们会查看支持生命周期成本。支持旧版本需要多长时间,费用是多少?与大型机环境相比,Windows和Java等平台的发展速度较快,在这些平台上开展业务的部分成本是定期升级。在一个理性的世界里,就是这样!

新版本可以拥有我们需要的杀手级功能 - 但这在企业开发中很少见。新版本的主要卖点(与过期支持等负面卖点相反)倾向于更高的开发人员效率,这很难衡量。与此相反,正如您所指出的那样,必须考虑再培训的成本,不仅对初始开发人员而且对于维护而言至关重要。在每次升级中,一些应用程序往往会因为过于关键而无法退出,而且升级过于昂贵/脆弱。随着时间的推移,您必须支持的数量平台和版本会增加整体技术债务(无论其年龄)。

升级到新版本(您注意到)的另一个标准是吸引和留住员工的能力。在当前的经济阶段,这是第二小提琴,但仍然不能完全被忽视。你想要至少有一个热情和知识渊博的开发人员的调味品。

答案 2 :(得分:2)

我认为,如果您从未升级平台/语言版本,那么您的应用程序是否能够长期存活是一个至关重要的问题。如果你认为它不能,你也可以尽快升级,因为它只会变得更难。

考虑在您需要完全重写之前应该多久主动开发您的应用。如果你从未打算重写它,我会不断升级。如果您使用的是过时的技术,请考虑找到最好的开发人员会有多困难。考虑一下新的框架/语言功能如何能够在短期内加速您的开发过程,以及一些短期的痛苦。

答案 3 :(得分:2)

当你真的需要时。 .NET 1.0很糟糕,1.1是一个很好的升级,但使用VS2003进行Web开发并不是那么顺利。使用VS2005和.NET 2.0改进了一些东西 - 我看到仍有许多开发人员和公司都坚持使用.NET 2.0。以前的版本是如此新鲜,版本2.0是成熟的技术。那么,如果您对1.1感到满意,为什么要升级?如果您现在对2.0很满意,为什么要升级到3.5或4.0?

答案 4 :(得分:1)

升级的好处(更多功能,或您需要的修补程序)超过所涉及的风险/成本(新问题,破坏现有代码)。

答案 5 :(得分:1)

当您为基于Microsoft的平台(如适用于Windows的Windows窗体应用程序或适用于Windows Server的ASP.NET webapp)进行开发时,迁移的最佳时间是每两个主要版本的操作系统。例如,如果您的应用程序已经开发对于Windows 2000,你应该迁移到Vista,虽然XP可以忽略不计。同样,如果它是为XP SP2设计的,你可以放心地忽略Vista并定位Win 7.通常微软从不会破坏(或很少打破)增量操作系统更新。所以在今天的操作系统上运行的应用程序肯定会在下一个运行。但从来没有跟随它。 (如果运行,M $如何赚钱?)

来源:自我... Windows开发人员超过5年)

答案 6 :(得分:1)

我正在尽快升级(虽然我可能会在新版本问世后等待一个月,以防未解决的问题)。您需要考虑以下几点:

<强> 1。安全发布

许多告诉我它是否没有破坏的人都没有修复它也是那些在发布安全补丁时会闭上眼睛的人。想想Equifax。

对我来说,至少在安全支持的框架版本上是道德责任。我们有责任保护他们的数据。

<强> 2。吸引&amp;留住人才

有很多关于编程语言或框架使用无关紧要的讨论。但根据我的经验,Web应用程序最干净的代码和设计通常由对框架和热情充满热情的人编写。由于他们的经验而使用的编程语言专业知识。

如果您坚持使用非常旧的版本,这些人不太可能长期待在一起或加入您的公司。请考虑一下开发人员的快乐。

第3。较新版本

提供更新,更简单的方法

很多时候,框架的新版本会让事情变得更加容易。如果我们不进行升级,我们会错过良好的新软件包/功能,并且我们以令人沮丧的方式编写代码,因为知道有更简单的方法来实现相同的功能。当升级时,我们可能最终不得不再次改变新的方式。那么为什么不升级并使用新的更好的方式并浪费更少的时间呢?