logo
Published on developer.* Blogs (http://www.developerdotstar.com/community)

ABA: Always Be Abstracting

By Daniel Read
Created 2005-10-28 17:04

From Don Gray's post today about "single point requirements" [1]:

The take home lesson we learned, "Don't accept a single example for requirements that cover a class."

Don's story reminded me of a saying I like that is based on something said by Alec Baldwin's evil sales manager character Blake in the great David Mamet movie Glengarry Glen Ross [2] (which is also a play). During a tirade disguised as a pep talk to a slumping sales staff, Baldwin's Blake writes on a chalk board in big letters, A B C, and then yells, "Always Be Closing!"

My own variation on this advice: Always Be Abstracting--though I won't yell it out or try to humiliate anyone as Blake does. We must abstract, because our clients usually don't know how, and don't know how important it is. Abstraction always has a cost, though, and there's a point at which it becomes irresponsible to keep abstracting without an explicit indication from the person paying the bills that the abstraction is warranted.

There's a great term that I first encountered in Martin Fowler's book Refactoring: speculative generality (I often use the variation speculative generatization, but I think "generality" was the original coinage). It's so tempting to say "The software may need to do this someday" and go to work building a super extensible, infinitely morphable kitchen sink program. I point this out to acknowledge the humorous exaggeration in my use of the word "always." Always never means always.

Dan

RSS Feed [3]
[4]


Source URL:
http://www.developerdotstar.com/community/community/node/284