Software engineering is an incredibly broad field. It encompasses the entire Software Development Life Cycle (SDLC) - requirements, architecture and design, construction, testing, and maintenance. It also includes project-level topics such as project management, process methodologies, and engineering economy and financial decision making. People-related topics, such as communication and team dynamics are also important to software engineers as no major software systems are built by individuals. Societal impacts of software, ethics, professionalism, and law are (to varying degrees) also included in software engineering.
Being an engineering discipline, software engineering is rooted in mathematics (especially discrete mathematics), statistics, and computer science. When it comes to constructing software, a knowledge of algorithms and data structures, performance, and complexity often come into play.
Because software is found in so many areas, there are also numerous domains of knowledge. These could be aviation, defense and intelligence, banking, commerce, and so on. In order to interface with the people buying and using the software, a software engineer typically learns a good deal about one or more of these domains as well.
So, what does this all mean? No one person is ever going to know everything about software engineering. There's just too much. A well rounded software engineer is going to understand the SDLC, going to be a team player, and have communication skills. A good software engineer will also have a grasp of professional conduct and ethics. After that, it's mostly specialization, typically in both a domain as well as a subset of software engineering.
If you want to move into systems architecture and design, learning UML, System Analysis and Design, and good architectural and design principles are a good start. But if all software engineers were architects and designers, there wouldn't be anyone to specialize in requirements engineering, or software construction, or managing software-intensive projects.
My recommendation is to find your niche and continually work on developing your skills and knowledge both in that niche, while maintaining an understanding of other aspects of software engineering and developing the generic skills.
Also, as an aside, depending on your location, you need to be careful about the use of the term "engineer". In parts of the United States (Texas and Florida come to mind), Canada, and Europe, the title "engineer" can only be used by certain people under certain conditions.
software engineer > programmeris not as usual as you may think. – Yannis Rizos♦ Dec 29 '11 at 12:52