After learning the basics of programming, the typical advice is to start making programs yourself, to further your learning.
At some point, you’ve got to stop doing exercises and start making real software.
But what should you make?
When you’re a beginner, it’s not always obvious what is possible to make, let alone what is achievable at your current skill level.
In this article, I’m going to look at some beginner-friendly project ideas.
Stick to Text-Based Programs, for Now
For beginners, text-based programs are the most achievable type of software to create.
I know, it’s tempting to try make a 3D game, or a nice polished GUI like you’re accustomed to using.
The problem is that nice GUIs are usually really hard to create.
3D graphics programming is even harder, because it requires some advanced mathematical concepts.
If you’ve got the inspiration, do try to make a GUI or a 2D game.
If you enjoy it, keep going.
If it’s overwhelming and unenjoyable, stick to making text-based programs for a while longer.
Once you have a good understanding of data structures, control flow, and the features of your chosen programming language, you can attempt to tackle something more complicated.
Text-based programs can still be fun!
Here is a text-based program that runs Conway’s Game of Life:
You might be thinking that nobody actually uses text-based programs.
This is true for the average computer user, but professional programmers tend to use a lot of text-based programs.
Some programmers will spend the majority of their workday using a command-line interface (CLI), running text-based programs.
In fact, this website and the Programming for Beginners book were both created in Vim, a command-line text editor.
Make Something You Can Use at Work or School
Ideally, you want a project that you (or someone else) will actually use.
This will give you the full software development experience – from analysing requirements to user testing, and maintenance.
You’ll be more motivated to complete the project too, if it’s going to actually be useful to you.
At work, the types of useful programs you could make depends on what your job is.
Anything that involves repetitive manual steps on a computer can be automated – number crunching, moving files around, sending email, that sort of thing.
Al Sweigart has a great book called Automate the Boring Stuff with Python about this topic, which you can read online.
If you’re a student, you could write a program to solve your math homework.
It’s more interesting than doing sums manually.
If math isn’t your thing, you might enjoy making a flashcard program or a quiz, to help with your studies.
If your area of study is more artistic, maybe try a random text generator for inspiration.
Pick words at random from a list, and slot them into a sentence like “The X in Y”:
- The woman in a car
- The cat in the toilet
- The ballet teacher in Poland
- The drama in the dewdrop
If you’re really stumped for programming ideas, try making something generic like a to-do list manager.
Make a Game
If you can’t think of anything that would be useful, or if you just want to make something fun, try making a game.
Some people find it motivating to have complete freedom in their programming projects, and making a game gives you that freedom.
The beauty of programming a game is that it can be adjusted to fit your situation.
It can be simple or complicated, depending on your skill level.
It can be long or short, depending on how much time you put into it.
Try to make a text adventure.
For inspiration, have a look at A Dark Room.
It is a very poplar, mostly text-based game.
Try making a quiz, or a choose-your-own-adventure type of story.
This is a nice and simple project that you can get other people to play.
You can even make simple 2D graphics with text, like the Game of Life example from earlier in the article:
As your programming skill level increases, you can start making 2D games.
Learn to use a very simple 2D graphics library, like Gosu, Processing, or Pygame, and it will open up a whole new world of possibilities.
Projects I Made as a Beginner
In high school I would make short quizzes for my friends, that would accuse them of various things (which I won’t repeat here).
I made a random insult generator, which would come up with things like “stupid chicken sniffer” and “super idiot breath.”
I made a chat program so that we could talk to each other in class.
It didn’t work properly half the time, because it was made very badly, but we still used it for a while.
Later I made a program I called the “helpful virus.”
It wasn’t really a virus.
It just pressed the F1 key every ten seconds, which would bring up the help window.
I put this program on the public drive and called it “porno.scr”, and then waited for other students to run it.
I tried to make an IRC chat bot.
I never got it working properly, but I did learn a lot about networking from it.
All of these projects are pretty silly, but the point is that they were interesting to me at that time.
And because teenage me found them interesting, I kept writing code.
In the end, it doesn’t really matter what project you create.
As long as you’re making something, you will be learning.
What’s important is to find a project that motivates you.
If writing the code is fun, then you’ll keep writing code.
Experiment with a few different types of projects to find one that suits you.
Lists of Project Ideas
Here are some links to websites that have lists of programming projects of varying difficulties.