If you want to learn a programming language or concept or framework, rewrite stuff. It’s simple as that.
I started with HTML. Then I discovered CSS, and I rewrote my stuff. Then I learned PHP, I rewrote it again. PHP imports, again. Database. JavaScript. JavaScript prototypes. Python, whohooo, happy to do it again! Python classes, again! Python metaclasses! I tried Ruby. I rewrote it to Python again. Haskell. The functional world is different then I thought, again. Monads. The monads are cool! And so on.
I learned everything by trying a new language or concept, fail to do it right and then do it again, more appropriately.
In the last weeks, one colleague wanted some small help to learn pytest. I gave him some basic ideas first. I didn’t think of all the details properly, my mistake, and the result wasn’t perfect. He had to rewrite it again. But he was glad as he could understand pytest much better!
Also, I have a new colleague learning to be a computer programmer. I let her write some code in very basic Python, and then I showed her tips on how to improve the code. So she can better understand what higher level does. Hopefully. :-)
So, don’t be afraid. Rewrite stuff.
In the end, writers do the same thing! Without that hardly anything would be readable.
Hm. I didn’t rewrite this post. Well, don’t listen to me! :-D