Starting something is much easier than finishing it. We've all been guilty of starting a new project only to shelve it when we've lost our initial momentum. If you're not careful, you can fall into a demotivating cycle where you replace one project with the other, starting many but never finishing one.
Every new project, you tell yourself that this is the one you'll finish. When you then don't, you start doubting yourself. You wonder if you should even start a new project in the first place. You lose confidence in yourself and stop taking on new projects as a result.
Finishing even a single project will do wonders for your confidence. Because you can finish your projects; you might just need to think differently about them. Here are 4 tips to help you finish your projects.
Think Small
We overestimate our abilities and underestimate the complexity of things. For example, a form on a website might seem like a simple thing to program, but it's often much more complex than you think.
That's why it's worth breaking down your project into very small pieces. Tasks should be simple and easy to do. If your project only has one or two tasks, your path to completing it is far too vague.
Small tasks give you a clear way to the finish line. Here are some examples of bad vs good tasks for adding a form to your contact page:
- ❌ build website
- ❌ add form to contact page
- ✅ figure out what fields you want to add
- ✅ find WordPress plugins that do the work for you
- ✅ research form UX best practices
- ✅ style your form
- ✅ test your form
The bad tasks are too big and too vague, while the good tasks are more specific and much smaller. When coming up with your tasks, it's better to err on the side of tasks that are too small than tasks that are so big you end up losing your motivation.
Define What Finished Means
Programming projects can go on indefinitely if you want them to. No website is ever really finished. No software program is ever fully flawless. No game is ever fully perfect (Cyberpunk 2077, anyone?).
That's why you need to be really clear about what a finished project looks like to you. This is true if you're doing a project for a client, in which case you and the client absolutely need to agree on the exact deliverables, but it's also true for your personal projects.
If you want to build a website, what will that website look like when it's finished? Does it need to be styled or is a basic HTML framework okay? Does it need to have copy or is lorem ipsum okay? Should it be good enough to add to your portfolio or is it a project to test your knowledge in JavaScript? If the latter, what do you want to test?
The more specific you can be about the end state of your project, the better. It'll make it easier to define tasks and you'll know when you've actually finished a project. Because there's usually something more you can do. The finish line of a project probably won't feel like a finish line. It'll feel like you've slowly come to a halt and ... that's it? Am I done?
When you've reached that point, you can either define a new finish line or end your project because you've reached the finish line you defined for it. Congrats, now go celebrate!
Be the User
It's easier to finish what you're building when you're building something you need. Amazon created AWS because they wanted something that would help them scale their ecommerce business. X-Teamer Rafal Wilinski created Dynobase because he was working on a client project that used DynamoDB and he wanted something that would overcome DynamoDB's terrible UI.
When you want to start a new project, figure out if it's something you would use in your everyday. That will pretty much cancel out notetaking apps or quiz apps, because there are already a gazillion of them out there, many of which are excellent too.
Many X-Teamers have small plugins that they've programmed themselves to take care of a particular need that they couldn't find a good, immediate solution for. These are great candidates for projects that you're more likely to finish, because they're tied to a specific, defined need.
Incentivize Yourself
The projects you're most likely to finish are those you do for a client in exchange for money. That's because your livelihood is on the line. Not only are you at risk of losing money if you don't finish the project, but you're at risk of losing your reputation too.
We don't finish personal projects because we don't have strong enough incentives for them. Our livelihood isn't on the line, nor is our reputation. When the going gets tough – and it will – what's there to lose if we quit along the way?
Think about the incentives that you can create that will push you forward. You can either create incentives that reward you when you finish a project or incentives that punish you when you don't. The latter is generally more effective, because losing something is much more painful than not gaining something.
So what will you do? Will you put money in an accountability app? Will you publicly announce your project? Will you buy a new game when you finish a project? Incentivize yourself!
Unfinished projects are part and parcel of being a developer. It's simply hard to finish a project. But you can turn the odds in your favor by:
- Breaking up your project into tiny tasks
- Defining what a finished project looks like
- Being the end-user of your project
- Incentivizing yourself properly
TABLE OF CONTENTS