Quoting Linus Torvalds:
"Nobody should start to undertake a
large project. You start with a small
trivial project, and you should never
expect it to get large. If you do,
you’ll just overdesign and generally
think it is more important than it
likely is at that stage. Or worse, you
might be scared away by the sheer size
of the work you envision. So start
small, and think about the details.
Don’t think about some big picture and
fancy design. If it doesn’t solve some
fairly immediate need, it’s almost
certainly over-designed. And don’t
expect people to jump in and help you.
That’s not how these things work. You
need to get something half-way useful
first, and then others will say “hey,
that almost works for me”, and they’ll
get involved in the project."
Basically, don't try to make the finished app all in one go. Implement just one feature, and complete that. Then start another feature, and so forth. Otherwise, you'll never get there.
I'd also add, "keep it clean" - if at any stage your code gets a little messy, refactor it before adding any more features. Don't accumulate a large development debt.