I'm a designer (and front end coder) trying to learn php & javascript.
http://Affordabl.es - 7 Days - 1and1 shared linux hosting + Wordpress + I customized the crap out of a free wordpress theme = Catalog of affordable design products with affiliate links to Amazon (has made $0 so far)
http://ResidentEvilRadio.com - 4 days - 1and1 shared linux hosting + sound manager 2 mp3 player script from codecanyon.net = jukebox of my favorite songs from my favorite game franchise.
http://TimeForZen.com - 2 weeks? (worked on and off) - sound manager 2 api + hand coded pages = meditation and nature sounds website.
Not a single one of these projects are successful. But they help you gain experience and can land you a job. Anyone applying for a gig can put "experienced in google maps api" on their resume, but putting a link to a fully working site using the Google Maps API bumps you to the front of the line.
1) Do not underestimate the value of little projects. You'll be amazed at how much experience and re-usable code they produce.
2) It's hard to put a time-frame on how long it takes because the requirements change often due to restrictions and dropped and added features. This is true for those who aren't experienced coders. We end up having to scale back projects to get them done.
3) Play perfectionist and you'll never get your projects done. It's better to cut features, finish early, and use the "ego high" of getting a project done to go back and add features. The longer you keep a project in development and unlaunched the worse it gets and the harder it is to finish. Cut half your features if you need to. Just launch quickly. Also, after launching you'll be amazed at how many "features" were not needed.