A few years ago, when I was working at a startup (Ruby on Rails app) as a front end developer, from time to time I had to go in and make back end changes. It was terrifying because I didn’t know what I was doing. I decided to learn Rails and bought books and took online courses. However, it wasn’t as easy as I thought, because I only had front end background and some WordPress experience.
So, I decided to build something on the side using Ruby on Rails. I didn’t intend to build a product for customers or to make money. Instead, I started building a timesheet app, since my dad works in construction and always complains about filling out time sheets and how time-consuming it is. A good app solves a problem.
It took me 3-4 months to build it. I didn’t pick the easiest project because this one required repeatable fields, time calculations, and complex nested forms. But I got through it by reading tutorials and books, watching courses, and asking questions on Stack Overflow and GitHub. Even though I can’t call myself a Ruby on Rails developer, I learned a lot, and after that I felt I could build another app of similar complexity in half the time. A year later I re-built this app in Meteor.js, which took me about the same amount of time. Now it’s an app that I and other people actually use. It’s called TimeBooklet.
Every software developer or designer should have a side project. Building an app or prototype in your spare time gives you an opportunity to learn and explore new frameworks, experiment with cutting-edge technology, or try a new trendy style. Most importantly, side projects give you a safe space, where you are not afraid to fail or make mistakes. It’s also the best way to learn something new. Sure, you can build a todo app and follow an official tutorial and then call yourself an expert, but then when you get your first reality check, you’ll panic. It’s important to solve a real problem.
Here is what you can do to start your side project. Think about the apps you use regularly, and figure out what features could make them better. It’s very hard to come up with an original idea these days, especially if you’re just trying to learn a new library. For example, I started working with a couple of friends on a side project that would help teachers and students in the classroom. We just wanted to have a side project to have fun outside of work, that would give us the freedom to design and code whatever we wanted. We had to re-write it twice to get it right. The first time, we were just learning Meteor.js and were trying to figure out UX. The second time, we had a better idea of how and what we wanted to build. We learned a lot, not just a new framework, but more about UX, devops, public speaking, talking to customers, and marketing. Now we have a product people use on a daily basis, classmate.io.
Here is how I plan my side projects:
- Make a list of 10-20 ideas. Ideally, you should write down 10 ideas every day.
- Estimate how much time you have and schedule daily time blocks for a side project.
- Clearly define the goal of the side project: for example, “learning React+Redux”.
- Pick one idea that you can finish in 1-2 months and make sure it aligns with your goal.
- Make a git repo. I recommend you use public GitHub repo and commit code daily.
- Share your progress weekly through social media (Twitter, Reddit, Medium, or your blog).
- Ask questions on Stack Overflow or social media along the way. People like to help.
- When done, start using your app and encourage others to check it out, too.
- Build one or two more projects using same tech stack to cement your skills.
If you’re a software developer, especially a front end developer, always be learning. The industry is moving very fast (that’s a good thing!), making it easy for anyone to fall behind in a short period of time. Most companies can’t afford giving their developers free time to just learn and explore, like Google Labs. So, it is up to you as a developer to learn new skills and stay up to date. Side projects are ideal just for that - learning and exploring. Having been on both sides of the interview process, I can state with confidence that if you have side projects, especially completed projects and a few in progress, it’s a huge plus. That shows a person really cares about the craft and is constantly improving.
What side project are you working on?