Saturday July 30, 2005
How The Game Is Played
My least favorite quote
You can tell a lot about how an organization goes about its business from the quotes it tends to throw about. Quotes are the most visible of memes after all. There is a quote that gets tossed around Sun often that drives me nuts.
Any software problem can be solved by adding another layer of indirection.
Steven M. Bellovin
With all due respect to Mr. Bellovin, I feel it's important to add a Kesselman Correction:
The two software problems that can never be solved by adding another layer of indirection are that of providing adequate performance or minimal resource usage.
Jeff Kesselman
This makes such solutions fairly useless in my domain space, the world of games, where performance is everything. In general it is my impression that here at Sun we rarely set performance as one of our design goals. I have in fact run into fairly stiff resistance the few times I have suggested we put absolute performance requirements into an API definition.
My observation has been that this generally leads to inadaquately performing systems that then have to have the heck tuned out of them in order to actually reach a usable state for any time or resource critical application.
I understand the reluctance. Designing for performance is hard. It drasticly complicates reaching other more function oriented goals and features. But if we are going to really make a name for ourselves in software we must, as another famous quote says, do the hard thing.
There's another phrase that I grew up with that can describe adding a third layer of indirection. And that is adding a bag on a hack on a kludge. A good, forward thinking, efficient design, uses as many layers of indirection as absolutely necessary and no more.
There's another word for that too. The word is elegance.
Posted at 07:47AM Jul 30, 2005 by gameguy in Java | Comments[5]