I also learned programming myself, over 15 years ago. Yet I have still today learned a lot of useful stuff from others who I have worked with.
This is what I think:
- If he is motivated to learn by himself, that is the best way to start. Not because of what you learn about programming, but because of what you learn about learning and studying new stuff.
- After a year or so, if possible, get a good mentor. This time, to learn about programming. There is a lot of advanced topics which you don't even know to exist unless you have a really good book or a really good mentor. This doesn't mean that you couldn't study this stuff by yourself, but you will need someone to tell you what to study. Here is a list, which contains topics, perhaps a bit too advanced for someone who just started to program, but the list contains a lot of things I wish someone had told me sooner:
-- unit testing (more important than the program itself),
-- more about testing and what you can do with it, e.g. performance testing
-- pair programming
-- writing clean code (e.g. why it is important that you think really hard how to many each variable you create),
-- refactoring (how you can do it and why you should),
-- programming principles and patterns (e.g. why a class or a function should have only one responsibility),
-- usability (how you can analyse it and improve it),
-- user experience (why people think that the software is faster and has less errors just because you changes the error messages more polite),
-- tools(version control, IDE, continuous integration with static and dynamic analysis, and how they can help you do your job).
-- Agile methods, lean, kanban. (these are pretty good to know when you start working for real)
My recommendation for language: Python with pygame (for writing games).