Are you producing banana software?

Nico Heid's picture

Bananas are picked from the tree green and unripe. Their ripening process continues while they are transported to the markets and end up at the customer. Let us just ignore the fact, that the ripening process is initiated by an artifical condition.

So Banana-Software is software, that "ripes" while in production at the customer. Some people might call it Beta-Software. I've seen plenty of examples where software went into production when it was still Banana-Software.

There's nothing bad in developing software in close contact with the customer. Eg. using Extreme Programming, Rapid Prototyping or some other agile method you prefer. But when it comes to putting software into production, there are some things to consider.

Before you ship, make sure that:

all quick and dirty hacks are removed

Leaving hacks in a software is a major crime. Not that it will not work, but in the future when extending the software they might break your neck. So take the time and clean up messy implementations and refactor, if needed.

the business cases are covered with unit tests

There's nothing worse than when your application stores or processes data wrongly. Cleaning up the data might take long time, and might not even be possible without your customer doing some work again. So it's mandatory to write test cases for you business layer.

check for bottlenecks

Of course your software runes fine on you development machine with you being the sole user. So try a performance or stress test to check for bottlenecks. A profiler will also show you where you can expect some problems.

the customer has seen a beta version and did not detect major flaws

If you did not develop in a model with close customer contact you should at least show him a version which is close to shipping, before you start polishing the frontend. Now is the right time to detect major misunderstandings, if there are any. Also discuss some ideas for the GUI that would make life for the user easier.

the software is properly archived and the build process is future safe

So two years later you should extend NoBanana-Soft v1.0. The big problem is, where's the code to build the version you actually shipped? And if you still find it, does it still build?
That's really not something you need to find out. Your VCS should have taken care of the first problem and your CIS of the second.
If you're not using VCS or CIS, start now !

the software is well documented and there is a installation and maintainance manual

There should be a quick introduction on how to install the software and all the requirements to get it to run. A little architecture diagram for developers is always nice. So take the time to document everything necessary to know. So whenever someone has to digg out the software for whatever reason, he does not have to start by reading the source to get a knowledge of what it does.

Comments

Pat F.'s picture

Thanks for this article, very elucidating and perfect to show my boss!