Hi Suresh,

You raise an interesting point but my experience indicates that things tends to go the other way. Donald Knuth's quote about premature optimization is appropriate here. Interfaces create legacies. Most of the time, you can improve performance without breaking everything that uses the product. Change the interface, and you risk making users re-learn the new interface or re-tool things that use it (such as a programming API). I think it's more important to get the interface right earlier on than the efficiency.

In a future article, I'll talk more about this but there's a lot that can be done to improve performance without changing the interface. The user mostly cares about what is being done, not how your program or device does it. Those are the engineer's problems and the better interface is the one that can hide all the little bumps and ugly bits in the implementation. It's extra work but I think the mindset shouldn't be that it's a problem so much as a challenge.