Honestly the core message here is exactly right: if you get instructions for just the basics, just enough to understand what you don't understand, you can learn all the rest yourself. Not even limited to programming, but programming is one of the best examples because you can get immediate feedback about whether or not you did something right.
In my current job, I learned basically everything on the job just by having a bit of curiosity, looking at documentation, and so on. What I was originally tasked to do was very limited and inefficient, and I could have continued in that role, just following directions and doing monotonous things. But now I'm considered the expert in a lot of things. I've saved a ridiculous amount of time for many people through automation. I've made things that would have been impossible to do in a feasible manner trivial, regular tasks. And none of that came from explicit prior training. It came from just having a general understanding that such things should be possible, and searching for the ways to make it happen.
I feel like anyone else could have done that. But for some reason, only I did. All of my advancements came from thinking "this is dumb, I want to do it better". I don't know why so many people just accept bad things as they are. But I think the key thing that makes someone wind up a programmer or engineer is simply not wanting to accept bad things as they are, and having the curiosity to find the path forward.
This client has the motivation, and now the realization of how he can chip away at the things he doesn't know. That's all he needs for 99% of programming.
There are things I think additional education is needed for--I don't think anyone is just going fumble their way through secure cryptography, for example, or other abstract mathematical things. You need a strong educational basis for that, or algorithm design or compiler design and so on. But basically everything else, anyone can do if they just want to keep chipping away at the specifics they don't know yet.