5 Excuses Bad Programmers Make

It’s a common problem, there’s a young kid on your team who thinks he is a great architect. He wants to replace the simplest include with a new whizbang inherited menu system or add 3 layers of abstraction to the database access layer, or replace the beautifully crafted error reporting system with exceptions. When quizzing this “architect” he has a reason for every possible change, these are those classic excuses and reason.

  1. Security. “This will stop any possible security breaches in the future,” he says. Little does he realise that including one extra file into your system isn’t a security risk and probably never will be.
  2. Performance. “We will do this and this and this, and then cache it all in memory. It will be faster than the existing system,” he says. Sure this might be faster, but the difference between 5ms execution and 8ms execution is irrelevant. Chances of him actually having done the profiling and being able to improve the performance gains are minimal.
  3. Future proofing. “This will put us in a great position to make changes in the future.” Which changes? You know those unspecified, unrealised and unkown changes that we may or may make sometime in the future.
  4. Outdated. “There’s a new better way to do that exact thing.” There is a new way to do it, there is a new way to do anything and everything, but is it better? Is it worth holding the project back a week to modernise the codebase? Probably not.
  5. That’s ugly. “But this code is ugly”, he pleads. Is a 3 line hack better or worse than a leaky abstraction?

I’m sure you know of more, what are they?

Update: This comes across as very bitter. Perhaps “bad programmer” isn’t the right word. Try “inexperienced”.  Working on systems, refactoring them and improving them is obviously our job as programmers, yet sometimes you need to take a step back and think. The first design or system we think of is very rarely the right one, it doesn’t matter how much experience you have.

Lessons learnt from Tiger’s Cancellation Procedure

Tiger Airways has an unenviable reputation of a lack of leg space, strict check-in restrictions, late flights and worst of all cancellations. Although each of these is a risk you take when booking the cut-price flights flying with Tiger is still a test of even the most patient man. It seems like each of these problems should be avoidable by the airline, but even if they aren’t there is one thing they could do to make it the whole process far less painful. Improve their cancellation procedures. This is a valuable lesson on how to handle letting down customers in any industry.

I’m sure each flight is handled on a case-by-case basis but our recent 9:15pm flight from Hobart to Melbourne was initially delayed 1 hour. This was never announced and the only way we were made aware of this was an update on the airport monitors. At the time of scheduled departure a loudspeaker announcement was made that informed us the flight was to be delayed by 3 hours, there would be $5 refreshment vouchers made available and if anyone would like to cancel or rebook on Tiger to contact the gate desk. Immediately a large queue of people formed seeking their vouchers and most people were trying to ascertain wether or not they should rebook or cancel their flight, very little information was given and while most people were quite well tempered there was a growing atmosphere of, “We aren’t getting home tonight”

Tiger Airways Approximately 1 hour later a loudspeaker announcement was made that the flight was cancelled and refunds and rebooking would be handled at the gate. No further information regarding the necessary procedures, the availability of future flights or overnight accommodation options was made available and customer dissatisfaction was now at an all-time high. A huge queue was then formed at the desk, with no-one in the line having any idea what to do or what their options were. Immediately people started booking flights on alternate airlines without waiting an hour in line to speak with the 2 Tiger ground crew. There was another Tiger employee available seemingly wandering around behind the gate desk doing very little.

It turns out there are a few gotchas that weren’t announced which people may not know.

  1. Tiger will not provide overnight accommodation
  2. You must fill out the refund form at the time of the cancellation, not tomorrow.

This is information that could and should have been announced, and a lot more communication provided. Had the extra employee been answering people’s questions in the line, handing out forms and showing a human face to the company the mood of all of these disgruntled customers may have been far better. This would have also made the line move faster, less disputes at the counter and could have improved what was already a bad experience.

This is a perfect case of letting a customer down gently rather than kicking them off the flight and letting them fend for themselves. I understand that flights are cancelled and don’t have a huge problem with it, yet I won’t be booking Tiger again in the near future. This is due more to their apparent lack of care rather than the flight cancellation itself.

Remember, failing a customer sometimes is unavoidable, but you have to let them know you care about the problem. This leaves them with a good feeling in a bad situation and hopefully they will come back next time.