For a lot of developers, the last thing they want to do after being at work all day is write more code. Staring at a screen all day does take a toll on you. Once you've had a chance to go for a walk and eat something, you might consider starting a personal project. It doesn't have to be anything to complicated.
There might be a framework that you want to learn or a library you've been interested in. It doesn't even have to be related to your job. This is your time to learn something that you actually care about and work on something sounds fun to you. Doing personal projects will make you a better developer and here are a few ways how.
You get to experiment without judgement
Nobody has to approve your pull requests or even see your code. It doesn't matter if it's pretty or not because it's just you playing around. You might want to start working with VR and you just want your little app to run. The code can be as ugly as you want and no one else will ever know.
This is like when you let kids color outside of the lines. You start to think and see things differently. Plus you get to try different things in the process. You could start learning a new framework and realize that you don't like it and stop immediately. There aren't any consequences in your personal projects.
You learn how to handle more of the application lifecycle
Since this is a project that only you will be working on, you get to make all the decisions. That means you'll learn about software architecture because you'll have to setup the structure of the project. You'll learn how to pick a tech stack that matches your needs, even if you don't know all of the languages involved. All of the details of the project, like who would use it or what problem it fixes, will be up to you.
Personal projects give you insight on every stage of the development process. You'll even have to decide which hosting service you want to use and what kind of resources you need. This is one of the best ways to get exposure to a broad range of skills. When you get into a professional setting, you'll know a little about how everything works on top of your specialty.
You can let your mind wander
Programming is very much like an art. There are numerous ways to accomplish the same task. Now you get to try as many as you like. With personal projects, you don't have to follow the same patterns that you use at work. You can mix it up and try as many different things as you want. Try functional programming if you haven't had a chance.
This is also the time you can work on your million dollar idea. If you have a thing you wish somebody would make, do it yourself. You might not actually make a million dollars, but you will have fixed a problem you had. Your projects are your time to be creative and do the stuff that you wish you could do at work. Just have fun with it!
How to pick a project
Sometimes it's hard to settle on an idea for a project. If you have that problem, start by making a replica of a different application with a different tech stack or something. This will get your brain pumping and eventually you'll come up with something you'd rather do. The key isn't coming up with a great idea. The key is to get started on something.
After you've worked on your replica for a while, you might notice some shortcomings in the app that you can fix. Or you might realize that you don't want to make this replica anymore and you start on something else. The purpose of replicating an existing app isn't to really make the replica. The purpose is to get you started on something so that you'll find what you really want to do.
Personal projects help you learn skills you didn't know you needed and they give you a chance to learn new frameworks or programming languages. By playing with code and having fun doing it, you're making yourself a better developer because you're still learning. Doing something is better than doing nothing.
So even if you only spend 30 minutes a day on your project, it still counts because you learned something. Don't lose that whimsy you once had for code. You have to keep it alive! What's a cool personal project you've made? I trained a neural network to predict what a person will click next and I found out you can program microcontrollers with JavaScript. π€ͺ β¦ I need to stop finding things to play with.
Hey! You should follow me on Twitter because reasons: https://twitter.com/FlippedCoding
Top comments (20)
Great article. I wholeheartedly agree with all of the points you covered here Milecia.
One thing to remember as well especially when learning a new language or framework is to keep it small at the beginning especially if you don't have a lot of time.
Sometimes we get too excited to an idea that we overestimate what we can achieve within the amount of time that we want to invest in learning it and then we get overwhelmed with all of the concepts that needs to be learned. It's one of the reasons why don't finish what we started. I also fall into this trap sometimes π¬
What's important is to break it down, to get the scope of what you wanted to learn and then define a specific goal that you wanted to achieve from learning this new thing, a success criteria. For example, learning the basics of Javascript to create a simple calculator.
That's all. Cheers!
Thanks for the tips.
Nice write up π
I have tons of ideas but in most cases I stop working on it after several restarts (trying new frameworks, do something differently, ...).
For me, personal projects have two major benefits (as you also mentioned):
If you have problems finding a project you want to work on, this might help:
Here's another collection of app ideas you can use:
github.com/florinpop17/app-ideas
Thank you for sharing those! You will definitely find a project idea there.
Thanks for adding those lists of ideas! Definitely going to check out a few.
There are definitely more, but those are the ones I quickly remembered.
This post is gold β¨
I consume most of my free time doing personal projects and proud of it.
Last week I created an open source online markdown viewer and editor called Marcdown π
It's lightweight, fast and clean. I wrote about it on dev.to β¨ and got immense support (3500+ views // 100+ reactions // 25+ comments) from my fellow devs π§‘ππππ Love you all.
GitHub link
Great article Milecia!
I couldn't agree more. Trying to figure out what to build especially for new developers can in itself lead to frustration and burnout. My answer is always this, build something you already use and enjoy, then let your imagination run wild with it.
Totally agree! Personal projects help me a lot on getting to know new stuff in Android developement. Sometimes the technologies we use at work are not new or we haven't got the space to apply new stuff and if we want to keep up to date with new trends, the personal projects is the only way we can do it. And just reading about them isn't enough, I need to write code in order to understand how something's supposed to work.
Great article btw!
I started to make my own alternative to GitHub with PHP, i learned laravel with it or microblogging app with laravel + android app... I learned how to map network drives from encrypted configuration and more ....
I've had several passion projects, some Kafka related. Thinking about trying to build the Kafka Broker in Rust, to learn more about the internals of Kafka, distributed programming and Rust. But first have to finish a blog for Confluent and what to play with KSQL as well. And then there are some Rust Wasm frameworks I want to try..
All your points are π― valid. The only problem is you can get really exhausted from coding all day at work and coming home to code some more or even read a book on programing. You sometimes just wanna relax and do nothing.
Hi!
I'm a volunteer firefighter and I develop apps for the team (i see that like personal projects). That's ideally to apply all of my creative and i learn developing something usable.
In this time i came across with all you write, its very productive!
I am working on a personal project and it's really an adventure. I get to reset and try working out problems with different approach. I get stack with an error no one has ever stack overflow it. I get things to work out on the end user at the end of the day.