Talk to him
Talk to him is absolutely true. You need to find out what he wants. You suggest
- Provide him training?
- Involve him more in the day to day of the decision making?
Maybe. But is this what he wants?
One of his weakness is that he is not great in explaining technical matters to people who are new to the technical know-how of the company.
This sounds like something that you need to address. There are a couple ways:
- Fix it. Teach him how to explain things to the necessary people.
- Work around it. Rework the system so that he doesn't have to do it.
You should not try to make this decision for him. Ask him what he wants to do. If he wants to fix it, follow up later to see if it is still what he wants to do. Because fixing something like that is uncomfortable. It sounds better in theory than in actuality.
As this answer suggests, this process may be difficult. He may have trouble articulating what is making him unhappy or be reluctant to share his actual views. This may not be a single conversation but a process. Keep at it. A real diagnosis is necessary to address the underlying problem.
Your system seems to have developers at the leaves and managers at more senior positions. Such a system can be problematic. It pushes developers who want to be developers out of the company. A better system has both developers and managers in parallel. So a developer can become either a supervisor (manager) or a senior developer. Not everyone wants to be a manager. There should be ways for people to rise in responsibility without becoming managers.
If he leaves, how much will it cost to replace him? I don't mean just the obvious salary cost of a replacement. How much will it cost to rewrite your software so that the people who replace him understand how the existing software works? What will the maintenance cost be for that replacement, both in terms of bugs that won't get fixed because no one understands the software well enough and in terms of time spent maintaining software that people don't really understand?
You say you want to keep him because
he is young, ambitious, he knows things and he has potential to grow.
From the company's standpoint, the only part of that that really matters is that he knows things. Should you pay him more? Sure, if the things he knows are valuable to the company, he should get some of that value. That way, when he looks for other jobs, they offer him less financially because the things that he knows are more valuable to your company than to other companies. It increases your company's immediate costs to avoid the big cost of replacing him.
If he is ambitious but bad at required tasks like explaining things to people, that is a net negative. His ambition can't be satisfied. Also, how is he ambitious? Does he want more pay? More responsibility? A nicer title? What is it that would satisfy or feed his ambition? This is something that you'll have to talk to him to learn.
Young is irrelevant. In an industry where average tenure is years, not decades, a sixty year old developer is still more likely to move to another company than to retire from yours. If anything, young is again a net negative, as he doesn't have the experience to know that switching jobs will leave him in the same situation he has now.
Why do you think that he has potential to grow? You've given no signs of such potential. You've only listed things that might prevent such growth. Does potential to grow mean that he is bad at certain things and you're hoping he will improve? What if he doesn't?
Working around it
It may be that he would prefer to work around it to fixing it. It may not be clear what that means, so here is a concrete possibility. This is not the only possibility, but it is a possibility.
Let him hire a product manager. This person should be the one to whom people will go for explanations of technical matters. This person should be good at getting such information from the developer. For most of the company, this is the person considered responsible for the product. The developer may still get a chance to participate with that person behind the scenes, but this is the person who meets with higher management and other departments.
For the hiring process, let him do part of the vetting. That way, you don't stick him with someone he can't stand. But make sure that the candidates are good at the things that he doesn't do well. As part of the final interview, have the candidate talk to the developer to extract information and then have the candidate explain it to you or someone else. Only candidates who show that they can do this can be hired.
- Gives him responsibility and control.
- Addresses the problem of bad explanations.
- Doesn't attempt to change him.
After this, you can build out a team to replace the one that he had previously. You can arrange for them to learn how the software works. Then if he wants to leave in a year, he can. You don't have to fight to retain him, because you have alternatives. And if he no longer wants to leave, maybe that's no longer a problem.
At this time, you can also let his salary settle back to being consistent with others. You don't have to overpay him to keep him from leaving. He goes from critically important to just another developer. This does not require cutting his salary. Just don't give raises until he's back to parity with others with similar value to the company.
This is not the only approach, but I think it highlights the requirements.