Have you ever been lied to?
I don’t mean those little white lies that smooth social interactions – “You don’t mind if I do this?” “No, not at all” – I’m talking about a full blown lie. You ask your son to take out the garbage and he tells you did it already. The next morning, after the garbage truck has left, you find out he never did it. Or you call customer service and they promise to take care of it as soon as you hang up, but you have to call back two days later because nothing has happened. What happens when you are lied to? You lose trust in that person or organization.
Much of the way we work as a society is build on trust. There are places in the world where stores have armed men with guns by the door to deter theft. Why? lack of trust. In the West we have many blessings and one of them is trust. I can call a dump truck and ask them to bring by a load of sand and they will do it and send me an invoice. Why? They trust that I will pay them. Without that trust the transaction would become much more painful. I would somehow need to get them money ahead of time, but would I really want to if I couldn’t trust they would deliver once they had the money? Transactions become much more difficult in a society with low trust.
Trust in Software Development
In the software development industry we primarily view trust as a financial proposition. “If my customer doesn’t trust my credit processing system they won’t click on buy and I won’t make money.” However, trust is a bigger problem than that. It is a societal problem. In a world with low trust we have high cost. Everything get expensive when there isn’t trust in place.
How do we contribute to lack of trust in software development? Well, how about when our customer’s data gets hacked? Does that build trust? What about when users come to our site and it won’t load? Does that build trust? What about when your ‘click here’ icon doesn’t do anything? Does that build trust?
Let me drive the point home in a way that might hurt.
If you are ok with software that breaks trust, you are not working for the social good.
But I think it’s true. We hear a lot of talk about social entrepreneurship and the importance of social initiatives in corporations. I want to challenge software development teams – and in particular those who think about testing problems – to think about the social responsibilities they hold. The ethics of testing are clear in some domains like medical applications, but what about if you are writing an iPhone app? Do you have ethical considerations then? My argument is that if you are ok with releasing a buggy app that breaks the implicit and explicit promises you are giving your customers you are contributing to a societal problem. Teaching people to expect to be lied to is not a good thing. Don’t have any part in it. Release good quality software.
It’s ok to make mistakes. We will sometime break people’s trust despite our best intentions. Don’t beat yourself up over missing things. The point of this post is that it should be despite our best intentions. We ought be shooting for high quality, trust building applications. Saying that it’s ok to ship with bugs in our product, shouldn’t just be a financial decision. We need to be thinking about other things like the ethics of it as well.