Quick note: I'm creating a brand new community for developers focusing on building programming skills through a welcoming online collaboration environment. We need developers like you so consider joining us!
The importance of side projects
Outside of day to day jobs developers are often known for having projects on the side. This is common because working on side projects is a good way for developers to accelerate growth of their existing skills or expand into other areas of interest.
However, developers are also known for abandoning such projects and never seeing them through to completion. The reason why developers fail to complete side projects is down to several factors.
Since personal side projects are optional, some developers will not take it as seriously as their day to day jobs. Due to the non-urgent nature of the task, they are also less likely to set up the proper measures in place for the project to succeed.
When interviewing for development jobs, it’s not uncommon to be asked if you’ve completed any side projects. Having a GitHub profile is also expected in many cases and potential employers may ask to see your profile.
While I don’t believe it’s absolutely essential for everyone to be working on side projects all the time, working on a personal project will help to enhance your skills in numerous ways. It also provides a great opportunity to explore fields of programming you have a personal interest in. Not to mention, it’s also fun to develop a project from the ground up on an idea you came up with!
Let’s address some typical reasons why developers fail to complete side projects. If you’ve tried a side project before, you’re probably guilty of at least one, if not all of these reasons. Have these points in mind the next time you’re starting your next side project and avoid falling for them.
1. Not having a good enough motivation
If anyone decides to work on a project in their spare time it’s probably something that at least interests them. For programmers, the idea of working on a side project can come up for several reasons.
Perhaps your reason is to grow a portfolio of projects to showcase to potential employers. Or you might want to use a project to develop an application that you know will be useful for others.
What you don’t want your motivation to be is something that appears forced on you.
If you don’t have a good enough reason to be working on the side project, you’ll likely lose motivation and give up on it early. Ask yourself the following questions to determine if you have a good enough reason to be spending time on a side project:
- Are you working on this project because it’s something you’re genuinely interested in?
- Will you be working with a technology that excites you?
- Are you keen to see the end results?
- Will you be learning skills that will benefit you in the future?
If your reasons are genuine, you’re more likely to stay motivated throughout the project and won’t give up easily!
2. Lack of planning
So you’re motivated to kick off this project. You’re excited and just want to start writing code and seeing some results! But slow down a bit…
First, do you have a plan for your project? Like the old saying failing to plan is planning to fail.
Planning is critical if you want your project to be completed successfully and to be something that will turn out useful for yourself or others.
Your plan doesn’t have to be anything too complex either. A simple plan detailing the goal of the project, milestones and dates to achieve those milestones can be drawn up easily. This means you can at least start off with a basic plan that you can refer back to throughout the development of the project.
It’s also advisable your plan goes further into the details of tasks that need to be completed. This can include research due to be carried out, how you want to structure your project, list of tools and resources you’ll need, testing plans and so on.
It’s your project, so it can be as detailed as you want it to be.
I personally like to use Trello for organising my projects. Trello is an online planning and organisation tool that uses a concept similar to using sticky notes on white boards as a way to layout your information.
This can be used to detail stages of your projects, plan out a checklist of tasks and to keep all information relating to your project in an easily accessible location.
Whatever method you use for planning, just make sure you do actually have a plan before you kick off the development work of your project.
3. Over-Engineering
Over-engineering refers to scaling an idea beyond its original scope to the point where it becomes a lot more complex and difficult to complete. A shortcoming that many developers will struggle to avoid!
Your side project idea may start off with a simple concept, straightforward design, nothing overly complex. Then over time as you plan it out more, the project evolves in complexity.
You just can’t stop yourself coming up with new features and functionality that will make the project even more awesome than you originally planned!
While it’s very common to get carried away with our ideas, it’s important to keep things under control or your project will end up incomplete.
As discussed in the previous point, planning out your project is essential to have an idea of what you want to accomplish, your key milestones and dates to achieve them by. Naturally, over time you’ll want to evolve these ideas. However, instead of constantly changing your original plan, the suggestion is to create a separate list reserved for future functionalities or “Nice to haves”.
The idea is to keep your original project plan as simple as possible so you stick to the main goal of the project. In project management theory, this is equivalent to having a Minimum Viable Product (MVP). An MVP is a product that has just the minimum features needed for it to accomplish its basic purpose.
Defining an MVP is more difficult for a personal side project. After all, it’s your project and no one is pushing you to complete it (most of the time). However, having a list of features that defines your minimum requirements and treating new ideas as extras on a separate list is a good way to prevent over-engineering.
Following this advice will prevent your growing plans affecting the outcome of your side project. If the functionality and features of your project continue to evolve indefinitely, you’ll never complete it. However, you can always go back and enhance it when its basic functionality is complete.
Over-engineering can be more dangerous than you think to the outcome of your project. It’s a very common reason why developers fail to complete side projects and not have anything to show for the efforts they put into it.
4. Stopping at obstacles
Completing a project from start to finish takes time, effort and dedication. Along the way, you’ll likely face obstacles that slow you down or halt your progress.
What you don’t want to do is give up when this happens.
Sure, it might be easy to make excuses like "well it’s only a side project anyway" and throw in the towel when it gets tough. But where’s your original motivation?? Again, point 1 of having a good enough motivation plays a major role when you do face obstacles. Without the motivation, you’ll likely give up when things get tough.
Giving up when a challenge arises is also not a good trait for developers, or anyone. An important attitude developers need is to persevere through difficult tasks, being patient and solving problems.
Don’t use the excuse that "it’s just a side project" to alter your attitude towards your own projects. If anything, coming across obstacles and taking the time to resolve them will help grow your problem solving skills.
So when you face obstacles, make sure you face them head on!
5. Abandoning the project for another one
This comic says it all:
We can all get distracted with shiny new project ideas and as a result abandon our current efforts. While some may have the intention of coming back to the project, it will likely lead to it becoming stale and remaining that way.
I believe the best way to combat the tendency to abandon projects for another is to simply be aware that doing so will likely cause all your projects, present and future, to fail. With this information, it’s now down to your willpower to not abandon your current projects.
Another way to combat this is to have a dedicated place to list your ideas for future projects as you come up with them. This will give you a way to begin planning out your future projects without actually executing the ideas yet.
It’s more of a mental exercise, to allow you to clear your mind from ideas for projects by writing them down or even beginning to plan it out. Although you might be tempted to start on the new idea right away, you can just document them for now and use your notes later to kick start the new project when you’ve completed your current one.
So the advice is, don’t start a new project till you’ve completed a current project. Otherwise, you will have a series of incomplete and failed projects.
Conclusion
Developers who enjoy coding in their spare time often take on side projects. However, it’s a common scenario that many of these side projects will fail with nothing to show for in the end.
The next time you’re starting a project, remember these reasons why developers may fail to complete side projects! By the way, don't feel pressured to complete a side project if it just isn't working out. Sometimes it's not always feasible to continue :)
Are you a developer who is guilty of not completing your side projects? Have you noticed any other major reasons why developers fail to complete side projects? Leave a comment below.
If you found this helpful check out more posts on developer tips and coding productivity on my blog :)
Top comments (7)
Guilty, on all five counts.
I plead the fifth.
Really helpful, the point about having a minimum viable product and don't keep implementing every feature that comes to your head is what I wanted to hear.
I've been struggling to finish a side project for weeks now only because I keep building my nice-to-haves features and I'm like "this project will never finish".
I struggle with this the most myself 😆
That's a good point! You wouldn't want to force yourself to complete a project that eventually you realise for one reason or another, might not be worth completing. I guess as long as you put in the right amount of effort on it and don't abandon it because of being distracted or 'lazy' reasons.
Great article
Thanks :)
Great post! 4 and 5 hit close to home :)