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

时间:2022-06-19 11:42:52

When a new version of a framework or language appears (e.g. .NET 3.5, SQL2008), what approach do people take to when to adopt/upgrade?

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

Generally developers will say as soon as possible (they want it on their CV and from a management perspective giving them what they want provides a motivation boost) but commercially there is often little incentive (few clients demand the latest version) and from a cost perspective (retest, training) there is often a disincentive.

一般来说,开发人员会尽快说出来(他们希望在他们的简历上以及从管理角度为他们提供他们想要的东西提供动力提升)但商业上通常很少有激励(很少有客户要求最新版本)并且从成本的角度来看(重新测试,培训)经常有抑制因素。

I'm particularly thinking of "on-going" systems and projects (such as in a software house) which exist and evolve over years where taking the "new projects use the new technology" approach doesn't work.

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

Are people driven by specific requirements (the need to use a new feature, a potential or existing client demanding support for it), do they formally assess it (in which case what are the criteria) or do they upgrade as a matter of routine (in which case when - leading edge vs. bleeding edge)?

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

Do people think that not being on the latest version of something should be considered technical debt and managed as such?

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

Or is "if it ain't broke don't fix it" a valid approach?

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

7 个解决方案

#1


Read up on Technical Debt. This is a simple cost-benefit decision.

阅读技术债务。这是一个简单的成本效益决策。

The "if it ain't broke don't fix it" is a common management policy that says "tomorrow's dollars aren't worth as much as today's, so don't plan for future improvements." Eventually technical debt accumulates to the point where the product can no longer limp along.

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

The most common breaking point is when some piece of the infrastructure is no longer supported. By then, incremental change is impossible.

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

Reinventing from scratch is a new capital investment. Fixing existing code is an expense. The accounts force management to make technically crazy decisions.

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

In the case of open source software, it requires careful technical management since there's no official "support sunset" announcement from Oracle/Sun. Bad technical management, of course, leads to technical bankruptcy.

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

#2


We look at the support lifecycle costs. For how long are the older versions supported, and at what costs? Platforms like Windows and Java tend to move fast as compared to mainframe environments, and part of the cost of doing business on those platforms is to perform periodic upgrades. In a rational world, that is!

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

New versions can have killer features we need -- but that is rare in enterprise development. The main positive selling points of new versions (as opposed to negative ones such as expired support) tends to be greater developer efficiency, which is hard to measure. Against that, as you indicate, the cost of retraining must be considered, not only for the initial developers, but, crucially, for maintenance. In each upgrade, some applications tend to be left behind as too critical to retire, and too expensive/fragile to upgrade. Over time, the number of platforms and versions you have to support increases overall technical debt (no matter their age).

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

Another criterion for upgrading to new versions (which you note) is the ability to attract and retain staff. With the current economic phase, that's playing second fiddle, but still cannot be ignored completely. You want to have at least a seasoning of enthusiastic and knowledgeable developers.

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

#3


I think the killer question is whether your app will survive long term if you NEVER upgrade the platform/language version. If you think it can't, you may as well upgrade sooner rather than later, as it will only become harder.

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

Think about how long your app should be actively developed until you need a full rewrite. If you never plan to rewrite it, I would upgrade continually. Consider how difficult it will become to find the best developers if you are working in an outdated technology. Consider how new framework/language features could speed up your development process in the long term, for a bit of short term pain.

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

#4


When you really need to. .NET 1.0 was crappy, 1.1 was a nice upgrade, but Web development with VS2003 was not so smooth. Things improved with VS2005 and .NET 2.0 – and I see still many developers and companies are stick to .NET 2.0. Previous versions were so fresh, version 2.0 was mature tech. So, if you were happy with 1.1, why would you upgrade? If you are happy now with 2.0, why upgrade to 3.5 or 4.0?

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

#5


When the benefits of upgrading (more features, or a bugfix you need) outweigh the risks/costs involved (new issues, breaking existing code).

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

#6


When you develop for Microsoft based platforms, like a Windows Forms App for Windows or ASP.NET webapp for Windows Server, the nice time to migrate is for every two major versions of OS.For example, if your app has been developed for Windows 2000, you ought to migrate to Vista though XP can be neglected. Similarly, if it were designed for XP SP2, you can safely ignore Vista and target Win 7. Usually Microsoft never breaks (or rarely breaks) incremental OS updates. So an app running on today's OS will definitely run on the next. But never on the one following it. (It if runs how can M$ make money???)

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

Source: Self... Windows Developer for over 5 yrs)

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

#7


I'm in the upgrade as soon as possible camp (though I might wait a month after a new version come out just in case for uncaught issues). There are a few things you need to think about:

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

1. Security Releases

1.安全发布

Many of the people who tell me if it isn't broke don't fix it are also the same people who would close their 2 eyes when security patches get released. Think Equifax.

许多告诉我它是否没有破坏的人并没有解决这个问题也是那些在安全补丁被释放后会闭上眼睛的人。想想Equifax。

To me it is an ethical responsibility to at least be on security supported versions of a framework. We owe it to our customers to safeguard their data.

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

2. Attracting & Retaining Talents

2.吸引和留住人才

There are lots of talk about how the programming language or framework used doesn't matter. But in my experience, the cleanest code and design for a web app are usually written by the people who are passionate about the framework & programming language used because of their experience & expertise with it.

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

