何时升级到新版本的语言或框架?
当新版本的框架或语言出现时(例如.NET 3.5、SQL2008),人们会采取什么方法来采用/升级?
一般来说,开发人员会说尽快(他们希望将其写在简历上,从管理的角度来看,给他们想要的东西可以提高他们的动力),但商业上通常没有什么激励作用(很少有客户需要最新版本),而且从成本角度来看(重新测试、培训)常常存在抑制因素。
我特别想到“正在进行的”系统和项目(例如在软件公司中),它们存在并发展多年,而采用“新项目使用新技术”的方法是行不通的。
人们是否受到特定需求的驱动(需要使用新功能,潜在或现有客户需要支持),他们是否正式评估它(在这种情况下标准是什么)或者他们是否将升级作为例行公事(在什么情况下 - 前沿与前沿)?
人们是否认为不使用最新版本的东西应该被视为技术债务并进行管理?
或者“如果它没有坏就不要修理它”是一种有效的方法吗?
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?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
阅读技术债务。 这是一个简单的成本效益决策。
“如果它没有坏,就不要修理它”是一种常见的管理政策,它说“明天的美元不如今天的美元值钱,所以不要为未来的改进制定计划。” 最终,技术债务累积到产品无法再跛行的地步。
最常见的断点是基础设施的某些部分不再受支持。 到那时,渐进式的改变是不可能的。
从头开始重塑是一项新的资本投资。 修复现有代码是一项开支。 这些账目迫使管理层做出技术上疯狂的决定。
对于开源软件,它需要仔细的技术管理,因为 Oracle/Sun 没有正式的“支持日落”公告。 糟糕的技术管理当然会导致技术破产。
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.
我们关注支持生命周期成本。 旧版本的支持期限是多久?费用是多少? 与大型机环境相比,Windows 和 Java 等平台往往移动速度更快,在这些平台上开展业务的部分成本就是执行定期升级。 在理性的世界里,就是这样!
新版本可以拥有我们需要的杀手级功能——但这在企业开发中很少见。 新版本的主要积极卖点(相对于过期支持等负面卖点)往往是更高的开发人员效率,而这一点很难衡量。 与此相反,正如您所指出的,必须考虑重新培训的成本,不仅对于最初的开发人员,而且最重要的是对于维护成本。 在每次升级中,一些应用程序往往会因为太重要而无法淘汰,并且太昂贵/脆弱而无法升级而被抛在后面。 随着时间的推移,您必须支持的平台和版本的数量会增加总体技术债务(无论其年龄如何)。
升级到新版本(您注意到的)的另一个标准是吸引和留住员工的能力。 在当前的经济阶段,这一点虽然处于次要地位,但仍然不能完全忽视。 您至少希望拥有一群热情且知识渊博的开发人员。
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!
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.
我认为致命的问题是,如果您从不升级平台/语言版本,您的应用程序是否能够长期生存。 如果你觉得不行,那不妨趁早升级,因为只会变得更难。
考虑一下您的应用程序应该积极开发多长时间,直到您需要完全重写。 如果你从不打算重写它,我会不断升级。 考虑一下,如果您使用过时的技术,那么找到最好的开发人员将变得多么困难。 考虑一下新的框架/语言功能如何从长远来看加速您的开发过程,避免一些短期的痛苦。
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.
当你真正需要的时候。 .NET 1.0 很糟糕,1.1 是一个不错的升级,但是使用 VS2003 进行 Web 开发就不那么顺利了。 VS2005 和 .NET 2.0 使情况有所改善 - 我发现仍然有许多开发人员和公司坚持使用 .NET 2.0。 以前的版本还很新鲜,2.0 版本已经是成熟的技术了。 那么,如果您对 1.1 感到满意,为什么要升级呢? 如果您现在对 2.0 感到满意,为什么要升级到 3.5 或 4.0?
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?
当升级的好处(更多功能或您需要的错误修复)超过所涉及的风险/成本(新问题、破坏现有代码)时。
When the benefits of upgrading (more features, or a bugfix you need) outweigh the risks/costs involved (new issues, breaking existing code).
当您为基于 Microsoft 的平台进行开发时,例如适用于 Windows 的 Windows 窗体应用程序或适用于 Windows Server 的 ASP.NET Web 应用程序,每两个主要操作系统版本都是迁移的好时机。例如,如果您的应用程序是针对 Windows 2000 开发的,你应该迁移到Vista,尽管XP可以忽略。 同样,如果它是为 XP SP2 设计的,您可以安全地忽略 Vista 并以 Win 7 为目标。通常 Microsoft 不会中断(或很少中断)增量操作系统更新。 因此,在今天的操作系统上运行的应用程序肯定会在下一个操作系统上运行。 但绝不是在其后的那个人身上。 (如果运行的话M$怎么赚钱???)
来源:Self...Windows Developer 超过5年)
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???)
Source: Self... Windows Developer for over 5 yrs)
我正在尽快升级阵营(尽管我可能会在新版本发布后等待一个月,以防出现未捕获的问题)。 您需要考虑以下几点:
1. 安全发布
许多告诉我它没有损坏而不修复它的人也是那些在安全补丁发布时闭上两只眼睛的人。 想想 Equifax。
对我来说,至少使用框架的安全支持版本是一种道德责任。 我们有责任保护客户的数据。
2. 吸引& 留住人才
有很多讨论都说使用的编程语言或框架并不重要。 但根据我的经验,最干净的 Web 应用程序代码和设计通常是由对框架和框架充满热情的人编写的。 由于他们的经验和经验而使用编程语言 对此的专业知识。
如果您坚持使用非常旧的版本,这些人不太可能长期留在您的公司或加入您的公司。 请考虑一下您的开发人员的幸福。
3. 新版本提供了更新、更简单的方法
通常,框架的新版本会让过去困难的事情变得更加容易。 如果我们不升级,我们就会错过好的新软件包/功能,并且我们会以旧的令人沮丧的方式编写代码,因为我们知道有一种更简单的方法可以实现相同的功能。 当需要升级时,我们可能最终不得不再次改变到新的方式。 那么为什么不升级并使用新的更好的方法并浪费更少的时间呢?
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
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.
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
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.
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
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?