One of the toughest things to battle once you reach a certain level of programming knowledge is the influx of ideas that will flow into you constantly, and unexpectedly. You'll be walking around carelessly one minute, just to be bombarded by possible app/website ideas the next. And they all sound amazing to you. And some of them very well could be, but you have about a dozen amazing ideas sitting on your desktop at home at this moment waiting to be completed.
every idea is amazing...at first
If your idea worked 100% as you defined it, and if a million users jumped on and used it, then yes, you're idea is incredible. And that is indeed possible, just not how you're currently imagining it. Sleep on every single idea and see if it still brings that sense of wonder the next day. Or the next week even. Give it time to settle in and picture it functioning across the globe. If it's still alive and kicking then, then you have a good idea.
So before you Create New Project for the 4th time this week, let's take a quick look at how to finish 1 single project first. And I'll also talk about what it means to have a finished project.
1. Save your ideas
Store all those new ideas somewhere. Whether in your photographic memory, if you have it, or on a notebook. Save all of your ideas. Some will be built, some won't. That's not up to anyone at the moment. But one day you'll be going through your "idea book" during a slow morning and you'll read one of your past ideas and realize that the time has come for it to come to fruition.
Nowadays, I like to jot my ideas down with pen and paper. There's something about the old fashioned way that makes the whole process more real, and not just a random note in a Google Doc.
The idea is there. Safety tucked away. Keep it there for now, and get back to work, whatever work is. The problem with new ideas, is that they bring some baggage with them. They bring this sense of mystery and wonder and potential. Except that all you have is a 1 line description that you wrote down somewhere.
app to track lost puppies :)
2. Choose a primary application
Whatever you're currently programming needs your attention. It's alive in a sense. The idea popped out of nothingness. The database schema got built. The mockups were drawn up. The design began to take shape. The last thing this project needs, is for you to leave it without vital organs to fend for itself. Focus your attention on your primary application. Look at it daily, look at its needs, and picture how it's going to work once it's out in the wild.
I tend to pick the project that's as close to life as possible currently. The one that I spent a solid month on while in the zone (and then abandoned). Dot the 'i's' and cross your 't's' and publish it. It's the only way that it can grow into itself.
3. If it's boring, don't do it
There are a few reasons as to why programmers enjoy jumping around many a project and never fully settling in one. One of the main ones, is boredom. Coming up with a design and an idea is exciting. The potential is there for something big. Watching it grown from a single line in notepad to a full blow project is exciting. But once the design is in place, we have to do the work. And this is where things begin to trail off.
My main tip here is, if it's boring to code, then don't do it. Avoid it. Build something else. Make it as interesting as you possibly can and don't worry about whether it's a waste of time or not. This will keep your projects alive and fresh, and more importantly fun. As soon as any project becomes boring, the energy gets sucked right out of it, and it becomes a negative thing.
4. Define 'finished'
And now for the curveball in this whole argument. No project is ever truly finished. There is not website alive today that is 100% in its totality. Most websites change daily in fact. The concept of finished is more of an instinct on your part. A feeling that your project is functional and ready for 1 user to run through it. So define what this point is. And cement it there. Don't add to it, don't subtract from it. Finished is when 'a', 'b' then 'c' can happen. Once you reach that criteria, whether in a week or in a month, then your project is ready for an audience.
So the only real way to finish a project, is to finish it. To decide what that means youself. And then it is finished. You could have projects sitting on your hard drive this very moment that are technically finished, you just never made the choice to make it so.
Some closing words
I have close to 100 projects unfinished sitting on my laptop currently. None of these ever became primary applications. Many are currently finished, probably. Many more are close to being finished. And many I will never look at again. But they are there at least. And I can choose where they go in the near future. So if you're the kind of programmer that creates new projects daily, then hopefully following these steps will help you along the way in releasing more of them into that which is the interwebs.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.