One of many great ways to build your career in tech is by trying out a side project. It's a hands-on way of learning in tech, and there are a lot of benefits you can get out of it. However, there are challenges to that as well. If you hang out a lot on tech Twitter, you might have seen memes about unfinished side projects, like this one my pupper Lola wrote.
Lola the Micropanda@lolamicropandaWhen you come back to an old #sideproject and everything in package.json is two versions out of date11:07 AM - 22 Sep 2020
But even if you don't finish your side project, you can still get a lot out of doing it. I personally have been doing coding side projects in some form since 2011, and have been able to use that to grow my tech career, so I would like to share some of the benefits to doing personal projects that I know about.
If you're into learning new technologies by building, side projects are a great opportunity for that. Because you're doing your side project on your own time, you can try out any technologies you want to use in your tech stack without having to run it by your coworkers or teacher. You can even try a completely new area of technology and see if you like it.
I know I personally learned a lot of backend web development through side projects while doing computational biology at MIT. In my free time then, I was working on the server to a campus tour app and in the process teaching myself Node.js, and later Go. While I never actually finished and shipped the app, I still was able to learn a lot about using npm in Node, how to make backend code and frontend code talk to each other, and about how Go does HTTP. All of these things became useful in my career a year later when I became a backend engineer.
The other way side projects let you learn by building is that when you do a side project, either by yourself or with a group of friends, you're wearing many hats. In side projects, you're making a lot of decisions that someone else might have made if you're doing a project for work or school. Those are decisions like how to organize your code and make different components of your project talk to each other, what documentation style you're using, what third-party code you're going to use, and what your database schemata will look like.
Making all the decisions of a project can be intimidating, but at the same time, getting to try some of everything is a great way to become well-rounded as a developer. One tip I do have to make that less overwhelming by not having to start from a blank screen is to check out scaffolding tools to kick off a new project, such as vue-cli for Vue.js or Mix for Elixir, so you start out with a sensibly-arranged repository of code. Then you can fine-tune the infrastructure later. Another thing you can do is start by making smaller projects and then later on add more components, so you're only learning one thing at a time.
One of the great things about learning by building is that because you can try whatever technologies and areas of tech you want, and because you're wearing many hats, you can use side projects to learn about multiple tech careers. If you're making a full-stack web app, you'll be learning about frontend, backend, and app deployment, all things someone might specialize in at a company. If you run an open source project, in addition to the code you're writing, you'll be learning about growing and managing a tech community. And smaller projects let you focus on learning a single new programming language or area of technology.
All of this means that especially early-career, side projects are a useful way to get a better sense of where you want your career to go since you're trying different kinds of work like tech stacks, job titles, and domains of problems you want to solve. Tech is huge, so there's a lot of different directions you can take your tech career in! I do a lot with web development, but I haven't even scratched the surface on say, embedded systems. So if you really like a side project or some aspect of it, exploring that further can help build your career.
Also, if you try an area outside of your specialty, even if you don't decide to switch careers to that, becoming familiar with it helps you be a great teammate to people who do specialize in that area. This I saw personally from working on a browser extension side project for managing my tabs. I learned the modern frontend ecosystem and found really like both backend and frontend. Because of that, even though I do backend primarily, I am good at communicating with frontend teammates and visualizing how the backend I work on will be used to build a great user experience.
My personal favorite part of side project work is that it can also help you teach in tech. This is because when you teach about an area of tech you've worked on in a personal project, you are bringing a really hands-on perspective. When I was building my campus tour app and switched to Go, I started writing blog posts transferring what I know from Node into Go, and then posting them to Twitter. My most-read coding-focused blog post was my tutorial on webpack, which I taught myself because I needed to know how to make both a build process and test coverage for my browser extension app.
Finally, in addition to teaching online and at events, you might even be able to give a talk at work on what you learned from a side project. If there's a tool you tried in a side project that you think could be applied at work, or that you just think your coworkers might find interesting, you can always talk to your manager about holding an informal lunch-n-learn session on that tool and what you learned by building with it. You might even convince your team to start using it on the job!
While I have always been into side projects and they've had a big impact on my career, it is important to make it clear that side projects are just one of many ways to get the benefits I was talking about in the previous sections. You can build your coding career through school, networking, speaking, writing, learning on the job, and many other ways. And one style of building coding skills isn't better than another! So there's nothing wrong with not coding a side project if they're not your thing. In fact, many highly talented software engineers stop coding at 5 and don't do any side projects.
It is also important that if you are into side projects, that you take self-care seriously to prevent burnout. Some side projects can even become startups in their own right or thousand-star GitHub repositories, so it is easy to get sucked into "hustle" hype and feel bad about not being as productive as you might be at work or school. This is why self-compassion is so important in side projects; you're working on solving problems without the structure that often comes with a job or class, and you're doing this work on your own time. And if you're doing side projects right now, this is a stressful time to be working on one. Even if you don't finish, just trying a side project and learning from it is admirable!