The last few months I've been deep in a couple of coding projects that use a variety of languages (JS, Python, SQL, PHP, CSS, HTML) and frameworks (Laravel, Wordpress) on bespoke hosting and AWS.
While working on Wordpress today I was struck how opininated it is and how different it is to Python, or even Laravel in a key way. It imposes it's own opinionated logic and ignores developing awareness of using the core language with elegance.
While learning Laravel I was impressed by the documentation and structure of the framework, it pretty much taught me OOP by trial and error. And more recently Python has done the same but at a higher level. It's easy to see how memory management and keeping things lean pay back in Python, to benchmark scripts against each other and get used to different types of data structure - arrays, dictionaries, generators. For me it feels like it holds your hand and helps me become a better programmer. The documentation isn't as good as Laravel, but the language lead me in.
The experience has really made me think, how designing learning into a system as one of the core tenants most likely makes it exponentially more satisfying to use and therefore that much more enagaging.
One of the few things I've found in the physical world that works in a similar way is building with natural materials. After plastering a big wall with Lime Plaster I pretty much felt like I could do it, not to master level but to the required level to be confident of an end product that would be entirely functional. Whereas with cement based render at the end of a big project I was much more aware of the flaws in my practice that would only be filled by doing much more with expert guidence, and which needed to be addresses to give a functional level of finish.
I am now looking around through this lense for things that do the same. Sadly my attempt to learn the Trumpet does not have this feeling, it's too easy to fall into a bad habit and not be able to 'see' out of the hole. Tuition works in that case though.