Side projects are a wonderful way to learn new skills, but also to consolidate the skills you already have, but can’t find the way to put in practice. This might be what happens if you use a technology at work, but on a project that uses only a small portion of what this technology provides.
What to do as a side project?
Learning skills related to your expertise, and yet not too far from it, can help you go out of your comfort zone. For instance, learning front-end if you’re a back-end developer, or mobile development if you’re a front-end developer.
Well, a cool side project could be to develop an application but implementing both the back-end and front-end of it. You could also set up the continuous integration and delivery if you want to. Having some part of the project using skills you already have will give you the confidence to start, and the goal of making something from A to Z by yourself will give you the courage to continue.
Of course, this is not the only reason to start a side project. Side projects are always a great way to learn, but not only learn technical skills. In your job, you may use to work on a small part of a big project, but with your own side project, you’ll be forced to have a global vision of the project: what is its architecture? How will you publish it? How will you maintain it? With your project, you’re the chief.
Two categories of side projects
This means that it’s best to know what is the goal of your side project. My side projects can be put into two categories:
- The ones that I do to learn or reinforce a skill (learn a new language, experiment with a new framework…) and for which I mostly don’t care about whether they’ll be used or not;
- The ones I do because I had an idea, or found a problem I think I’m able to solve, and for which the technical aspect is not the priority (for these, the best technical stack is the one you know best).
Both categories of side projects will teach you something. Even if you already master the stack you use, using it in a new project is always something valuable. And putting yourself in the shoes of a potential user is something that can be forgotten in a professional environment, where too many times there are too many intermediaries between us developers and the final user. Again, in your project, you’re in charge of everything, including understanding your users’ needs.
This is why even if you’re doing your side project to learn a technical skill, it’s okay if this skill is just a small part of the project. For instance, imagine you want to learn how to use a new state management library for a web application. Of course, the state management library doesn’t make the whole project, you’ll still need a UI layer, maybe a back-end, etc. Maybe using the state management library will take you only 10% of your time. But it’s okay: using the library and learning how it works in a real project is far more valuable than just following a tutorial.
But if you want your side projects to be useful (both for what they teach you and for its potential users), there is something you must do: release them.
An important thing to do: release your side projects
Publish them. Make them available to some users. Not necessarily to the whole world, but at least make some of your friends use it. First because when working on your project, the simple goal of having some users will encourage you to focus on what is important to them, more than spending time on the details (which would be the best way to abandon your project in the middle). Then because even if your project is not that ambitious, you may have a good surprise if it has a little success. Again a huge motivation to keep working on it.
This means that a good idea to approach your side project from the beginning would be to start small. Your first goal should be to release something usable, even if all the features are not present. In other words, focus on making a Minimal Viable Product (MVP): the smallest application that solves the user’s problem. When this MVP is ready and published to some users, you’ll have plenty of time to add other features or make your application beautiful. (A classic problem encountered in side projects is focusing too much on the user interface. Yes, it is important, but not as much as the main feature itself. Unless, of course, the main advantage of your application against its concurrence is revolutionary user experience.)
The main advantage of side projects
In his blog post The Science of Side Projects, Kevan Lee (VP of marketing at Buffer) explains how to him (inspired by another article by the company Hiut Denim Co) side projects are great because they have three characteristics that make them differ from work projects:
- you don’t have to succeed to have money to live;
- you decide of the timeline, having no imperatives such as a deadline;
- you work on them because you like them, not because you have to.
This brings me to the final advantage I see in side projects, and probably the most important one. Yes, side projects will make you learn things. Yes, they will help you in your career. But more importantly, they are what make us love programming. In a lot of professions, even if you love what you do, what you do at your job can only be done at your job, if only for material reasons. With programming, you can use what you know and master for personal projects, in the best case to help you solve problems you can have in your everyday life. And for these projects, you can just do what you want, take the risks you want, do them when you want, and give them as much love as you want.
Now let’s be honest: no, not all of my side projects were released to the world. Because the most important with a side project is to enjoy doing it, and sometimes you realize you don’t love working on this idea you had as much as you expected. So I have a huge list of projects that I started but never finished. Sometimes it’s because I realized that my project wasn’t as interesting/promising/realizable as I thought. Some other times I just lacked time, until another project idea came to my mind. But it doesn’t change the fact that each time I start a project, my goal is to release it. And fortunately, it still happens sometimes.
Published or not, there is always something valuable about side projects. You always learn something. Best case scenario you learn the language or framework you wanted to experiment with or reinforce what you already knew; worst-case scenario, you learn that what you wanted to do can’t be accomplished as easily as you expected with the stack you chose. But in all cases what you did won’t have been done for nothing.
Want to know more about learning new skills to become a better developer? Have a look at my work-in-progress book The Outstanding Developer.
Cover photo by Nathan Dumlao.