My life right now is trying to get people to understand this:
@khalladay I tell my team that "optimization" has a very specific meaning: to improve upon that which already exists. You cannot, by this definition, optimize something that has not yet been written.
This has two important implications: measure everything, and *planning for good performance is OK* provided you measure to verify your assumptions.
Optimization is only premature with a lack of data. Algorithm design cannot possibly be premature if you actually know the algorithm's properties!