Most side or hobby projects tend to get left to gather dust after the first flurry of excited programming. I know this all too well and have started several projects before with good intention only to have them become forgotten and never finished.
Fortunately, I have been learning some techniques to prevent this from happening and to finish more often and faster. So here is a list of things that can help you complete all the little side projects you start.
#1 — Break the Main Problem into Little Sub-Problems
This is by far what has been most effective for me when working on a project. Many times we procrastinate on a hard problem because we aren’t sure how to approach it or continue on it. We get stuck mentally and just stop working on it altogether.
I have found that picking a small piece of the problem, figuring it out then repeating is super effective.
Keep a piece of paper and a pen or pencil near your computer. When you get stuck or it just seems hard to work, look at your problem and write down on your sheet of paper a small piece to figure out. Then just work on that smaller problem until it is solved.
For example on game #3 that I am working on right now, I have several smaller problems that the game has been broken down into.
- Draw player to screen
- Draw plants to screen
- Move player to a point that was touched or clicked
- Have player eat a plant if they collide
- Make player grow if enough plants have been eaten
- Make some enemies
- Have the enemies move randomly
- Have the enemies eat plants and grow
And there are a few more sub problems that I will be working on later this week.
#2 — Commit to a Scheduled Time to Work on the Project
This one is absolutely the main way to see a project through. Just make it part of your schedule.
The best part of the day to work on it is first thing after you get up. If you work on it before all the stuff you “have to do” gets in the way and wears you out, it is much more likely to get done.
If you do better work in the evening that is fine too, just make sure that the time is set aside and you remove distractions (phone notifications, tv, etc).
Since I am employed full time and that employment involves programming, doing more programming once I got home from a full day of work was difficult. So I actually started getting up an hour earlier every morning just to work on building these games a little each day.
And it works!
Cannot emphasize the schedule enough. Just do it.
#3 — Have a Good Reason to Do the Project in the First Place
If you don’t have a good reason to start the project it will probably wither and die.
The best thing you can do before you start any programming project (any project at all really) is to ask yourself what the end result should be.
The answer to that question should probably fall into 1 of 2 categories.
1. A Learning Project
It is often best to use a small project to learn a new programming language, framework, or technique. A project in this category does not have to be pretty. It is simply for you to learn how to do something.
However, you need to be specific about what you intend to learn.
I am using this one game a month challenge to learn several things including basic game creation techniques, rapid prototyping, and the Monkey-X programming language and framework.
2. A Project that Solves a Need
Often referred to as “scratching an itch”, it could be your own itch or someone else’s. The point is that it solves an unmet need.
Making software that will get used either by you or others on a regular basis is a good motivator for finishing a project. An added bonus is that you made the world a little bit better place to live.
#4 — Get Help When You Are Stuck
I recently read an interesting statement that there are no limit to resources, just to resourcefulness.
There are friends.
There are forums.
There are blogs.
There are books.
There are sites like Stack Overflow.
There are a lot of resources if you just look for them.
#5 — Have Some Accountability
There are a few different ways to do this and I will only cover a couple.
Blog About It
Obviously I am doing this and it definitely helps when it comes time to sit down to write if there is something that you have done this week to write about.
It also helps you track your progress and put down ideas to come back to later. Sort of a developer’s journal.
Find a Friend
One of the secrets of successful people is they form “Masterminds”. This is a fancy way of saying that they form a group to share ideas and keep each other accountable for what they say they will work on.
If you can, find a friend who is doing a side project and help keep each other accountable on a weekly basis.
To Summarize
Its almost midnight and the laptop is on its last 5% of battery so I will sum up.
- Break your problem up into manageable pieces.
- Schedule a time to work on your project and stick to it.
- Have a specific reason to be doing the project.
- When you are having difficulty, get help.
- Write about your project or find a friend to help you stay accountable.
If you are not doing these 5 things and you start doing them for new projects, you will find yourself finishing and enjoying your projects more.
Until next week.