Associate Teaching Professor
Carnegie Mellon University
While teaching undergraduate software engineering for four years, I came up with a long list of topics I wished the students were exposed to. In reality, my courses only covered a small subset in detail. Most software engineering textbooks aren't very good and rarely convey day-to-day life as a developer.
But I must warn you: People on the internet are extremely opinionated about these topics. For example, you might see people say "design patterns are the devil" or "my incarnation of Scrum is the only correct way" or "all you actually need is to be a good coder". Be careful. It is helpful to know about the topics and the debates around them.
My study guide is divided into three categories: the process, the tools, and the code. Plus a bonus fourth category: the life. You'll need to use a variety of resources to learn each topic.
If I missed something or you disagree, please tweet me. 😎