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.
It’s not just a software problem. In a previous role, I was instructed to only test those applications that had been built in-house. Things that we didn’t build within the software dev team were not tested. That meant that things happened such as:
1) the company’s website was never formally checked to make sure all links on new pages worked;
2) an online training tool which the company spent good money on actually didn’t work because you couldn’t mark the first module as completed and so couldn’t move on to the second one; and
3) an online video introducing the training tool had appalling typos in captions over the CEO’s voiced script, and had segments from a director who had been ousted from the company six weeks before. (QA rather than testing issues, to be sure, but symptomatic of the attitude within the company.)
This all culminated in the company sacking all its testers because they were an “unaffordable luxury”, and then announcing a move to a new, high-profile city centre office with a link to a web page that didn’t work.
We can build as much trust into our projects as possible, but if that attitude isn’t shared by the rest of the company, then we run the risk of it being a waste of time and effort.
Yeah, the problem of changing the culture of an entire company is a huge one. I guess the place to start is in you own team. Sounds like a pretty bad situation, but I would still say it is not a waste of time to stand up for what is right. Our culture in general is very tolerant of being lied to by software even though I suspect most of us hate going on crappy sites. If enough people speak up and take a stand, perhaps we can eventually get a tipping point where the culture shifts from a ‘whatever’ approach to quality, towards one that has quality at the core.