There are fundamentals that help one become a better designer: Painting, color and classical composition can help you define hierarchies in ways that make your work cleaner and more persuasive. However, I think the best way to become a better designer is to think like an art director. This is similar to how a good writer edits her own work over and over, and is her own harshest critic. If you are your own harshest critic, no other criticism will surprise you. It helps to work under a very good art director who can guide you, and who has the vision to tell you when to stop or change course.
It's said that children are often great at drawing, if you know when to take the markers away from them. When I evaluate designers as an AD, I see very frequently (and usually in males) the incapacity to pull back, to simplify, to edit oneself, and to stop. Where there should be one good idea, there are instead ten mediocre or bad ideas.
For any particular design job, the first goal is to find your best idea, and zoom in on that. Your idea for a food label should not be a collection of adjectives like "fresh" "modern" and "healthy". It should be a sweeping vision of what the entire brand requires, a visual hierarchy of type and form.
1: EVERY design job requires you to come up with a library of all possible design jobs going forward for that client. Never come up with a solution for just one job. If they have a brand that you must follow, then just copy their brand of course. But if they want something new, start with the hierarchies: Typography and color. Everything else must flow from there.
2: Out of many, find one. Always think your work is too busy, because it is. Take out anything unnecessary. Ask yourself why each element is there. When you have several ideas, choose one and throw the rest away. When you have many elements in a piece, pick the best and make it 4x larger and discard everything else.
Having a good idea and knowing how to separate it from bad ideas is more important than the technical execution of your design. This is what so few designers understand, but every art director knows. Imagine if you tried to tell a boring story using lots of complicated language. People would say, "get to the point". Now imagine you barely speak a language, but you tell a very interesting story using the words you know. People want to hear it, because the content itself is interesting.
When you use cheap visual tricks like circles around your content, you are cheating the viewer. You are saying "this is not interesting, but look here anyway". What you must do is find a way to make the content ACTUALLY INTERESTING. Because if you don't, no one will look anyway. So ask yourself, "what is interesting to me about this, and what image would make me care about it?"
I realize this sounds like vague advice; if I saw your specific project maybe I could be more helpful. But I think it's a fundamental misunderstanding among designers that simply to make something look good, or technically smooth, is to make good design... and that is the opposite of good design. Good design is simply good ideas. If you have no original idea about a project, you cannot make good design. So your hardest job, especially with a boring client, is to find the idea. The rest will follow naturally.