I think you should try and let him develop a “I want to make something”. But try to filter out ideas, which could be too much for him. Let it even be stupid projects, which overlap with what was done before. Let him improve on what he has done before, brewing that mindset of developing new practices and thinking of how to solve a problem in different ways.
And let him find problems. I know that most of people are fine with the products and their limitations. But the thing here is to look at that clock next to a tv, and think “you know what? Im tired of it not showing reminders, calendar, forecast” and that sort of stuff (literally my inspiration for the project I have been working for a while now). Imma gonna go and try to make my own clock.
A lamp in his room? Get him a smart socket/plug (I liked Shelly products). Connect it to a lamp. Let him learn how to control it by rest, then grow to mqtt. Let him find a way to bind this to a macro key on a keyboard. Small steps.
My 7+ years of (now senior) Java developer started from something stupid. I liked to code(php at that moment), I liked to tinker. And I really hate doing the same thing manually more than a few times. I worked in a bank as an IT operator, and there was a piece of monitoring software. And there were filters, which allowed me to do my job more effective. But those filters could not take dynamic properties, so I had to do it manually. At some point I started looking for the filter files in the app folder. Found that I can set them. Then came the part of how to do it. Windows scripting I disliked from the beginning, so I started looking in the direction of powerful languages. And found Java(selling point for me was that it had a console in eclipse, where I could get the results quite fast). First I struggled, trying to go the easy way and find a quick doc for how to do what I want. At some point I realized that it not gonna work that way, and I need to understand the language. So I managed to find a book, in which the author did a good job.