This post was originally published on my blog
It doesn't matter if you are a junior or senior software developer. There is always a thing that you might have missed and haven't learned it. Depending on our field, we all have different experiences, therefore we can use the same tools in different ways to solve a business problem.
The thing is we will not completely learn how to use a tool if we don't use that tool for more variant problems in even different industries with brand new perspective.
Side projects gives you more experience with the programming language you are working with and there are lot's of possibilities that you might forget to experience. This is a great chance to extend your domination over your current programming tools.
Also it's very good to sit down and think a little about your old solutions, reevaluate them and come up with a new better idea or solution. A solution needs to prove itself by passing some test after implementation. This is your side project, implement and use your new ideas to take your next project to the next level.
As a software developer you need to keep yourself updated about new things related to your job. You definitely can't achieve this buy reading random stuff from internet. Specially when the new things are happening about your current tools.
To be always updated about your tools features you need to run some experiment, see how do they work and think about how can you use them to keep your software quality as high as possible.
Side projects are the best way to try new technologies, services, frameworks and programming languages. The more you explore new technologies, the more you can provide better and efficient solutions to the problems. Problem solving is not just about solving problems, it's more about your perspective and how you see new challenges.
Most of the time when we say side projects you might think of some small projects created to just practice your technical skills, but you can start a bigger project too, you can create, deploy and sell your products to real customers. This experience is so valuable that can change your vision about a software product.
In a company depending on your role, you may be responsible for just the technical and development part but when you are selling your own product you'll face some new problems. Business needs, customer needs, marketing, devops and etc might be the thing that you never had too learn if you didn't start that side project. Maybe your current side project could also be your future main project.
When you create an almost big project you see things in a more abstract way, trying to figure out what's the best approach to solve business problems. Most of us at first are fighting with bugs and developing the projects. Development at first is about details and analyzing problems. But when it comes to business a vast perspective is a need.
So a new thing to try is other programming and design paradigms. If you want to improve your skills, at some point you are going to learn software design and architecture too. Using the same paradigms over and over again may help you make the system work but is the system working with the best performance and complexity level? what will be the costs if you wanted to add a new feature to it?