Choosing feasible projects that are also challenging can often be a bit of a balancing act, so here are some tips on how and why to do it.
You won’t develop much as a programmer without a challenge. If you want to get in shape, you don’t do hundreds of repetitions with one pound weights. You do between five and fifteen reps with weights that challenge you. It’s similar with programming.
Your limits won’t change if you don’t push them.
In order to continue learning, you need to challenge yourself. However, if you push your abilities too much, too fast, you run the risk of ending up frustrated and unmotivated.
Coming to the realization that realistically you won’t be able to finish a project you’ve been working on for the past few weeks or months is crushing.
This is why it’s so incredibly important to choose feasible projects.
How do you choose a challenging but feasible project?
Right off the bat, I recommend doing away with any ideas of building large scale games like MMORPGs. This may become more of a temptation as your skills develop and it begins to seem more feasible, but it’s most likely a bad idea.
Big multiplayer games are generally built by whole teams of people. While you may eventually have acquired all the skills necessary for such a feat, the amount of time that it will require is still tremendous. This comes right back to The Importance of Finishing Projects. The longer you work on a project, the more likely you are to become demotivated, meaning you’re setting yourself up to fail.
If you’re interested, here are some tips on How to Prevent and Overcome Demotivation.
Most of the time it’s good to start small. Often, the hyper-casual game genre is a good place to begin when choosing feasible projects. Games such as Flappy Bird that can be played over and over are easy to build for one person, while still allowing you to be creative and challenge yourself with unique mechanics.
Furthermore, once you move on to the next project and acquire new knowledge, it’s easy to come back and add it to your previous work. When I first released Ball Is Life, it didn’t include powerups or Game Center support. However, after releasing Tartarus: The Abyss, I went back and added those things.
Games that require you to design levels may not be a great choice, as it can become repetitive quite quickly without really challenging your programming skills.
Ultimately, in order to set yourself up for success, it’s important to choose feasible projects. However, without challenging yourself, you won’t grow either.
I’ve found that a good way to achieve the right balance is to slowly increment the difficulty. By this I mean that you should ensure that each new project you start will include a feature or mechanic that you don’t know how to design yet. At the same time, make sure not to attempt an unrealistically large jump too quickly.
Most importantly though, remember that project goals should be fluid. Regularly reassess them, and make any necessary changes.
Finally, keep in mind that you’ll get better at choosing feasible, yet challenging projects the more you do it—so keep at it!