• Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint
Share this Page URL



  1. (page ix) Before I started writing this book, the only book I found that talked about how writers' workshops ran was Pat Schneider, The Writer as an Artist: A New Approach to Writing Alone and with Others. Later I found some other books that could be useful in understanding how the writers' workshop works. See note 27.

  1. (page xiv) For the benefit of creative writers, I will briefly explain patterns. A pattern, very generally, is a statement of a particularly effective way to resolve a (design) problem in the construction or design of buildings or software. The pattern suggests concrete actions for building part of the artifact. It's called a pattern because the things constructed to effect the fix are readily observed in many excellent artifacts in which the stated problem or problems needed to be addressed. A pattern is also the written description of the physical configuration, the problem it solves, and the forces and considerations that go into the choice to build this configuration over others. A pattern, then, is both something in the world—the configuration found in excellent artifacts—and a literary form, that is, the written description of the physical configuration and why it should be built.

    The literary form of a pattern has both a problem and solution statement. The problem and solution statements occur in a context, which is roughly the state of design or construction. A pattern language is a set of patterns that combine to design or construct a particular category of things. In a pattern language, each pattern's context is the set of patterns from the language already having been applied.

    Here is a pattern taken from A Pattern Language by the architect Christopher Alexander:

    179. Alcoves

    ...many large rooms are not complete unless they have smaller rooms and alcoves opening off them....

    No homogeneous room, of homogeneous height, can serve a group of people well. To give a group a chance to be together, as a group, a room must also give them the chance to be alone, in one's and two's in the same space.

    This problem is felt most acutely in the common rooms of a house—the kitchen, the family room, the living room. In fact, it is so critical there, that the house can drive the family apart when it remains unsolved....

    In modern life, the main function of a family is emotional; it is a source of security and love. But these qualities will only come into existence if the members of the house are physically able to be together as a family.

    This is often difficult. The various members of the family come and go at different times of day; even when they are in the house, each has his own private interests.... In many houses, these interests force people to go off to their own rooms, away from the family. This happens for two reasons. First, in a normal family room, one person can easily be disturbed by what the others are doing.... Second, the family room does not usually have any space where people can leave things and not have them disturbed....

    To solve the problem, there must be some way in which the members of the family can be together, even when they are doing different things.


    Make small places at the edge of any common room, usually no more than 6 feet wide and 3 to 6 feet deep and possibly much smaller. These alcoves should be large enough for two people to sit, chat, or play and sometimes large enough to contain a desk or table.

    Give the alcove a ceiling which is markedly lower than the ceiling height in the main room....

    The following is a software pattern I wrote, aimed at the design of the internal coding of a program, particularly with the design of local variable architecture. I chose it for its simplicity.

    Pattern: Local Variables Re-assigned above Their Uses

    this pattern helps complete the Simply Understood Code pattern [not included]. This pattern helps solve the problem of making code understandable when you need to re-assign the values of variables.

    Sometimes a piece of code needs to re-assign local variables more than once. If this is done without paying attention to a person reading the code who is unfamiliar with it, misunderstandings are easy.

    Sometimes a piece of code requires that a local variable have its value changed several times, perhaps in a loop. When this happens the problem is how to know which use or reference of the variable goes with which assignment. In cases of complex control structure, there might be no way to have each reference or use correspond to exactly one assignment.

    People normally read code from top to bottom, so their inclination is to recall the assignment that is textually above the reference or use.

    Of course, if the code is complex, it will be difficult to understand and the code chunk ought to be well-documented other ways than by making the code plain, though it rarely hurts to do both.


    A local variable that must be re-assigned should be re-assigned in a place that is textually above where it is used or referenced.

    Sometimes a local variable that is re-assigned could be turned into two variables where each assignment is actually a definition of a local variable, one inside the scope of the other. This is preferable to assigning twice.



Not a subscriber?

Start A Free Trial

  • Creative Edge
  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • PrintPrint