【问题标题】:When to upgrade to a new version of a language or framework?何时升级到新版本的语言或框架?
【发布时间】:2009-05-05 11:00:19
【问题描述】:

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

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

我特别想到了多年来存在和发展的“正在进行的”系统和项目(例如在软件公司中),而采用“新项目使用新技术”的方法是行不通的。

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

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

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

【问题讨论】:

    标签: language-agnostic technical-debt


    【解决方案1】:

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

    “如果没坏就不要修理”是一种常见的管理政策,即“明天的钱不如今天的钱,所以不要为未来的改进做计划。”最终,技术债务会累积到产品无法再跛行的地步。

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

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

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

    【讨论】:

    • 我更愿意将其视为“技术上的疯狂”而不是“糟糕”。虽然,有一些会计政策实际上是不好的:即“未开发”的土地是一种负债,而无用的“开发”是一种投资,在账面上看起来比将土地视为“荒野”更好。除了那个例子,大多数会计都不是“坏的”,它只是强化了一些疯狂的政策。
    • 开源软件也存在支持问题,您将在相对较新的版本上获得最佳支持。你总是可以雇人用古怪的应用程序来支持那个有 8 年历史的 Linux 系统,他们可以学到足够的东西,但是这会让你付出很大的代价。
    【解决方案2】:

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

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

    升级到新版本的另一个标准(您注意到)是吸引和留住员工的能力。在当前的经济阶段,这是次要的,但仍然不能完全忽视。您希望至少拥有一批热情且知识渊博的开发人员。

    【讨论】:

      【解决方案3】:

      我认为关键问题是,如果您从不升级平台/语言版本,您的应用是否能够长期存在。如果你觉得不行,不如趁早升级,只会越来越难。

      想想在您需要完全重写之前,您应该积极开发您的应用多长时间。如果你从不打算重写它,我会不断升级。考虑一下,如果您使用的是过时的技术,那么找到最好的开发人员将变得多么困难。考虑一下新的框架/语言功能如何在长期内加速您的开发过程,但会带来一些短期的痛苦。

      【讨论】:

        【解决方案4】:

        当你真的需要时。 .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】:

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

          【讨论】:

          • 因此,如果没有特殊需要,您可能会永远停留在旧版本上?
          • @Tyrannosaurs 我认为出于商业原因,这是正确的。然而,对于传统技术,您会发现维护它的人更少,支持它的供应商更少,这就是人们从马升级到汽车的原因。
          • 是的。有一个明显的警告,如果您正在使用的版本和当前版本之间的“差距”变得太大,那么您将面临难以获得对您使用的版本的支持的风险。应定期评估此风险。
          • 这就是为什么仍然有数据库运行 SQL Server 6.5 或 Oracle 8 的原因。升级到新版本的数据库软件可能非常昂贵(尤其是在测试所有影响数据的应用程序时)只有一个)并且除非它具有您需要的一些新功能(或者必要的支持越来越难获得),否则为什么要无缘无故地破坏现有的业务关键数据?
          【解决方案6】:

          当您为基于 Microsoft 的平台(例如适用于 Windows 的 Windows 窗体应用程序或适用于 Windows Server 的 ASP.NET Web 应用程序)进行开发时,迁移的最佳时机是每两个主要版本的操作系统。例如,如果您的应用程序已经开发对于 Windows 2000,您应该迁移到 Vista,尽管 XP 可以忽略。同样,如果它是为 XP SP2 设计的,您可以放心地忽略 Vista 并以 Win 7 为目标。通常微软从不中断(或很少中断)增量操作系统更新。因此,在今天的操作系统上运行的应用程序肯定会在下一个操作系统上运行。但从来没有在它后面的那个上。 (如果跑了M$怎么能赚钱???)

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

          【讨论】:

            【解决方案7】:

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

            1.安全版本

            许多告诉我如果它没有损坏就不会修复它的人,也是在安全补丁发布时会闭上两只眼睛的人。想想 Equifax。

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

            2。吸引和留住人才

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

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

            3.新版本提供了更新、更简单的方法

            通常较新版本的框架使过去的困难变得容易得多。如果我们不升级,我们就会错过好的新包/功能,并且我们以旧的令人沮丧的方式编写代码,因为我们知道有一种更简单的方法可以实现相同的功能。当需要升级时,我们可能最终不得不再次改变新的方式。那么为什么不升级并使用新的更好的方式并减少浪费的时间呢?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-03-02
              • 1970-01-01
              • 2012-03-26
              • 2023-03-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多