- A single large solution may be too specific to the circumstance and impossible to reuse.
- A complex solution may be hard to describe in a single pattern. A "divide and conquer" approach may be necessary to make the solution tractable.
- Factoring the solution into a set of reusable steps can be very difficult. Once factored, the resulting pieces may depend on one another to make any sense.
- Other pattern languages may want to refer to parts of the solution; they require some sort of "handle" for each of the parts to be referenced.
- Capture each problem/solution pair as a pattern within a larger pattern language.
- Each pattern should solve a specific problem within the shared context of the language. Strive to ensure that each pattern could conceivably be used alone or with a limited number of patterns from the language.