One of the biggest requirements for software engineering is problem-solving. But it takes time and effort to develop that skill.
When I began programming, I tended to see the things I was learning as ends in themselves rather than means to an end. This reduced my ability to problem-solve, as I was less flexible in my software design.
I've learnt that to be better, you need to see things from a higher level. I found a framework for learning that's helped me make the jump and improved my problem solving significantly.
Take a look at it, it's definitely worth 7 minutes of your weekend.