Building projects is one of the best ways to learn a new technology or to get better with a stack you are already familiar with. Wanting to build a side project is one thing, though, and finding an idea for it is a completely different animal.
In general I don’t like random lists of “best ideas for your side project” because most of them are either generic or they feature projects I don’t find that interesting, so here is a system that I devised for myself that might also be useful to you.
Teach a dev how to fish
This approach will not give you specific project ideas you must build.
It will teach you how to figure out project ideas on your own. The ideas will be yours, you will be passionate about finishing your projects based on them, and you will build out your portfolio with projects that actually mean something to you.
Figure out what you like
You could have a hobby that you are passionate about. Maybe you like watching TV shows or playing video games. Maybe you’ve recently found out about your love for baking bread, as a lot of other people have. I hear knitting and crocheting are “secret” hobbies many developers have because it helps them with handling stress. Whatever it is - you can turn your topic or object of interest into a project.
Find a problem that exists in your hobby and build a solution for it.
Expose yourself to new ideas
Your imagination might falter, but you will never be alone in your efforts. There are billions of other people on this planet and a lot of them have built their own projects. Some of them write articles or record videos and podcasts in which they talk about those projects. A lot of them keep inventing new stuff to create as that is their nature.
Steal their ideas.
Don’t copy-paste anything you get your hands on, but do use existing work others have made to inspire you.
You don’t need to consume tech-related content to get a tech project idea, but it does help. Read books about a programming language or a tech stack you are learning. Books cover a variety of language functionalities and you will naturally start to think about interesting ways to implement them.
It’s the same thing with blogs and articles. Follow news that are related to what you are trying to learn and the progress that’s been made in your tech stack might inspire you to build something that uses those new functionalities.
Talk to people
I am aware that a stereotypical programmer is an introvert, but there are many ways to communicate with people that don’t involve eye contact and actually speaking. Join communities of people that share your interests. Be it Twitter, Reddit, Discord or something else entirely, there are other people who are in the same boat as you.
Talk to them, ask them what they are working on and you might get an idea for your next side project. Or, you could join them in building their own.
Write down literally everything
I mean it. Get yourself a pen and a notebook or a notes app for your phone and computer and write down every single idea that you get, no matter how big, small or innovative it is. Even if it’s just a glimpse of an idea - write it down.
I have one of these lists that I open up from time to time and rearrange my ideas based on priority and level of interest I have in them. When I finish one side project I just open it up and pick up the first item from it.
Sometimes these ideas overlap or can be combined into a single project. That’s why I write down all of them.
Take it easy
Just because building projects is one of the best ways to learn programming it doesn’t mean you need to build new stuff all the time. Take care of your mental and physical health before everything else.
Give boring ideas a chance
There are quite a few web functionalities most people don’t find interesting or inspiring - forms, register and login workflows, database connections etc. But, as it turns out, those are the things that many web apps have and most jobs will have you working on similar boring but very important things.
You don’t have to, but it would be in your best interest to get to know these things and implement them in your side projects. Or make them as separate mini projects.
Give them an interesting spin to keep yourself engaged and learn how to build them because it will be useful in the long run.
I need more
Maybe you already have ideas, but you are struggling to finish your side projects? I have an article on that topic, too, where I cover some of the things that help me tackle and finish all of my projects.
Finished a side project - now what?
Hug it, pet it and call it George.
In all seriousness - after you’ve built it, let other people see it. Having your side projects in a structured portfolio will help you a lot when looking for a new job. That means either on GitHub or your portfolio website.
If you need some advice on how to structure your GitHub profile and make it presentable - I have an article on that topic, too.
Post about your side project on your favorite social media platform. Let people know how you did it and why. Talk about interesting problems you encountered on your way and who knows - maybe you’ll be an inspiration to somebody else.