It is no longer enough to just perform your 9-to-5 duties that your employment requires. Not at most jobs, at least. Your tasks will most likely be those of fixing bugs, maintaining legacy codebase, working with outdated libraries, writing documentation and conforming to the same coding standards and patterns that your team-lead has enforced on the project for the last 10 years. You’re here to follow rules. If you’re not careful, that’s all you’ll ever be good at.
If you have 5+ years of experience as a professional developer and you struggle finding a better job, or moving to a higher, senior role at your company - it’s not because you don’t have enough years in the bank. Years of experience is a bad metric and you shouldn’t rely on it. It is because you lack the creativity, knowledge, task ownership, attention to detail and critical thinking that is required in these higher positions. Most of these traits can be addressed with building more side projects.
By working on side projects you’ll be able to train your brain for:
- Task ownership. You’ll have to architect the whole project yourself and you’ll be making important decisions, such as framework choice (choose the right tool for the job), what features go into the project, how should they work, what’s needed and what’s not (aim for MVP first). This will teach you to think about the project and tasks from start to finish - design them, think about the user experience, implement them, test them, deploy them.
- More creativity. Since you’ll be writing all the code yourself, you’ll need to come up with all of the solutions yourself. You’ll be starting with a blank slate, and your brain will have to come up with creative solutions that don’t have to to follow the same rules like your work project does.
- More knowledge. Because it’s a new project and you’re working on your own, you’ll most definitely run into more issues and roadblocks. You’ll have to do research, learn new skills, new frameworks, new software patterns. This will make you a better developer overall and you’ll also be able to apply that knowledge back at your day job.
- Better testing skills. You’ll be doing all the testing. Manually browsing and refreshing all the pages sounds dull, so you’ll want to consider writing some automated tests to cover the most crucial parts of your project. This is a great place to pick up a TDD or similar course if you’re new to it.
“But why should I spend all this extra time working on something that doesn’t pay?”
“I’m not going to get paid for my side projects!”
It's an investment. The payment for your work, with interest, will come later in life and it may come in different forms. Unlike your regular day job, the hours you spend working on side projects won’t pay you at the end of the month, or the next month even. You can’t really know when, or even, if you’ll get paid for the side projects. It’s a completely different type of a transaction. Instead of selling your time for a pre-defined amount of dollars, you’ll instead be investing it, hoping that the "market will go up" and you’ll reap the rewards later. Let’s see what exactly your time investment in side projects could bring:
- Improved skills. Yes, multiple skills - development, planning, ownership, maybe even marketing. This is a hard one to measure or even notice, but with every extra hour you spend coding and solving problems - you become better at it. You’re practicing your craft and gaining more experience. With more experience, of course, you’ll be advancing your career faster, which will lead to a higher salary or a different, better job. It’s an indirect, delayed payment for the time spent working on your side projects.
- Great portfolio. Your future employers and business partners want to see examples of your work. They don’t care where or what you studied, or your promises of being a great developer. Show them examples of your code (for example, public repositories in GitHub) and projects (host them somewhere to be accessible publicly - pay the $5 for a small server, it’s a good investment). You’ll get so many more interviews if you have a great portfolio of interesting projects. Often you won’t be able to share the work from your day job because it’s protected and private, which is why you need your own side projects.
- Additional income. You may decide to monetise some of your projects and that’s a great initiative! If it solves a problem - charge money for it. Connect the project with Stripe (they provide so many tools to make your life easier getting started) and charge your users. It might not be much at first, but it will add up over time. Wouldn’t it be nice if a side project paid for your daily cup of coffee? For your food? For your mortgage? Additional income is always welcome.
- New relationships. As you get better at what you do, you will inherently attract more people. They’ll want to talk to you, learn from you, give and receive feedback. You’ll forge new connections this way which will help you immensely in all your future endeavours.
As you can see, not all benefits come in the form of money, and that’s ok! You probably already receive a good amount of that from your day job. The important thing is that they do come and it all makes it worthwhile spending that little bit of extra time working on your side projects.
If it helps, you can also think of it in terms of money. Let’s say you earn $25 an hour working on your day job. If you spend 8 hours a week working on a side project, you’ll get $200’s worth of work done. You won’t see the money immediately, but think of it as an investment, which may come back later in the form of passive income, salary increase, new connections, or even a better job. There’s plenty of stories where somebody's side project caught the interest of companies like Microsoft or Google, and they got offered positions there. If not that, then you’ll still be a lot more skilled and confident developer who could get a new job paying $800/month higher salary. And that’s your mortgage right there.
Alright, you understand why you should work on side projects. There’s clearly a future benefit there. But…
“I don’t have time for side projects”
“I’m tired after work”
“I have a family”
I’m not advocating for another full-time job in the same week. Not even part-time.
In the beginning it may be hard to put in 10 additional hours of work for your side projects, but over time you’ll develop a habit and you’ll quickly find these little blocks of time that you can allocate to your side project.
First of all, do not replace your day job’s time with personal side project work. That’s a bad practice, dishonest, and can lead to a number of problems with your current and future employers. You’ll have to find time outside of your working hours.
Now, think of the time chunks in your day that you know are bad for you. I’m talking about social media, mindless TV, reality shows, binging Netflix, video games, news articles that don’t really concern you, yet consume a lot of your time and energy. These are the first things to go and you should attack these first. Replace an hour of TV with an hour on your side project. Just get started. Replace an hour of social media scrolling with an hour on your side project. Just get started. Slowly, you’ll notice yourself spending more and more time on your side project. You’ll begin to enjoy the project more as you see it coming closer to completion. You’ll want to finish that feature today and that initial one hour will extend to two-three hours. You’ll be having fun! Well, guess what. Not only did you remove a bad habit from your life, but you also gained a good one. You’re becoming 1% better every day and you probably already know what that compounds to be in a whole year (3778%!!)
Let’s go up a level. If you have very few vices and most your time is already spent together with your family and loved ones (do not trade this time, it’s important for them, and very important to keep yourself levelled emotionally), you might want to stay up an hour longer before sleep, or get up earlier in the morning. When everyone sleeps and you get to really concentrate - that’s when you’ll make the most progress. I personally get up early and put in 1-2 hours of work on my side project before my day job begins. This is for two reasons - I get to work in peace, completely focused, with a fresh cup of coffee. It has become a routine that I love and it makes it that much easier to keep up with it. And secondly, I found myself to be more productive in the morning. Which brings me to the next idea.
You have to figure out the time when you’re most productive. Experiment! Wake up early for a few days. Stay up late for a few days. Or maybe there’s a break during the day that you have every day which you can use to work on a side project? Try everything and you’ll notice yourself being more productive at one point during the day than any other time. That’s your productivity time. Build a routine around it - set up alarms/reminders, get a warm drink, set up a designated working space, tune out any distractions (especially phone notifications), whatever else to make the time more enjoyable and productive. It won’t be long until you’ll be looking forward to your personal creativity time. If you make it there - congratulations!
The goal is to build a habit. Whether you can allocate 10, 5 or just 2 hours a week - keep it consistent. Habits are built with repetition, so make sure to keep at it for at least 4-6 weeks before it sticks and becomes an effortless routine.
We all do things throughout the week that don't exactly bring any value in our lives. Replace those with something that does bring value - family & friends, reading, learning, side projects. We spend 110-120 hours a week being awake. I'm sure you can find 5-10 hours in there for a little side project!
Hopefully I've convinced you that there's always time you can find for your side projects. You're ready to get started. But you're a bit confused on where to start?
“What should I work on?”
“My ideas are simple!”
“My ideas are too big!”
“My ideas have been done already!”
None of that matters. Simple ideas are great for a side project, even if they won’t make any money. Big ideas are also great, since it will force you to break them down into smaller components/tasks and teach you project management/ownership. If it has been done already, that’s great! It means the idea has been validated already and is more likely to take off. You can also take ideas and inspiration from existing projects if you get stuck.
Ok, great, so there are no bad projects. For the purpose of personal development, that’s true - go nuts and work on anything your heart desires. But there are some things you could keep in mind to make the experience more enjoyable and manageable:
- Use familiar technology. Choose the tech stack that you know. Mostly. Ideally, you’ll want to be 50-60% comfortable with the technology you use to build the side project. You still want to be challenged and learn new things, of course, but it’s important to also have a sense of completion and that is done by repeating what you already know. Repetition is useful because it’ll make you better understand the technology and make it easier to work with it in the future. If you use the same technology at your day job, you’ll become better at it and consequently become a more valuable member of the team, which will lead to more praise and promotions! It’s a daily practice of your specialised skill/technology that will make you great at it.
- Write down the project statement in one or two sentences. What is this project exactly, what does it do, how does it help you or someone else? For example, “web component, which displays current weather information in a beautiful, responsive design”. Make it visible whenever you work on this project. This will make sure you stay true to the idea of the project and help you keep your tasks and features minimal so you can finish faster. If you ever think of a new feature to add to the project, remember the project statement - does the new feature help fulfil the statement? If not, then it doesn't belong here.
- For your first 1-2 side projects - keep it short and simple. What can you build in 1-2 weeks? Developers will often start grandiose projects, such as a brand new social network, or an “Airbnb for bicycles”, etc, but they will soon get discouraged by the massive amount of work needed and completely lose motivation for any side projects at all. Especially in the beginning, while you’re still learning how to self-manage a project that you work on by yourself, you’ll want to have quick wins. This means completing a project in a short time. This will also force you to lower expectations and lower the feature-set of the project. You will only implement the bare minimum functionality and that’s a great skill to develop when developing side projects, especially if you intend to make money off of them (counter-intuitive? Not really). That's where your project statement also comes useful (see the bullet-point above).
- Make a plan. Write down the list of features you can implement in the 1-2 weeks and a rough estimate for each. If a feature is big (takes a few days or more), break it down into smaller parts. Be conservative - estimating and planning is hard, and those features will most likely take longer to implement than you think, so leave some room for errors. This means your feature list will be shorter, and that’s okay! It’s better to finish the MVP earlier, than to stress about only completing half the project before deadline.
- Share it. Once you finally complete the project - share it with others. Whether it’s your family, colleagues, or a community online - make sure to share your work. You’ll receive feedback that’ll be valuable for your next projects, and you might even help someone else by bringing this new tool to their life. If you’re not going to monetise it, then consider sharing the code in GitHub or other code repositories. This will be a valuable asset in your portfolio of work, which will make it a lot easier to get a promotion or a new job in the future. Working on closed-source code all the time can leave you in the shadows, making it hard for future employers to judge your abilities. Make sure to always have some side projects available publicly.
If you can’t do one or more things mentioned above (maybe you’re not a public person and don’t feel like sharing your work), that’s OK too. It shouldn’t discourage you from working on side projects. You’ll figure out quickly what works for you and what doesn’t, but you must start.
I hope you get inspired and follow up with the idea. Soon you’ll be building great products on the side, which will help you personally, or your day job, or someone else entirely. You’ll start noticing trends, like what works and what doesn’t, the common issues and feedback about your projects, the code practices and patterns that work for you and others that don’t, etc. You’ll feel more comfortable with the code you write, you’ll learn new tricks that will also help you in your day job. And who knows, maybe one of your projects will take off and you’ll be making a nice side income, allowing you and your family to live a better life!
Most importantly, it will make you a better developer. It’s really fulfilling to be good at what you do. Good luck on your journey, and let me and everyone else know about the side projects you build!