Should Software ever be Re-Written?

Home » Software Architecture and Design » Should Software ever be Re-Written?
Photograph of columns in old building

Should software ever be re-written?

Technology is always changing, new versions of development tools, databases, third party components continually appear. In fact about ten years ago somebody said it was a full time job just to keep up with the new tools coming out of Microsoft. If anything in recent years, especially with the advent of Windows Azure, this situation has got worse. So surely, software is obsolete the minute it is written, obviously we should re-write software that we develop every two or three years, right?

Some companies that I have worked for over the years have exactly this strategy. I feel though, in my experience at least, that this was politically driven. There are many good reasons not to redevelop software.

  • If it isn’t broke, why spend a fortune redeveloping it just to say develop in Angular or Kendo UI when plain old webforms will do? Again this re-development will be obsolete as soon as (or before) it is finished
  • The business can spend its money on other business benefits, such as add on modules that provide further benefits
  • There are also better things for developers to do as well than re-write old systems

Against this, you may have to re-write if say the platform (operating system, database etc) becomes obsolete. Or if the software no longer meets business needs. If the software becomes impossible to maintain due to its age and number of changes that have been made to it.

My advice to customers is that if you make careful decisions regarding platform, and go for industry standards such as Microsoft .NET, SQL/Server, Oracle etc., then in this day and age, especially with all the open source code, jQuery, etc., there is no reason not to have software that lasts for decades. The key as a developer, is to keep it easy to maintain, so its easy to change. One way to do this is always to leave code in a better condition than you started with it. The business on the other hand has to give you enough time to be able to do this.

The way I look at software is that above all else, the software is a detailed design specification. It must show the programmers intent, i.e. the detailed requirements of the business, when reading the code. Code must be well organised and super readable. This is harder the more people in the team, particularly if they are geographically separated and work for different companies. But it is possible. There are a number of things that can help.

  • Domain Driven Design
  • SOLID Principles
  • Agile Methodologies
  • TDD
  • Patterns and Practices
  • Object Orientated Design
  • Good Database Design

Obviously not all are needed in the same project. Only you can decide what is appropriate for your requirements.

In the coming months though, this blog will try to examine the above and more with lots of examples. Please be sure to send me feedback and let me know what you think.

About Phil

I have been working as a software developer since 1983. This blog could have been called "From Fortran 77, C and Cobol to C# in 20 (not so) easy years", but it doesn't sound quite right somehow. Besides I'm talking about what's happened since 2003, not before!

Leave a Reply

Your email address will not be published.


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">




Top Posts & Pages

Categories

Recent Posts

Recent Comments

Archives

Blogroll

  • Mike Cohn's Blog
  • Scott Hanselman's Blog
- mike@mountaingoatsoftware.com

If you’ve estimated with Planning Poker, you may very well have used cards with either the FIbonacci [...]

- mike@mountaingoatsoftware.com

For many teams, the sprint review has run its course and it’s time to stop doing them. Blasphemy? Ma [...]

- mike@mountaingoatsoftware.com

In an ideal world, a Scrum team could perform the work of its sprints entirely uninterrupted. Produc [...]

- mike@mountaingoatsoftware.com

Do Scrum long enough and someone will suggest stopping the daily scrums. Here’s how to reply. [...]

- mike@mountaingoatsoftware.com

When estimating in story points, teams should think in terms of ranges and rounding up. Here’s why. [...]

- Scott Hanselman

Microsoft released a nice new ligature-friendly open source font this week called Cascadia Code. It [...]

- Scott Hanselman

I was reading an older post in an emulator forum where someone was asking for a Playstation 1 (PSX) [...]

- Scott Hanselman

I'm pretty happy with Windows 10 as my primary development box. It can do most anything I want, [...]

- Scott Hanselman

It's early days (preview) but there's now a Terminal integrated into Visual Studio! Taking [...]

- Scott Hanselman

Yesterday the Windows Team announced the first preview and code release of PowerToys for Windows 10. [...]

Meta