These people are unlikely to stay around for long or join your company if you stick to a very old version. Please think about your developers' happiness.

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

3. Newer, simpler ways offered by the newer version

3.较新版本提供的更简单,更简单的方法

Very often newer versions of a framework make something hard in the past much easier. If we do not upgrade, we miss out on the good new packages/features and we write our code in the old frustrating way knowing there is a much simpler way to achieve the same feature. And when it comes time to upgrade, we may end up having to change again to the new way. So why not upgrade and use the new better way and waste less time?

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

#1


Read up on Technical Debt. This is a simple cost-benefit decision.

阅读技术债务。这是一个简单的成本效益决策。

The "if it ain't broke don't fix it" is a common management policy that says "tomorrow's dollars aren't worth as much as today's, so don't plan for future improvements." Eventually technical debt accumulates to the point where the product can no longer limp along.

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

The most common breaking point is when some piece of the infrastructure is no longer supported. By then, incremental change is impossible.

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

Reinventing from scratch is a new capital investment. Fixing existing code is an expense. The accounts force management to make technically crazy decisions.

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

In the case of open source software, it requires careful technical management since there's no official "support sunset" announcement from Oracle/Sun. Bad technical management, of course, leads to technical bankruptcy.

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

#2


We look at the support lifecycle costs. For how long are the older versions supported, and at what costs? Platforms like Windows and Java tend to move fast as compared to mainframe environments, and part of the cost of doing business on those platforms is to perform periodic upgrades. In a rational world, that is!

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

New versions can have killer features we need -- but that is rare in enterprise development. The main positive selling points of new versions (as opposed to negative ones such as expired support) tends to be greater developer efficiency, which is hard to measure. Against that, as you indicate, the cost of retraining must be considered, not only for the initial developers, but, crucially, for maintenance. In each upgrade, some applications tend to be left behind as too critical to retire, and too expensive/fragile to upgrade. Over time, the number of platforms and versions you have to support increases overall technical debt (no matter their age).

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

Another criterion for upgrading to new versions (which you note) is the ability to attract and retain staff. With the current economic phase, that's playing second fiddle, but still cannot be ignored completely. You want to have at least a seasoning of enthusiastic and knowledgeable developers.

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

#3


I think the killer question is whether your app will survive long term if you NEVER upgrade the platform/language version. If you think it can't, you may as well upgrade sooner rather than later, as it will only become harder.

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

Think about how long your app should be actively developed until you need a full rewrite. If you never plan to rewrite it, I would upgrade continually. Consider how difficult it will become to find the best developers if you are working in an outdated technology. Consider how new framework/language features could speed up your development process in the long term, for a bit of short term pain.

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

#4


When you really need to. .NET 1.0 was crappy, 1.1 was a nice upgrade, but Web development with VS2003 was not so smooth. Things improved with VS2005 and .NET 2.0 – and I see still many developers and companies are stick to .NET 2.0. Previous versions were so fresh, version 2.0 was mature tech. So, if you were happy with 1.1, why would you upgrade? If you are happy now with 2.0, why upgrade to 3.5 or 4.0?

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

#5


When the benefits of upgrading (more features, or a bugfix you need) outweigh the risks/costs involved (new issues, breaking existing code).

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

#6


When you develop for Microsoft based platforms, like a Windows Forms App for Windows or ASP.NET webapp for Windows Server, the nice time to migrate is for every two major versions of OS.For example, if your app has been developed for Windows 2000, you ought to migrate to Vista though XP can be neglected. Similarly, if it were designed for XP SP2, you can safely ignore Vista and target Win 7. Usually Microsoft never breaks (or rarely breaks) incremental OS updates. So an app running on today's OS will definitely run on the next. But never on the one following it. (It if runs how can M$ make money???)

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

Source: Self... Windows Developer for over 5 yrs)

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

#7


I'm in the upgrade as soon as possible camp (though I might wait a month after a new version come out just in case for uncaught issues). There are a few things you need to think about:

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

1. Security Releases

1.安全发布

Many of the people who tell me if it isn't broke don't fix it are also the same people who would close their 2 eyes when security patches get released. Think Equifax.

许多告诉我它是否没有破坏的人并没有解决这个问题也是那些在安全补丁被释放后会闭上眼睛的人。想想Equifax。

To me it is an ethical responsibility to at least be on security supported versions of a framework. We owe it to our customers to safeguard their data.

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

2. Attracting & Retaining Talents

2.吸引和留住人才

There are lots of talk about how the programming language or framework used doesn't matter. But in my experience, the cleanest code and design for a web app are usually written by the people who are passionate about the framework & programming language used because of their experience & expertise with it.

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

These people are unlikely to stay around for long or join your company if you stick to a very old version. Please think about your developers' happiness.

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

3. Newer, simpler ways offered by the newer version

3.较新版本提供的更简单,更简单的方法

Very often newer versions of a framework make something hard in the past much easier. If we do not upgrade, we miss out on the good new packages/features and we write our code in the old frustrating way knowing there is a much simpler way to achieve the same feature. And when it comes time to upgrade, we may end up having to change again to the new way. So why not upgrade and use the new better way and waste less time?

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