I once read an essay about a karate pro, who did karate for decades and taught many people. One day he just took on a white belt again and started the whole training from new. Sure most of the stuff was no problem, but he soon discovered that he was missing some stuff from the lessons for the earlier belts. He said, doing the basic/junior things helped him to get a better overall.
When I started programming, I often did small coding experiments. I read about a technique, a concept, language feature, framework or library and did something really simple with it. This helped me the most in understanding programming.
I mostly did this, because I simply lacked the skills for doing "real" applications. How to setup a server? How to implement a user management? How to create a front-end? I had no idea, so I did simple things, programs that were way below 1000 lines of code and they helped me to get better.
Later, when I got my first dev job and started working on big code bases, I stopped this. I had the feeling, that only juniors need to do this and I did programming for years before I got my first real dev job, now I was a professional! I don't needed no tiny experiments anymore to learn how something works.
Bad code ensued.
I coded everything right in the application that I was required to enhance and most of the time it worked kinda okay. Many people in the company weren't developers so if I could change anything in the product, I was basically god for them, nobody cared how I do it, they wouldn't understand anyway.
But I understood and I saw that I somehow didn't live up to the quality I want to deliver.
There were many things in this job that didn't make me happy, so I quit and started a sabattical. Haha, yeah sounds a bit like midlife crisis and that with 29.
It was stuff that probably thousands of people did before me, but it showed me again, after all these years, that I still could learn new things, that there was a technique, that would really lead to understand things that I thought were too hard for me. Maybe there are people out there who would learn it much faster, but it wasn't impossible for me to learn it.
This is an approach I incorporated into my software development process. Whether I have to deal with some ancient corporate API, that nobody bothered to document or some strange functional programming concept. The first time I use it is in a simple app that doesn't do much, just helps me understand the how and especially the why.
Maybe it is obvious to most developers, but to me it wasn't, so I thought I tell my story. I hope this makes software development less scary for people out there. :)