Establish & Elaborate Design

Object designs distribute responsibilities among instances with familial resemblance often captured in classes. We distinguish establishing new families from elaborating capabilities within existing families.

Kent and I were sufficiently practiced at object-oriented design that we could jump into coding after only a few minutes of conversation with a colleague seeking our help. We would show how the thus established objects could communicate then leave the exact elaboration up to our visitor. This continued for 15 designs over as many months.

In the three and a half years I later spent working with a half-dozen engineers on financial software I found I would often do the initial "cut" of a new feature and let the elaboration fall to who ever was available to work on the codebase we collectively owned.

As an independent consultant I helped skilled engineers through their first object designs by establishing classes and responsibilities with index cards. In a week long engagement I would be sure I left with running code ready to be elaborated.

This sort of guidance waned as projects moved away from smalltalk into coding systems that were less forgiving of exploration. Waned but not forgotten.

See Ad-Hoc Theory as Design for establishing tempo.

See Scripting Tempo Resumes with established design.