What do architects (designers of buildings), software developers, and thieves have in common? They each have a pattern language.
I was watching “Ocean’s Twelve” recently when I heard the dialogue in a way I hadn't before. If you haven't seen the movie or don't remember the scene where members of Ocean's crew were discussing how to do a job, the dialogue moves very quickly. Ideas are shared freely, shot down, and replaced by alternatives one after the other.
http://www.imdb.com/title/tt03...">Linus Caldwell: Um, all right, let's go over the list again. Ah, Swinging Priest?
Basher Tarr: Not enough people.
Linus Caldwell: Crazy Larry?
Turk Malloy: Not enough people.
Linus Caldwell: Soft shoulder?
Basher Tarr: Not enough people.
Linus Caldwell: Baker's dozen?
Basher Tarr: No woman
[pause]
Basher Tarr: and not enough people.
Turk Malloy: Hell in a Handbasket?
Linus Caldwell: [sigh] We can't train a cat that quickly
[pause]
Linus Caldwell: and...
Linus Caldwell, Basher Tarr, Turk Malloy: Not enough people.
Then it struck me: this is exactly the kind of conversation that’s possible when we have the shared language of design patterns in software.
I was bummed to learn, though, that the thieves' pattern language in the “Ocean’s ...” movies isn't real. Rather, it was made up by the director and producer for “Ocean’s Eleven” and used in later movies in the series. Nevertheless, what a fun example of pattern languages!
If you haven’t studied design patterns in a while (or ever) here are some great resources.
- Design Patterns: Elements of Reusable Object-Oriented Software
- Patterns of Enterprise Application Architecture
- Enterprise Integration Patterns
- Refactoring to Patterns
- Applying UML and Patterns
- The Timeless Way of Building
Keep an eye and/or ear open for other pattern languages. If you find any really interesting ones, let me know.