I think the biggest lesson I've learned is to trust your instincts.
The most important single aspect of software development is to be clear about what you are trying to build.