As a teacher, beginners often ask me these project-related questions:
- I've just learned the syntax of this new programming language. What do I do next?
- I want to be a programmer. What software should I make next?
- I am applying for a job. What projects should I build to get hired?
- I want to be the very best. Like no one ever was. Tell me what to make.
Learning a new skill is relatively easy. You just need to study the basics, the mechanics, the terminologies, and your stance while doing that skill (think of a stance like the way you should be holding a guitar, or how you should be touch typing).
What is hard (and important in learning something new) is applying what you know or what you think you know. This is why there are exams and activities after you learn a new thing: to test and challenge what you know. For programming, instead of exams, we should be making a project.
One of my favorite scene from the Karate Kid is where the Sensei tells his student to wash his car.... but by first using his left hand, and then his right hand. The student thinks this is useless but its actually a trick by the Sensei to teach the correct stance for the skill. Yes, this is unrealistic but I realized I can test a student's new programming skills by asking them to make simple programs.
These are the programming projects that I think can teach a beginner how to program. As a Python teacher, I'll also give python library recommendations.
Entry-level programming projects
Calculator. You need to use functions and if statements. You need to learn how to handle errors and validate inputs
CRUD application. Almost all software have Create, Read, Update, and Delete features. If you can make a CRUD application, you can program almost anything.
As a beginner, you should start simple with an app that records data similar to a log book. Then, figure out how to save and load the data into memory. Afterwards, try to store and retrieve from disk.
Database. Your programming language will have a library for accessing the database. The simplest database you can use is SQLite. Start here.
Also, just because SQLite is simple compared to other database systems, it doesn't mean that it is weak. SQLite is used in many applications. If you can connect to a SQLite database, you can connect to any other database.
For Python students, I recommend looking at the sqlite3 library.
ORM. This is short for Object-relational mapping. In essence, this is a way to talk to the database using an Object Oriented Programming model, instead of using sql. There are arguments for and against ORM, but as a beginner, you shouldn't worry about that yet (I'll also write about this in the future). However, modern computer programming makes heavy use of ORM. So you will need to learn at least the basics.
I recommend Python developers to look at Peewee. This library is straight-forward, so you can just focus on getting comfortable with how ORM works.
Web development. Welcome to the Information Era. Everyone is connected and everyone can interact with each other. You might be planning to be a back-end programmer, machine learning specialist, or even a game programmer. But it will be extremely useful if you know the basics of how web programming work. There are just too many online service that you'll be missing out if you can't do web software.
I would recommend two projects here: 1) a website that have at least 3 corny jokes. The cornier, the better (don't forget to show others what you've made). 2) a simple blog that have CRUD functionality. (Oh look, wax-on, wax-off. Having a foundation for programming CRUD application is useful for later projects)
Beginners of Python should give Flask a try. This framework is simple and you can make the above web projects in under 4 pages of code.
Mid-level programming projects
On a later post, I'll be giving project suggestions for mid level Python developers
 You shouldn't try to learn skills from movies, tv, or video games. You won't know kung fu just by watching Teenage Mutant Ninja Turtles, no matter how good they look).