I enjoy the idea of keeping failure cheap.
So, this means I'm always working with a minimally viable solution. A skeleton becomes slowly fleshed out. A project starts with the biggest assumptions and being cleared to reduce the "cost" if the project fails.
It tends to work really well for iterative projects.