Friday, May 29, 2009

Software is used by people, not robots

There seems to be a continuous disconnect between the whole notion of software development and real world use.  Software is and forever will be a tool that is used by people.  As such, as a community of testers and developers, we cannot ignore this.  We should be developing and testing with this in mind.  Recently, I have encountered two situations where sterile development and testing of technology and business processes led to an unsatisfactory customer experience.  These may seem more business than technology related, but I use these examples to illustrate my point of operating in sterile environments with sterile requirements, development, and testing of anything; not just software.


First, I recently received a new debit card in the mail.  Like most things in snail mail it was an automated form letter.  In this letter it stated I could activate my debit card in one of two ways.  Then the form letter proceeded to instruct me on how to activate my card online.  No where on the form was the second method of activation listed.  I did later learn, via website for the online activation method that I could have called to activate my card; but that would have required I go to the website to get the phone number.  I would like to say someone with common sense should have caught this issue, but there is nothing common about sense.  In this case, development of the form letter, creation of the card, mailing it out, all worked as designed.  It is just he design was flawed and no one questioned it.


The second incident involved getting an annual fee waived on an old credit card account and closing the account.   This is an old card we had that we had forgotten about and have not used in a very long time.  (The fee was just charged to the card and we received the statement a few days later – this will be important.) As a customer, we have become conditioned to asking for things in a certain order.  In this case, my wife called the credit card company and asked for the fee to be waived.  The representative stated that they couldn’t waive the fee and proceeded to enter into their typical phone script.  She then told the representative to just close the account.  This, of course, resulted in a different script.  The irony is that this new script included notification that if you were charged a membership fee in the past 30 days it would be refunded.  The net result is we closed the credit card and avoided a fee, which was the main goal of calling anyway.


As software becomes more pervasive in how and why we do things we must remember the “we” part of the equation.  It is not enough to have well written requirements or low-defect software; the changing society requires that we account for the human factor as well.