This seems so common sense now, but back in the 90′s it was exactly the opposite. The thought was that in order to make money you had to have control, and to have control meant it had to be done in a way that no competitor could access it or duplicate it at a lower cost. Now in this relatively enlightened age we recognize that the network is where the value is, a rich ecosystem (including competitors) is how revenue grows, and standards are how we create a network and an ecosystem. We compete on implementations, but we cooperate on standards.

So the corollary now is to use standards and off-the-shelf components whenever possible. Sure, they won’t be optimized for your purpose and may not do it exactly as you’d like and there may be some not-invented-here feelings, but you can’t afford to optimize everything. Given that there are enough computing resources available now (CPU cycles, storage, network bandwidth, etc.) you can let things be un-optimized. It is OK to waste some resources. That is what is new.

I just finished developing a large application with a team and we didn’t optimize anything. Then in our test cycle we did see some significant performance problems at a certain scale. Analysis identified that by optimizing how we stored one object class we could get rid of the performance problem. Everything else worked fine. So we got an entire product performing well by optimizing just one thing. Just one thing, and all it took was about 50 lines of code. Keeping everything else un-optimized keeps the complexity down, and the complexity is where the real cost is.