One of the biggest obstacles solo developers face is self-doubt. It is easy to look at the project you are working on and decide that nobody is ever going to actually need it, or you don't really care if it ever sees the light of day. There are a million points in the life of a project that can cause you to despair and wonder why you ever started working on it.
You run into a tough technical problem that seems un-solvable. You don't like the design. Someone looks confused when you try to describe the project to them. The amount of work needed to finish it seems impossible to surmount.
There are times when this self-doubt is valid. Looking at your work critically is important. Not every design is good, not every idea needs to be realized. You have to be extremely careful though. There is a fine line between looking critically at your work and tipping over into despair and dumping the project.
It is easier if you work for someone else or you are at a startup. Working with other people doesn't prevent self-doubt, but you generally aren't allowed to give in to it. For the sake of the team or your paycheck you have to push through the doubts and finish your part of the project. It is almost worth it to work at a larger company for a time just to get this kind of experience.
Having worked through self-doubt in the past is not always enough. What can a solo developer do to overcome self-doubt and push through to finish projects? Here is what has worked for me:
This works especially well in those situations where there is some technical problem making you wonder if what you are trying to do is even possible. Just keep at it. It will be incredibly frustrating. You will want to throw your mouse across the room (try to avoid people or pets), but if you stay with it you will find a solution. There is always a solution. Even if that solution is scaling the feature back slightly to get it working for now.
Take a Break:
When you are overwhelmed with self-doubt and the whole project looks like a waste of time, it's time to take a break. It can be very draining to be a solo developer. You have to make every decision yourself. You have to solve every technical problem on your own. This can easily drain all of your energy. If you have been working very hard for a long time and your work suddenly looks redundant; don't do anything. Don't make any decisions. Just step away from it completely and rest. The work will not seem pointless after a few days or even a week away.
Talk To a Friend:
Just talking about your doubts can help alleviate them. Things that seem like the end of the world in your head suddenly don't look all that apocalyptic when you say them out loud.
When things look bad don't be afraid to shut your computer down and walk away from your work for a short time. Sometimes even thirty minutes is enough to refresh your perspective. When you reach an important milestone celebrate it in some way. Go out for a coffee, spend some time browsing your favorite store.
Work On a Different Aspect:
If a certain area of your project looks hopeless try doing some work on an entirely different part of the project. This is always easy to do as a solo developer because the whole project is yours. Stuck on coding? Start fleshing out the documentation. Working on a project from a different point of view can help you to see the whole in a better light.
It's easy to see all the little faults in our own work. Don't let that stop you. Clean up what you can right now, keep plugging away at your project, and don't let self-doubt keep you from finishing.