Mirko Novakovic gives ”10 Application Performance Tuning Tips”. I like the first two tips the best:
1. Define the requirements
2. Measure don’t guess
I’m regularly shocked how casual many developers are about these two tips. Many developers start to write software without considering what exactly they are trying to achieve. But without requirements you cannot check, if your software is correct; as Mirko points out for performance requirements:
How do you measure “fast”? Is 8 second fast? Or 1 second?
The same holds for premature optimization lacking a sophisticated analysis. In this sense sophisticated does not mean running your software with some sample data and a profiler on your development machine. It means monitoring your software in production use over time. That is where you will find the real bottlenecks.