Patterns
Coding patterns—such as command, adapter, bridge, etc.—are now well-established in the programming community. Patterns have also been extended into the architectural area: client/server proxy, pipe and filter, and so on. Adoption of these and other patterns should help to solve recurring architectural design problems in the same way that coding patterns have done for programmers.
The success of programming patterns is one good reason for adopting architectural variants. In fact, there may be scope for crossover, because standard patterns such as the adapter provide a good means of isolating code from technology-specific APIs. If the technology is separated from the application via the adapter pattern, this is a good example for architecture-based development. In this context, patterns represent a continuum of development effort stretching from architecture to design and coding.
In my opinion, programmers simply can't know too much about patterns. Patterns can massively reduce development effort—in effect, giving us free, fully functional algorithms. We can expect to see more about patterns in the architectural arena.