I'm facing a problem that is quite new for me, and want to discuss it. I have in my team a developer who doesn't take into account the directives that are given to him. He doesn't follow priorities that are given to him and sometime even specifications.

The person is competent in coding, motivated and well intentioned, so I'm pretty sure that we can come up with a way to work that work.

Let me give a few examples to have a better understanding of the situation.

We had a project that was almost ready to be published. However, a bug has to be fixed in a functionality, and another in the function that register customer account. We had another developer on the bug in the functionality, so I told him that fixing the one in account creation was absolutely critical, and he should spend his time on that. I tried to be as clear as possible: "If we cannot register a new customer, we cannot sell our product, so functionalities, with or without bugs, are useless. This is the #1 priority". Obviously, I find out that he goes helping the other developer. He did good work, but that work was not the priority and was not what he was assigned to.

On another project, we gave him technical specifications about a development he has to do. He comes up with something that works, but doesn't fulfill the specifications. We said to him to refactor his work to match the specification. This was better but still didn't match them. The specification was more complicated than what was needed to make his work, so he decided to make it more simpler. Which is good, except the fact that I'm responsible for that, so he should discuss with me when he takes decisions like that, and that we know that a future improvement of the software will need that specification (which he would have known if he had talked to me).

I'm pretty sure that the problem comes up not from the guy, but from the interaction between him and the way the management is done in the company.

So basically, how to get the situation to improve and make everybody walk in the same direction? What do you think we did wrong when managing here?