For twitterplaces, I’ve been using the Random Walk theory of software development. I pick up the software each day, and work on whatever feature I feel like. There’s no plan, no vision, no long term overarching story that directs my work.

I just go to a page that looks scruffier than the rest, then tidy it up. Or play with the data and find another interesting report, then put that in the site somewhere. Occasionally I may have to do a bit of architecture or scaling work, but i don’t plan for it - I just do it when required. And I’m always pushing to make the code easily understandable. A random walk doesn’t mean spaghetti code.

It just means, don’t beat on feature “a” until it’s done. Work on a,b,c and invent feature d. That way you won’t wear out and you won’t become uninspired.

Sure this won’t work for your on-spec, on deadline project, but for your own projects, or experimentation in user interface design, just random walk through your project.

You may be surprised where you end up.

A graphviz plot of adjacent commits on twitterplaces