A Software Developer’s Guide to Side Projects
A Software Developer’s Guide to Side Projects
Everyone has had the idea for a side project before, be it an app, blog, etc. But how many people actually carry through to the end?
Join the DZone community and get the full member experience.Join For Free
Discover how TDM Is Essential To Achieving Quality At Speed For Agile, DevOps, And Continuous Delivery. Brought to you in partnership with CA Technologies.
I don’t know a single software developer who hasn’t thought of starting a side project. I, myself, have had many different side projects throughout my career. Well, I should be more clear by saying that I started many side projects throughout my career. To be honest, most of them didn’t get finished. To be honest, most them didn’t really get started.
You see, there is a huge difference between a dream and a goal. A dream is something you chase and a goal is something you do—something you make happen. I used to be a dreamer. I used to chase ideas… dreams.
I’ve always been involved in some side project, but I haven’t always been committed. In fact, I can trace my life and career back to a single moment in time where things drastically changed—a single inflection point.
That inflection point was one of the first side projects I actually finished. I wanted to learn Android development and to create an Android application, so I decided to make an app called PaceMaker, which I eventually renamed to “Run Faster” due to a trademark dispute (Long story).
Anyway, I worked on this side project, just as I had worked on many other unfinished side projects until I got bored with it and decided to quit.
But then, something happened. Instead of quitting, I dug in my heels. I said to myself, “John, you are going to finish this app and put it into the Android app store. It doesn’t matter how long it takes, but you are going to work on this app at least an hour each day until it’s done.”
That was the moment everything changed. That was the moment I became a finisher.
Finishing that one side project led to opportunities upon opportunities and other side projects, which eventually took me to where I never thought I’d be today; writing a book, making videos, owning my own company, and essentially being retired.
Fifteen or so years of my previous work experience didn’t make as much of a difference in my career and life as the one, small side project that I finally finished.
That side project is still in the Google Play store today. In fact, there is an iOS version as well.
I haven’t updated it in years, but it still makes me just a little bit of money each month and reminds me of just how important a little side project was to my career.
You Should Always Have A Side Project
One of the best ways to advance your career as a software developer, bar none, is through side projects.
I’ve already told you my story of how that little Android app made all the difference in my life and career, but even the smaller, unfinished side projects I started before “Run Faster” helped me enhance my software development skills, learn new technologies, and sometimes even make a little bit of extra cash.
One of my earliest side projects was a Palm Pilot application I called MaLi (Magic the Gathering Life Counter).
It was written in C and I ended up selling it for around $5 on my website at ssmoimo.com.
Using the power of the WayBack Machine, you can actually see the website I created and even download an old version of MaLi.
I learned quite a bit doing that side project. I learned a bit of graphic design using PhotoShop to create my logo and the images for the website. I learned how to create an animated GIF. I learned some web design skills. I had to learn a little bit of Perl so I could create a CGI script to handle PayPal payments and automatically send someone a registration code to unlock the registered version of the app. I even had to learn how to implement a primitive copy protection and registration system, and how to conduct basic e-commerce.
Now, I didn’t make a large amount of money, but I developed a wide range of skills that helped me greatly advance my career.
Most importantly, I developed confidence in my ability as a programmer. I had created my own application and figured out how to sell it online—and I did it all on my own.
That’s the power of a side project: you learn new skills, practice your existing skills, are challenged in new ways and develop confidence in your abilities.
One six-month side project has the potential to gain you the experience it might take you years to get just working your 9-to-5.
Not only that, but each side project is like a small lottery ticket. Each one has the chance of having a large amount of economic success, especially as you grow and learn. That’s why I advise all software developers who really want to advance their careers to always be working on some kind of a side project.
Picking a Side Project
So maybe I’ve convinced you that you should start a side project, but you might be wondering what kind or how to pick one.
It’s easy to get stuck trying to figure out that perfect idea and end up never doing anything.
Remember how we talked about the difference between a dream and a goal? To make something a goal, it needs to be concrete. You need to figure out what you are going to do and start doing it. I’d highly advise you to start out with something very small.
Start with a very simple side project that you know you can easily complete. Perhaps even something that will only take you a few weeks or a month at the most. The reason why you should pick something small first is that most people get pretty good at lying to themselves. They get so used to breaking their own promises and commitments to themselves that they lose the ability to trust themselves. And they break their promises because they try to tackle projects or life changes that are too large and too much of a commitment. They get in over their head, which causes them to fail or give up, and then they create this pattern where they continuously let themselves down because they’ve lost the ability to trust themselves.
Maybe you are trapped in that pattern right now. I’ve certainly been at times in my life.
The best way to break out of this cycle is to make small commitments and follow through with them (we’ll talk more about the power of being a finisher a little later in this post).
So, start with a very small, non-ambitious side project. Something you know you can do and can complete.
In fact, I usually advise most software developers to make their first side project a clone of something that already exists.
When I was first learning game programming, I didn’t try to create the masterpiece of a game I had in my mind that would take three years to build. Instead, I made a very simple Pong clone.
Don’t worry about copying; it’s not the same as plagiarizing.
In case you haven’t noticed, the app store is full of games and apps that are pretty much copies of other ones. They just aren’t exact copies, and your copy won’t be, either.
Your project becomes much easier and has a much higher chance of success if you aren’t trying to design software and build it at the same time. Start by building software, and later, when you are more experienced with completing side projects and trust yourself more, you can work on designing something new and building it.
Once you’ve gotten a few of these smaller and easier side projects done, and have cemented your trust in yourself, it might be time to pick something more ambitious, but I would still limit my ambitions to a project which can be completed, or at least the first version shipped, in under three months.
You can always create future versions and build onto a side project over time––perhaps even make it your full-time gig, like I did––but you want to get it done and out there as soon as possible so you can gain the benefits from it, test out the idea, and not have it drag on for years.
Make the Side Project Serve at Least Two Purposes
I’m a big fan of multi-purposing.
Multitasking sucks, it’s difficult to do, and it ends up making you less productive overall (there are of course some exceptions to this).
But multi-purposing, on the other hand, is where it’s at. It’s the bee's knees.
What is multi-purposing, you ask? It’s exactly what it sounds like: you take one thing—a side project in this case—and you have it accomplish more than one purpose.
Take this book, for instance. I’m writing this book in many small, blog post-sized chapters: why? Well, it started out with me wanting to maintain a writing habit of writing at least 1,000 words a day. Rather than just write random stuff, I thought, hmm, I should write a book. But a book takes a long time, isn’t usually very profitable, and you don’t get any benefit until you finish it—(if you do) and actually sell it. So, I thought, how can I multi-purpose this even more?
Then I realized that I could take each chapter of the book and write it as a blog post on my blog first, then when I was done, I could make a book out of all the chapters. I also thought this would be a great way to increase email signups on my blog. So…
This “book side project”—and it is a side project since I’m only working on it an hour each day—serves the following purposes:
- Maintains the habit of writing 1,000 words a day.
- Results in a completed book.
- Generates additional company revenue when I sell the book.
- Creates blog content.
- Increases email sign ups.
In my mind, that’s pretty good.
I’m getting quite a few benefits out of writing this book and I’ve structured it in a way that fulfills multiple purposes.
But that’s not all. I can multi-purpose it further by:
- Selling an eBook version.
- Selling a print version.
- Selling an audio version.
- Making some videos and selling a premium packaged version with all the above.
- Using chapters to create YouTube content.
So when you pick a project to work on, even a small one, think about how you can multi-purpose that project in as many ways as possible.
Perhaps with your side project, you can combine multiple purposes together:
- Learn a new programming language.
- Learn a new framework.
- Practice an existing skill or master it.
- Create an app to solve some problem you have.
- Create an app to solve someone else’s problem.
- Create an additional income source.
- Use it for your interview portfolio.
- Use it for blog content.
- Use creating the app for video content.
- Use the project to mentor someone.
- Use the project to be mentored.
- Increase your self-discipline.
- Try out a new time-management technique.
- Make new friends.
- Learn about an industry you are interested in.
- Complete a college or university assignment.
Before you start coding away—or doing whatever you are doing—it’s important to plan out what you are going to do and define what the end goal is.
Oftentimes, projects aren’t completed because they are missing three essential things:
- A goal or “finished” criteria.
- A deadline.
- A system or set interval to work on the project.
You need all three of these things to be successful.
Start with defining your end goal.
What are the criteria you will use to say that the project is finished, or at least shippable?
Define the minimum feature set or criteria which will define the successful completion of your project.
The scope can increase later and you can create new projects to build new functionality into your existing projects, but make sure that you have an initial scope that will determine when this particular project is “done.”
Next, set a deadline.
Be aggressive, but not too aggressive.
Pick a deadline that you know you can accomplish, and give yourself a little buffer, but not too much. If you give yourself too much buffer, you’ll procrastinate. Having a deadline will create urgency and help you take yourself more seriously.
When I said I was going to complete this book by the end of this year, I had something to shoot for and commit to.
I couldn’t procrastinate and put things off because I had a deadline that not only held myself accountable but…
I also told the world.
Finally, you need a system and a schedule for actually working on the side project and making progress. I talk about how I use various systems, including a quota system, in my book Soft Skills: The Software Developer’s Life Manual, in the section on productivity.
So I won’t go into the details here, but make sure you have some kind of system in place that will do the following things:
- Clearly define how much time you will commit to spending on the project each day or week.
- Define when you will spend that time (put it on your calendar).
- Define the process you will use to track the work and what needs to be done.
Good systems are the key to success.
Every successful project I’ve ever undertaken had a system in place for getting it done.
Speaking of systems, let’s talk about one of the most important things you can do to actually complete and benefit from your side project: be consistent.
This means that you don’t work on the side project only when you feel like it because there will be plenty of times you don’t.
It means you create a schedule for working on the side project and, come hell or high water, you stick to that schedule.
Any measure of true success I have enjoyed in my life has come from consistency.
I’m consistent in the writing of this book, of writing blog posts, of making YouTube videos, of just about anything I want to accomplish in life.
It’s all those small things that add up. You build a wall by laying one perfect brick every single day.
Consistency is the key. If you want to finish your side project, learn to be consistent.
Be a Finisher
And you want to be a finisher… trust me. My life completely changed when I became a finisher.
It’s really easy to start things and not finish them. I’ve got a yellow belt in my closet, some old soccer cleats, a guitar, surfboard, and more. I call it the closest of broken dreams, and we all have one.
We’ve all started things that we didn’t see through to the end. We’ve all begun projects with the greatest of hopes, only to end up quitting after a few weeks or even days.
Stop doing that right now! Resolve today to become a finisher!
Decide that no matter the project, no matter how much you hate it, once you start something, you will finish it, even if it kills you.
It’s that attitude that shifted my life around. Now, I never start something unless I intend to finish it. And even if I don’t feel like finishing something, I do it anyway.
I would have never written my first book, shipped 55 Pluralsight courses, made multiple products, or done really much of anything if I had not decided one day to adopt this attitude for life.
That doesn’t mean every project I put my hands on turns to gold, but I’ll tell you what, they all get DONE.
Making Money From Your Side Project
Let’s wrap up this post by talking about how you—yes, you—can actually make some money on your side project.
First of all, I recommend that on any side project you undertake, you find some way to make money from it, even if it’s not a large amount. Charge 99 cents for it if you must, but put it in the app store. Make the app available for free, but put some ads in it. Make the web app have a trial and a paid version. At least put a donation button up, for goodness sake!
Try to come up with some way you are going to be able to monetize the project from the start.
If you are creating a blog—although, I suppose the same concept would apply to many endeavors—check out my short course on “10 Ways to Make Money From Your Blog,” for some ideas.
Now that I’ve said that, let’s be realistic.
You are not going to make a ton of money from your side project.
Yes, I know you think it’s awesome, and it probably is, but just don’t expect to make a large deal of money from it, at least not at first. In time, you may be able to make some good money, but at first, just try to figure out a way that you can make some kind of money.
If you work on multiple side projects, a little bit of money here and there can add up greatly over time through different income streams. The important thing is to think about this up front.
You are not Twitter or some ridiculously-funded startup who can try to get users and then worry about figuring out how to actually make money from them.
Alright, so hopefully you have a good idea by now of what to do and what not to do in terms of starting a side project.
And, hopefully, you are inspired to start one.
Like I said, I think all software developers should always have some side project going.
Just remember to start small, commit, and finish and you’ll be fine.
You always want to make sure you get a real benefit—and hopefully more than one—out of any side project you are going to devote your free time to.
Good luck and godspeed!
This post is a chapter from my book, The Complete Software Developer's Career Guide.
Published at DZone with permission of John Sonmez , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.