These design patterns remind me of Go proverbs -- high-level heuristics for better strategy, sometimes contradictory. Knowing them can be extremely helpful, but it's no guarantee that you can deploy them correctly. (Here's a good list of common go proverbs.)
Anyway, reading the original Design Patterns book, I've had three main reactions:
1. Data-centric software development is going to discover its own list of software design patterns.
2. There are patterns for research design, just like there are patterns for software design.
3. I already know most of the software patterns -- yay!*
Since I just can't sleep tonight, I figured I'd queue up a few blog posts talking about the first two. Look for those in a couple days.
*Given my very ad hoc background in software design, I've been pleasantly surprised to find that most of the software design patterns are already familiar. For example, python is already very good with iterators and decorators. And working with web frameworks has taught me a lot about factories. And many of the others are much less important in python because objects are dynamically typed. Anyway, it's nice to discover that I've picked a lot of this up by osmosis. (Pat self on the back.)