Breaking It Down
Short projects are the best tool for learning, but also are usually hard to define. Plan it in advance to take the most of it.
Starting Small: The Importance of Learning Projects in Programming
Probably everyone who starts programming falls into the same rookie mistake: "I am going to create the best mobile app/videogame/any piece of software I am interested in, no matter what." After having that thought, you start coding and eventually realize you still have too much to learn.
From my experience
I am no special child. In my first year of university, I started a video game project, learned a lot, but it remained unfinished. After that, I realized the best learning projects are the smaller ones:
- Those that do not pretend to solve a lot of problems, but just the ones you want to learn about.
- Those that have clear objectives and are measurable.
- Those which goals are achievable in a reasonable amount of time.
- Those that guide you to the next learning.
The Unnatural Nature of Learning Projects
This kind of project is very unnatural. Life is complex and simplifying problems is usually harder than thinking about all the details. Because of this, defining the boundaries of a learning project requires an extra effort that has to be made before starting it. Once it is started, there is a high chance you will fall in love with it, and if this happens, there is a high chance the project outgrows your expectations/available time/skills.
Breaking Down Problems
Sometimes it will be required to think about the bigger picture to reach some pieces of knowledge. In these cases, the way to go is to break it down into pieces and focus on them individually to later put them all together. Again, this requires an extra effort, and not an easy one. But don't worry, breaking problems down is a super useful skill for any software engineer, so that practice won't go to waste.
TL;DR
Starting small is not only about reducing complexity, but also about increasing your chances of finishing a project, and hence, your chances of learning from it. Remember, you are not building a masterpiece, you are building a learning experience.