I have these great ideas. I see something on Hacker News like the 7 minute workout, and I think "I should do an app for that, with little diagrams and a timer", and then I do nothing. I just can't get in front of a computer in the evening and code any more. Then I see that someone else did it already, and I get all knotted up inside. That could have been me, had I actually done something.
But even when I know I want to, I can't do it. The knot inside me inarticulately roars at me, and I walk away. I do something else instead. Something which doesn't create anything. I consume. I read. I play games. I read Hacker News on my iPad. I watch TV.
If by some good fortune I manage to sit at the computer, I find that I have achieved nothing. I'll have thought "I'll store the data in a database", and then tried to download and install mysql or mongodb, or postgresql, which I don't really know how to use, and I think "I'll write it in python", or "I'll write it in Cocoa for iOS" which again, I don't really know how to use.
I need to learn some of these things, but all I want is to get something finished, these things hold me up on things that I know should be almost trivially easy. I've been a Windows programmer for nearly 20 years, but I desperately want to be good on the Mac.
I know that if I just sit down for a few hours a day, these things will melt away as I work on them, but I just can't get started.
But I can't start. I wish I could. I organise days when I know I'll have no distractions, and then I squander them on worthless nothings.
Why can't I start? Any ideas? I have none.
But lately, within 3 weeks, I popped up my first android application on the store; without any prior knowledge on database, webscrapping or anything else I needed to build the app.
The difference? The users. A friend of mine called me saying : Hey, I do that every morning, and the current way of doing it is a pain. I am sure you can do something for me.
And magically enough, I got motivated, working my arse off to get the first version finished. Since it is on the market, I got 60 recurring users and growing. And this keeps me motivated. I put hours on the project, just because I get feedback.
So the conclusion: Do something that someone asked you to. Get your users first, start working afterwards. Don't be alone.
If you don't have users, then join a project that has already started, in order to code with someone and get some interaction.
I think that for a good 90% of us, what keeps up working is the passion for solving problems others have.
Hope this helps :)