Below is the talk I gave at the PhillyDotNet 2013.2 Code Camp. Since I did some live-coding; the code didn't end up as clean as I planned. Instead, please reference the tutorial from the ASP.NET site, here.
Software design patterns and practices are great reusable solutions to common problems. Although, at the end of the day they are merely templates for us to mold and use... no one would argue that they truly do help us ship code out the door.
That said, one thing I despise is our insistence to come up with complex/cool/currently unused names for patterns and practices. The name sometimes imply what that pattern means, like Singleton, but other-times, it is a crap-shoot, like the Flyweight pattern. Patterns like Flyweight are just hard to understand -- all due to its name.
I'll help you out and I'll explain some of these 'hard to understand due to it's name' patterns.
- Flyweight - 'Cache and share your bits'.
- Multiton - 'Like a singleton, except you can have two.'
- Composite - 'A collection that acts as if it was one'
- Facade - 'Hide your complex stuff under the rug and create an easier to use object'
- Proxy - 'A middleman'
- Balking - 'If your object is in it's crazy state, don't execute that function'
- Builder - 'If your constructor is too damn difficult to construct, hire a contractor.'
- VProxy/Lazy - 'It will eventually get there'
- Domain-Driven-Design - 'An individual SDK for each domain' (I will get flak for that)
- Object/Thread Pool - 'Just like a community pool, we all share the same water when we get wet, just don't pee in the pool'
- MDP - 'Group chat for objects'
- Servant - 'The object that is actually doing the work for the master'
- Observer - 'Gossiping neighbor'
That is the wallpaper currently adoring my screens. It is isn't explicit because of the use of the word 'fuck', but because it distills the idea of sometimes you just need to stop the meetings and just code. Stand-up meetings are sometimes bastardized to create a 'lets all tell management/stakeholders where we are at' and take longer than the expected time-box of 5-15 minutes. This wasn't and isn't there purpose. The purpose of an Agile stand-up meeting is to simply coordinate with your team, help each other out if needed, then get back to cooking up some sweet code.
If your stand-up time is hijacked by stakeholders or management, maybe you just need to be explicit and tell them that you need to back to fucking coding.