Friday, April 12, 2013

I don't always test my code ...

It's too good to skip... The The Most Interesting Man in The World ads originally designed for Dos Equis have gone viral, and certainly made their way to software geek circles. But thinking about this, have you ever observed overconfidence, cowboy attitude or perhaps unrealistically aggressive deadlines that allow the only one flavor of testing - not testing at all ? (Here I don't mean the fancy Testing in Production or Function Testing in Production automation methodologies).

Some may ask, "why employ a test department? Skip it! Save on the budget and let customers do the testing". "Isn't that what Facebook does? And many other companies as well?". Answers are: "Don't skip it" and "No, that is not what Facebook and other successful firms do".

It took me some time to realize that the era of "classical approaches" of software development should be considered gone. What we learned in school and where asked to do at work not so long - at most a decade ago, that is focusing on the quality of the software first is long gone... Making sure to use efficient algorithms with best time and space performance, taking time to write clean code, necessarily writing unit tests and automation, and taking time to identify and resolve all the bugs before going to release..

The current market is very competitive, and the customer has very high demands, and if you don't move fast you are done... This is why all the big names in software industry are leaving traditional software development life-cycles and almost consider the world "waterfall" a curse. They are investing many thousands of dollars and hours in adopting Agile development and lean methodologies. Today everyone is challenged to deliver fast, or be taken out of the competition.

The interesting dilemma about customers is that, they are increasingly becoming more tolerant to error, yet being very demanding to get the new technology fast. Truly, after we are "hooked" on Gmail, Dropbox or Strava (new phone app I recently discovered), a few crashes here and there are not going to make us switch... What may make us switch is the point where these products stop evolving and competition provides better services faster and better yet one what will require lesser amount of clicks :)

The question is about the line between quality and speed, knowing how fast can you actually go without ultimately sacrificing on quality. But this is up to the Big guys to decide.

Happy coding!