Understanding and creating components
One of the first things you learn when programming is to try to never repeat yourself. In fact, every technique you learn, from loops to functions to class encapsulation, is focused on reusing code with less typing. Building up the analogy, a loop reuses lines of code in one area so that you don’t need to repeat them next to each other. A function reuses blocks of code so that you don’t need to repeat them across your class. Then a class lets you reuse sets of functions and data in instances, so you don’t need to repeat logic across your program.
How does this help? Well, in games, any object that can be seen probably has some rendering element allowing it to be drawn to the screen. The code for rendering your object in your chosen graphics pipeline follows a standardized structure and is likely to be the same across every object that needs to be rendered. Even thinking about this possible repetition should be ringing alarm...