I have been a software developer/computer programmer for almost 7 years (mostly .NET and C#), and I've just been reading the appendix on Service Orientation in Juwal Lowy's excellent book Programming WCF Services, Second Edition.
The above led me to the Wikipedia article about SOA, and the Software Engineering category links at the bottom, incorporating various fields (e.g. Requirements Analysis), concepts (e.g. Data Modeling, Structural Analysis), models (e.g. Agile, UML), orientations (e.g. Aspect-Oriented) and people (e.g. Martin Fowler, Grady Booch).
I have come to the realisation that I may have some experience as a developer but very little as a "software engineer". Sure, I continue to run into many of these concepts in my day-to-day job, but not always in great detail.
My question is how I can become an expert in the "engineering of software", and more specifically:
What are the most important concepts and disciplines for me to focus on to become a good software engineer?
What are the best resources I can use to train myself as a software engineer (as opposed to a developer/programmer)?
What type of projects/jobs can I focus on to become a software engineer?