One of the main problems with performance-enhancing techniques is that they typically make a system more complicated. This can make a system harder to modify and it may also reduce your productivity. Therefore, although your system runs faster, your development is now slower.
We commonly find this complexity problem in enterprise software, although usually for different reasons. Typically, many unnecessary layers of abstraction are used, supposedly to keep the software flexible. Ironically, this actually makes it slower to add new features. This may seem counterintuitive, until you realize that simplicity makes change easier.
Note
There's a satirical enterprise edition of the popular programmer interview coding test FizzBuzz, which is available at fizzbuzz.enterprises . It's good inspiration for how not to do things.
If you don't need a feature yet, then it's often best to leave it out rather than building it just in case you might need it in the future. The more code you...