# How to Teach a Customer

Source: https://www.yegor256.com/2017/01/10/how-to-teach-customers.html

In [outsourcing]({% pst 2015/oct/2015-10-27-outsourcing-doesnt-work %}),
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!


{% jb_picture_body %}

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]({% pst 2015/jan/2015-01-26-happy-boss-false-objective %}),
just like you, but his needs are completely opposite of yours, and he is very aware
of that.

{% quote Very soon, when the project fails, the customer will find someone to blame %}

He wants the project to finish as soon as possible and to take as little
[money]({% pst 2015/jun/2015-06-02-how-to-estimate-software-cost %})
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](https://www.projectsmart.co.uk/white-papers/chaos-report.pdf)),
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.
