As a software developer for a company that supplies online banking and anti-fraud software for some of the nations largest financial institutions, quality is my main focus. But being a human being, I sometimes make mistakes and defects get introduced into my software. There are lots of reasons why defects end up in products (my software in this case), and I think the most prevalent of these reasons is bad assumptions about how a particular feature will be used.
How does my company release such high quality software you ask? By having talented quality assurance engineers like my friend Brent. No matter how well I think I've thought something through, how good a design I think I've come up with, he finds a use case I never thought and boom, my software explodes. Which is most often due to an assumption I made that he didn't.
Where am I going with this you ask? Gizmodo has a link to a YouTube video demonstrating how to trick certain model vending machines into giving you something for free. This video demonstrates how not only did the engineers make a poor assumption but the QA people that are paid to find these kind of wrong assumptions and brow beat the engineers with them missed it as well. Now I'm not condoning theft by any means, but you have to hand it to these guys. By dismissing a simple assumption that the machine would always be able to deliver the product, they were able to trick the machine into return their money after they had purchased a soda.
Watch the video here.