In outsourcing, very often a customer
is an idiot doesn't really know what he needs—not only in terms of functionality, but also on a technical level. What makes the situation even worse is that the customer very often always thinks he knows and understands enough. The question is how do you teach a customer? How do you train, educate, and help him? You don't!
The temptation will be huge, though. You will think that the customer is your friend. You will want to help him. You will feel very motivated to make the product better. Moreover, you have the needed knowledge, so why not share it, right?
Wrong. Very wrong. On so many levels.
Most of all because the customer is not your friend. Not a partner, not a co-worker, not a colleague, and not a teammate. The customer is a project stakeholder, just like you, but his needs are completely opposite of yours, and he is very aware of that.
He wants the project to finish as soon as possible and to take as little money out of his pocket as possible. You want exactly the opposite. You both work for the project, but from two very different angles.
Very soon, when the project fails (and it will fail, just like 94 percent of all software projects, according to Chaos Report), the customer will find someone to blame. Needless to say, he won't blame himself; he will blame you.
According to the same report, only 7 percent of failures are caused by technical incompetence. Thus, most likely your project will fail because of an incorrect understanding of requirements, poor planning, misalignment of management objectives, etc. Do you really want to be blamed for the things you're not an expert at? Let the customer fail; it's his project, his life, and his money.
Do your technical job right and stay away from everything else. This is what true professionalism is about—focus on the things you can do best of all and better than most others.
However, if you see that he is doing something wrong and definitely requires help, recommend that he hire a consultant. There are many people in the market who can help him with requirements, UX, business analysis, marketing planning, branding, etc. In most cases, customers just don't know that these people exist, or they believe these services are just a waste of money.
Try to convince them that it's not true, but don't become an adviser in something you don't understand. Your job is coding, so focus only on that.