The biggest mistake I see developers making is starting to code without putting pen to paper first or some analysis of the problem. They start coding in a trial/error mode. If one stops to think about what could be going on, produce a diagram, or at least more thought into how to solve the problem before ever coding.
1. DataStructure and Algorithms - Programming language is not enough to solve problems correctly. To solve the problems, one should know more about different types of data-structure and algorithms to use them appropriately.
2. Object Oriented Programming - DS and Algo helps you to solve the complexity of problems. But to properly design your solution, you need OOP. This helps you to understand the high level problem and solve them appropriately.
3. Advanced Programming - This helps you to architect a proper scalable and robust applications where you learn concepts like design patterns and system designs.
Since you were in 10th, you can concentrate on DS, Algo & OOP as of now. Once you understand the concepts and good with programming you can learn the advanced programming. Software Engineering has different area of domains like game development, app development, web application, etc. But the above mentioned were basics to all domains.