By now everyone would have at least heard of the longest match in Tennis history that was played at this year’s Wimbledon between John Isner and Nicolas Mahut. As unearthly as their will, effort, and stamina sounds, the match was also a very good example of an earthly peculiarity – ‘errors in software applications’.
During that legendary final set, the stadium scoreboard went kaput after displaying ’47-47′. So the stunned spectators as well as the weary chair umpire had to rely only on manual records of the game score for the never-ending set.
Why? Well, nobody at IBM had thought that two supposedly sane individuals would ever reach that figure, let alone cross it! Not only that, even the online scoreboard reset itself after displaying ’50-50′! Were the programmers wrong? Now, that’s a tricky question.
For any amount of budget, there has to be a limit until where software applications, like automatic scoring systems, can be tested. You can either trust a wise man who magically comes up with certain values, or base your limits on certain empirical data, the fact is that these limits cannot be infinity. Software testers are paid their wages to put the application through the paces. Yes, there are fixed rules and conditions (test cases) to satisfy, but hardcore testers pride themselves in thinking of innovative conditions where the application might break. All this is added to the already exhaustive list of test scenarios, but how exhaustive can ‘exhaustive’ be! There will always be certain cases and non-conventional types of inputs where even the best pieces of softwares will crack.
The impact of this might not sound as catastrophic in a Tennis match scenario, but consider this happening to a near-perfect auto-pilot application in the aircraft you might be boarding during your business trip next week, or to a highly secure online-banking and money-transfer application which your bank uses to handle multi-million dollar transactions. The knowledge of some recent unsolved aircraft accidents and some computer hacking incidences is enough to realize the severity of the issue. A bit ruffled now, are you?
The point is not to get hysterical about the state of affairs, but to remain alert. Always look at the odds of these things happening, e.g. the ratio of air-accidents to the amount of aircraft taking off and landing on airports all over the world on any given day, or the ratio of banking-frauds to the total amount of money being handled online every hour. There are hundreds of thousands of people working in the software field which are dedicated towards producing secure and highly-reliable pieces of software, be it for the microwave oven in your kitchen or the International Space Station (ISS) flying many miles above you.
Many would remember the recent controversies and product recalls by the auto major Toyota regarding the software (embedded firmware) in its hi-tech cars. As more features are added to existing systems and software gets more and more complex, the chances of it behaving erratically even after months of thorough testing increases! Also, not every issue that occurs is easily reproducible back at the factory. Not everybody in this world is a software developer and so not everybody actually understands this fact. The thing we all have to remember before starting the blame-game when some untoward incident happens is that nothing can be 100% secure; that’s a myth. People work day and night to iron out any known (and imaginatively unknown) issues and test cases, which, let me tell you, can run into thousands. There is always scope for improvement which, like it or not, takes time. Neither can companies stop selling cars until that time, nor can airlines stop flying the aircraft in their arsenal until every possible glitch is resolved.
The best analogy I can think of is that of a letter by Pete Docter, the director of the highly successful Pixar movies ‘Monsters, Inc.‘ (2001) and ‘Up‘ (2009), where he had quoted Pixar’s John Lasseter. He had said – “Pixar films don’t get finished, they just get released.” I think the same logic applies to the world of software applications!