lol« Yeah, I know you’re testing and doing other xDD stuff. Looks great, really, but you know, our customers don’t want it…»
How many of you have already heard this? I heard it from many managers, trying to explain me that they are my friends, but that «real life does’nt work that way ». It was hard for me to argue with them, after all they were much more experienced than me, so they should be right, don’t they?
Of course I never agree with them, but it was hard to find good counter arguments when I started my developer career. Now I have arguments, so I hope this post, could help you if you need to argue on the same topic.
Instead of debating infinitely with people pretending to understand what I was talking about, I just left my job and started as a freelancer. I had only one goal: unless I desperately need the money, I will work only with people trying to improve the external AND internal quality of their software. This currently translates to: «I won’t work for you if you do not understand at a bare minimum why unit testing is not an option on a complex information system».
They were right, because I still don’t assert that customers want unit testing. And yes if you try to explain to them that you need to code to validate your code, you just make a fool of yourself.
But I still assert that customers need unit testing, because they need to change their mind a lot in order to be aligned with their challenging business, without introducing new bugs.
And for that, managers inspiring this post were wrong. They believe developer’s job is to provide what the customer wants. But if you just give people what they want, you have no value.
Imagine a parent raising a child by giving him all he wants. Such a parent will have no respect from his child. Worse: the child will probably end up very badly because he eats too much candies. And what about a doctor giving a patient all the meds he wants? Can we consider that professional?
What you want is not always what you need. Especially when you do not know enough to understand what are your needs.
As a professional developer, your job is to provide a solution to customer’s issues. To achieve that, you have to understand your customer’s needs. And it’s a hard thing because he will only insist on what he wants. The trick is, the vast majority of them need at least better software. So your job is at least to know what are the different possibilities to improve the software, and to apply the most relevant one for your customer.
So don’t bother too much with what the customer want. Understand his business enough to provide him what he needs. This is your job. This is how you can create value as a developer.
Customer needing software may not want unit testing and xDD stuff, but I never met one that does not need it.