I've written several pieces on how to improve your front-end skills before. Be it through actively challenging yourself or simply by taking the time to think, evaluate and improve, it's essential for a professional front-end developer. The web changes fast and apart from getting the hang of all the new techniques it's important to form your own set of opinions and best practices. Revisiting those articles though I feel I missed one important aspect, which I will gladly make up for now.
learning from your mistakes is good
Sharpening your front-end skills is an iterative process. There are some things in life you can learn from a book, html and css are not among them. Creating a flexible html component takes time, spitting out some decent css even more. The only way to learn it is through trial and error. Each new project you start is a fresh chance to get better at what you do, slowly bringing your skills up to an acceptable level. The ultimate goal is peace of mind, one of the greatest riches you can imagine.
Key here is to look back at what went wrong in previous projects and to try and find good solutions to prevent these problems from happening again. Whether you take a week off to come up with new strategies or simply try something different to see where you'll end doesn't really matter. Different approaches lead to new experiences which will serve you well no matter how they turn out.
So far nothing new, but it turns out that learning from one's mistakes is often easier said than done.
the lazy beast
Most projects reach a stage where the problems start piling up and the once so glamorous outline seems nothing more than a figment of your imagination. This is the moment where mistakes and misjudgments made earlier will roar their ugly heads and hit back hard. Many people understandably hate this stage in a project, at the same time there's plenty of interesting stuff happening. It is the best opportunity you'll get to get better at your job.
Seeing and understanding the things that go wrong is a crucial aspect in finding better ways to handle these problems. If you want to learn from your mistakes, it is not enough to just make them and leave the dirty work to something else. If you truly want to get better, you need to fully experience these problems and issues, only then will you be ready to commit yourself to solving them once and for all.
Mankind is somewhat of a lazy beast though. It's easy to let someone else do the dirty work and leave a sinking project in the hands of an unfortunate successor. On the other hand, that same laziness can motivate you to wade through the hard parts now and to make sure you'll be able to do a better job in the future. Making it easier for yourself as a front-end developer involves getting your hands dirty, the messier the situation the better.
there is no dirty work in front-end development
So when you're doing overtime, cursing and grinding to fix a seemingly endless bug list, try to think of it as an opportunity to improve your skills. Don't leave it to someone else because I can guarantee you you'll be making all the same mistakes in future projects to come, creating the same pile of crap over and over again.
It's not always easy as there are many elements working against you (ever-changing project requirements, browser issues or implementation inconsistencies), but in the end it will be worth it. Solid and flexible code is not necessarily harder or doesn't take longer to write, you just have to make sure to do it well the first time around. To get to such a level of expertise you'll have to do a lot of hard work, but it pays off, so do persevere.
I guess I'll conclude with the most classic example of em all: I never learned so much about html and css as during ie6 debugging sessions. And that's the truth.