When sailing, one has to be careful of mistakes, be ready for things going wrong. Because when it happens – it is somehow always the worst timing…
The boom suddenly cracks. Before you manage to take a look what’s the damage, it’s broken and of course a part of it falls on one of your crew members legs, and he is now bleeding. This is the exact time for the wind to turn, and to gain speed and power. You’re trying to start the engine – and it won’t start….
OK. This doesn’t happen often, but a series of unfortunate (related) events, is not that rare.
When sailing, in life, and in software development.
A bug is found. Seems to be a serious one. You send it to your manager, but she answers only a few hours later (she was in a meeting). Apparently, you were right. It is serious. So, the developers are contacted, but the one who’s responsible for this part of the code is out today. A decision is made to wait for tomorrow. Come the next day, it turns that in order to fix this bug, there’s a need to update the server’s software… now this will take a few days. At least. While waiting for this to happen, a customer calls and says they have noticed this bug, since it holds them back. Of course this customer is in a critical phase of their work, and they must meet their schedule, otherwise they will lose a big project. Worth lots of money. They are angry and are already looking to replace your solution.
This isn’t a made up story. This is real. It happened.
Is there a way to be ready?
Of course. When sailing, you prepare yourself to the worst, because it can be a matter of life or death. Even the smallest problem can become a big one in sea. Preparing your boat, making sure your crew knows the procedures and what to do in every event, having all the equipment, including emergency equipment, and sailing ‘by the book’ will help. There’s not much room for mistakes, since the cost might be very high.
And it’s the same for a software development project. If it isn’t an important one, than you’re good anyway it goes (but maybe you should consider doing it). But when it comes to applications that are your business, your service, it is crucial not to make any mistake. Bugs in your software can be something that will hurt your users – and in turn – you. Be prepared – it is great not to get to that point at all, making it a bug-free code/app, but we all know it isn’t easy, if at all possible, and bugs will be found. Thing is, how well are you prepared to deal with them – fast, good, smooth operations to solving bugs.
You must have procedures for such an event, an escalation process, with the resources allocated at any given time. Do not allow yourself to have any single point-of-failure, be it hardware, software or resources. Make sure any of your team members is replaceable, at least for emergencies. It’s a matter of a mind-set: if you are aware of it, plan for it, apply what is required for it – before it all happens – then when time comes you are safe (and not sorry).
It is evident that users are not that angry of bugs, as they are of bad, long and delayed handling them. They’re usually aware bugs can happen, but they want to know someone is there for them when it happens.
One last point – be transparent. Share bugs you find, or one of your users finds, with all of your users. They will appreciate it, and will be more accepting and understanding. And if you quickly fix it – it might turn out that best derived from worse.