Design Patterns Flashcards!!!
This is definitely in the running for my dorkiest blog post yet: Design Patterns Flashcards!!! However, as dorky as they might be, these flashcards have really helped me master Design Patterns and keep each pattern's details readily accessible in the forefront of my mind.
"Design Patterns: Elements of Reusable Object Oriented Software" is a classic in software engineering and highly worthy of being so in my opinion. I'm a big fan of patterns as they are not only great ways to create well designed software, but are also excellent programmer-to-programmer communication, as I've mentioned before here.
As I've also mentioned in an earlier blog post, "Design Patterns" is a book I've studied on and off for years. I've known a lot of the patterns by memory for some time now, but it's easy to become rusty over time - especially the ones you don't often use - so I've been going back through some of the ones I'm hazy on.
Since then, I've found that making flashcards of each pattern, and quizzing myself - drawing them out on a whiteboard from memory - really helps keep them fresh in my mind. Here's an example of my flashcard for the Decorator pattern (click to enlarge):
Over the years, it's been easy for me to pick up the Design Patterns book and read about a pattern and quickly recall how it works. However, not having a pattern in the forefront of my mind, I've found in the past, I've sometimes missed opportunities to apply it.
With having them readily accessible in the forefront of my mind I've found I more easily recognize when to (and not to) apply a specific pattern when designing and developing software.