Unsustainable Software Development and its Causes

Woah, this hits close to home. I've seen this type of behavior first hand, more than once. I've often wondered why it's sometimes easier to rewrite a program than trying to improve it. When it happens on projects that I join there's often a good excuse: like "we need to rewrite in a modern computer language", "that software it's based on is no longer supported", "the software was written without concern for portability", etc.. But after reading this article I've realized that these are often just excuses, rewriting from scratch is very expensive.
What's needed, in my opinion is:
  • 90%+ automated unit test coverage
  • 90%+ automated funcional test coverage
  • Automated builds
  • Good programmers and good continuous monitoring of these programmers (code reviews, etc.)
Automated tests can fix a lot of woes. Plus you can make major changes to the underlying code (refactoring) without fear. If done right the automated tests can be used as documentation as well.

Comments

@TheSandyWalsh said…
Whenever I have a developer on my team yell "it has to be rewritten" I always tell them that it ain't gonna happen ever. They quickly learn that they need to come up with alternatives. You can't refactor without tests. Period. The Scaffolding approach works very well in the capacity. Start with functional large-grained tests and slowly work your way down to unit tests when working with legacy code. We successfully did this recently on a large project and was able to eventually replace the legacy product while continuing to add functionality to it and sell it to new customers. After a while, the old program simply was "refactored" out of existence. Sweet.

Popular posts from this blog

Shortest Sudoku solver in Python

Seven Segment Display in Inkscape