How To Work

We make assumptions about HowToWork which color everything we do.

The construction of software is highly creative work, like that of the poet, that also has a product of high utility like that of the civil engineer. For utility we insist that work continually focus on a "customer" whos computer problems are worth solving. But for creativity, we demand that there be a boundary beyond which the customer's whim cannot reach. The committments that motivate action every day then come from two sources: the customer and ourselves.

ExtremeProgramming speaks of developers making technical decisions and customers making business decisions. This is the sort of division we are thinking of. However, we'd like to include more groups than just these two. That requires we step back from the development process and consider what it means to work.

With the advent of corporate law we confer the right of property ownership on organizations. An organization can "manufacture" intellectual property such as software as a means of achieving some goal related (usually) to shareholder value. Corporate strategies are as varied as the distribution of assets and opportunities in the marketplace. In short, development is execution of organizational strategy.

Were software development a menial task then the execution of strategy could be top-down. But it isn't, so we must depend on the good will of intellegent people to understand and interpret strategy in the work they do every day. With this in mind let us consider the various people and/or roles that organizations associate with development.

  • Customers own the problem that the software will solve and remain willing to pay good money for that solution. The customer is often outside the organization and represented within by various groups such as product marketing.

  • Management allocates resources to the customer's problem hoping to reap the good money for the benefit of the organization and its stockholders (the other customer). Such an allocation is usually just one opportunity considered.

  • Development creates software over a period of time. As a product of thought, the software will exert a distorting influence over the reasoning of all those who work on it. ExtremeProgramming is a technique to stay free of software's distortion field by maintaining human contact with customers and wielding the power to overturn the software through refactoring.

  • Analysis and Test interpret the wants of the customer and the accomplishments of development in the context of the strategic opportunity recognized by management.

Coming soon: informal and formal communication between each role over time and the learning necessary for this to rise in abstraction with the piecemeal growth of a product.

Cf. ConversationalTestCreation


Last edited August 28, 2002
Return to WelcomeVisitors