We love to reinvent the wheel here in the software development world. I’m not kidding. We do it on a frequent basis, and I’m talking about every few minutes here, not days or hours.
Write twenty lines of code, then rewrite it. Sorry, I meant to use the fancy word, ‘refactor’ it. (See? We reinvented that too). If you’ve ever wondered why here are a few reasons (or are they excuses?)
- we need to improve its performance so it gives me the results in 0.0001 of a second instead of 0.001
- I hate ‘code maintenance’ but it does give me a chance to rewrite code if its broken, messy, and especially if someone else wrote it.
- I didn’t like the look of that bit of code, especially the variable name ‘infrate’, so I changed the reference to inflationRate, or should that be inflationR?
- software developers, we’re creative people – its going to change!
- our clients are always changing their mind and don’t know what they want, and if they don’t know what they want, we have to go along with it which ends up in scope creep.
- the current wheel is crap, its not quite round and smooth rolling. We can do a better job but only if we rewrite it.
- It doesn’t quite do what we need it to do, we can’t modify the original code, so lets rewrite it.
- its not written in the right programming / scripting language
- damn it, its not free – so we’re going to have to write it as we can’t just copy and paste or plug it in
- its a prototype – good enough for a demo but won’t last five minutes in a production environment
- Is an MBA person reading this? Yeah? surely you know its all about Kaizen (continuous improvement)
Looking at that list, I must admit that I may have had some firsthand experience of a few of those …
The bottom line is that software development is a creative, iterative process that is subject to the whims of the customer who don’t know what they want and the rate of change of technology. That’s why we keep reinventing the wheel, just to keep up. Oh, and we officially do it these days under the umbrella of ‘Agile Methodology’. 🙂
(I just spent a further five minutes refactoring this post!)