软件的寿命:你希望多久能从头开始?[英] Lifespan of Software: How often do you expect to do start from scratch?



我听说有人说软件的平均寿命大约是 3 年,但在我看来,这似乎太低了.我不买.

毕竟,我的一些客户拥有已经运行了 20 年的笨重大型机,而且它们根深蒂固,以至于它们可能永远存在.

我个人倾向于在平台变得太旧以至于对我们的技能(我们是承包商)不利并且继续维护项目效率低下时开始谈论严重的重构.我在这里考虑 ASP Classic.那可以是 5 到 8 年的窗口,甚至不需要重写.


也许这些项目往往会持续 3 年.或更少.





我所在的团队已经开发同一个 Web 应用程序 6 年了,而且看不到尽头.在那个时候,它已经从 Classic ASP 到 ASP.NET 1.1 再到 ASP.NET 2.0,所以各种模块都经历了增量重写,但从来没有像从头开始重写那样.每隔一段时间就会有人说,如果我们可以重新开始该多好,但我们有 60,000 多名用户:他们不可能等待 12 到 18 个月,而他们的更新功能或特性需要等待架子.


所以,从个人经验来看,你每 3 年从零开始的东西可能不会被很多人使用.当您拥有广泛使用的应用程序或服务时,尤其是在企业环境中,要逐步升级就很难获得支持,更不用说重写了.



I've heard people say that the average lifespan of software is about 3 years, but that seems shockingly low to me. I don't buy it.

After all, some of my clients have lumbering mainframes that have been around for 20 years, and they're so entrenched that they might live forever.

I personally tend to start talking about severe refactoring when the platform gets so old that it's bad for our skills (we are contractors) and otherwise inefficient to keep maintaining the project. I'm thinking about ASP Classic here. That can be a 5 to 8 year window, and it doesn't even need to be a rewrite.

Of course, I have also seen projects that incurred a lot of technical debt because someone caved to stakeholders too often or a dev didn't know how to plan for change. Or the project was started on a weak platform that didn't scale well. That radically reduces the lifespan.

Maybe those projects are the ones that tend to live 3 years. Or less.

One last thought: Some studies have proven that it's cheaper to maintain old code than to write new, and I believe it. Rewriting large systems is always way harder and more expensive than it looks.

Does all of this conspire to indicate that developers tend to re-write too early, and perhaps naively? I'm thinking yes, and I can see how that's an easy mistake to make.

What are your experiences here?


The team that I'm working on has been developing the same web application for 6 years, and there's no end in sight. In that time, it's gone from Classic ASP to ASP.NET 1.1 to ASP.NET 2.0, so various modules have undergone incremental rewrites, but never anything like a from-scratch rewrite. Every so often somebody will say how nice it would be if we could start over, but we have 60,000+ users: there's no way they're going to wait the 12 to 18 months it would take while their updated functionality or features sit on a shelf.

I've only had the chance to do a ground-up rewrite twice. In both cases, the reason we had time and buy-in to do so was because we had a rather small group of customers using an already stable version. When we went to them with the new product, they all agreed that it was better than the old system, but very few of them bought it because they were already happy with what they had. It was a lot of fun for the programmers, but ultimately it was a loss for the business.

So, from personal experience, the things that you get to start from scratch every 3 years are likely not used by many people. When you've got a widely used application or service, especially in a corporate environment, it's hard enough to get buy-in to do gradual upgrades, let alone rewrites.