They say you’ll never work a day in your life if you love what you do. I’m inclined to agree with that statement. As a software engineer, there aren’t many days that I “work.”
I think it’s how I’m wired. I love solving problems. I love learning. Getting my hands dirty. Creating.
Writing code has made such a profound impact on my life that I continue to do it at home when I leave work. I wake up early, code a little, go to my day job, code a lot, go home, read about coding.
On top of all that, my after-hours coding makes my work during the day more enjoyable. Why is that?
Side projects are fueling my passion to create. They reinforce my desire to learn. If you are an engineer of any kind, I know you know the feeling.
So what is it specifically about side projects that are just so…. titillating?
Engineers, by nature, love to learn. I don’t know anyone who would tell you differently. Figuring out the why and how things work is just something we do. Side projects give you the opportunity to learn new patterns, programming languages, and concepts you otherwise would have ignored. The theory is just theory until you practice.
I’m of the opinion that you won’t truly understand something until you do it. Your side projects provide you with the chance to enhance your comprehension of your field. You get a first-hand encounter of something new and get to wade through all the problems yourself.
The beauty of side projects is that there are no constraints! You can build whatever your heart desires. Do you want to learn a new programming language? Go ahead and build a POC. Do you want to make a little extra money on the side? By all means, try your hand at building an e-commerce site.
Take known problems and see if you can come up with a way to figure them out. As an example, I was working on a project where I needed to store pins on a map to show points of interest. The map would do a geo-search whenever you scrolled and updated the map with any new pins.
The difficult part of this problem is that I was using the NoSQL database DynamoDB. If you’re familiar with NoSQL at all, you might know that it’s not great for searching. It is a database designed for lookups. So I spent some time and came up with a solution that solved my problem.
Was it necessary to build it this way? No. But I wanted to come up with a creative way to solve a problem.
Chances are high that you work on a team of developers at your day job. The members of the team have their set of responsibilities to make the team as strong as possible.
With your side projects, you get all the responsibility. You’re in charge of the design. You get to come up with the architecture. You get to write all the code. And guess what? You get to maintain it when you find defects.
By taking on the wealth of responsibilities, you are providing yourself with the chance to see how you want to progress your career. Did you enjoy coming up with the design and architecture? Maybe you should strive to become a software architect.
Maybe just the coding was more your speed? No problem, a principal engineer fits the bill.
Was your favorite part coming up with the list of features and creating a timeline of what comes first? Maybe you’re actually cut out to be a product person.
Exposing yourself to the multitude of responsibilities will help you narrow down on what your true passion is. And if you are passionate about what you do every day, you’re not working, right?
A nice little perk of building up your portfolio of side projects is that you can use them as reference material for your day job. They say most developers have never written a unique line of code in their life. Everything is copy/paste/replace.
While that may be a hyperbole, there is some truth to it. Think about it — if you have something that works, why would you want to write it again? Writing it again only introduces the opportunity to make human error.
With your side projects, you can pull in code snippets as examples for what your team is trying to accomplish. You have working code that helps move your team forward. Or maybe you just have the knowledge and experience of a new pattern.
It could even be as simple as the know-how of getting past an error message. If you’ve encountered an error before and spent the time researching and troubleshooting, share the knowledge with your colleagues. They can benefit from what you did. And you will benefit from the side projects they have worked on as well.
If I ever am feeling down and need my faith in humanity restored, I can always just go to GitHub. I know it sounds lame, but it is the perfect example of people helping people.
Thousands of developers spend hours and hours of their time building software solely for the purpose of helping others. They provide working software, reference material, and functional examples to help each other.
Your side projects are an opportunity to give back to that community. You have the chance to get someone past a problem they’ve been having. You can help make the lives easier for hundreds or thousands of people.
Contributing to the open-source community also helps drive a sense of ownership in your work. It gives you a sense of pride knowing that there are developers out there using the code you wrote. It encourages you to learn something and do it right.
I don’t know about you, but writing this article has made me want to start another side project. There are so many things out there to learn, ideas to materialize, and experience to be gained.
If you think you’re too busy for side projects, just remember that you find time for the things that really matter. Maybe today, instead of playing Animal Crossing for an hour, you spend that time walking through some AWS tutorials or setting up a new repository.
You are only limited on what you can build by your creativity, so get out there, write some code, and make it open source!
Interested in my side projects? Here is my GitHub!