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[4]
Posted by Shawn Kendall on July 30, 2005 at 01:25 PM EDT #
Back in the early 1980s, Dave Clark (then at MIT, I think) wrote a great paper on protocol implementation entitled "Layering considered harmful". I followed his ideas in the TCP/IP implementation for PC-NFS, and cited his paper in at least one conference paper. I got a lot of stick for this. And then Sun and AT&T conspired to put the abomination called streams into SVR4, and everybody belatedly recognized the problem. It's taken years to get the last vestiges of streams out of Solaris. It was the classic example of "just one more level of indirection".
Posted by Geoff Arnold on July 30, 2005 at 08:36 PM EDT #
Posted by Shawn Kendall on July 30, 2005 at 09:55 PM EDT #
Not only do they hide the problem, but actually improve the process of solving high-level problems more efficiently. However, most of the time the really good patterns for indirection (in say code, math, philosophy...) are well mapped and creating
Posted by Sikis on June 09, 2009 at 07:35 PM EDT #