I don't like the way my code works.
If it works, it's good enough.
Best way to improve is to work on what you have for extended time, see what gives you trouble and research how to improve it by solving for that specific issue. Don't overthink it. Keep it simple. Less code is always better, so try refactoring pieces of code that seem convoluted and are hard to understand of what's happening. Possibly, extract pieces of functionality to functions and give them names.
When you're working, for the most part code makes sense, but 4-5 months down the road even you will have hard time understanding what's happening, and it will take you some time to figure out, so comment the shit out of your code and give names to things.
Just keep building things, I'm also self-taught, and I can't tell you how many times I've coded dashboard for my blog... :)