Good morning, and happy Sunday! Today in lieu of a rundown of the week's reading material, I thought I'd talk about software design patterns. Specifically, a few patterns that I've found indispensable which are not found in the book Design Patterns (aka the Gang of Four book).
Here's my list, capped at five as always to keep from becoming overwhelming:
- The Special Case pattern for handling, well, special cases. Documented in Patterns of Enterprise Application Architecture, but summarized here.
- Self-Evaluating Rule, by David West, author of Object Thinking.
- Value Object
- The Circuit Breaker pattern. Documented fully by Michael Nygard in Release It.
- The Whole Value pattern, as explained in Ward Cunningham's CHECKS Pattern Language.
These are a few of my favorite under-recognized patterns. What are yours?
And now, a word from our sponsor (me!)…
A few years ago, I spent the better part of a year doing nothing but pair-programming with people. Lots of different people. In two-hour remote pairing sessions, I tutored, provided testing pointers, gave architectural guidance, helped with refactorings, coached, and generally made myself as useful as possible. Judging by the number of repeat bookings, I think my pairing partners found it pretty worthwhile.
In the years since I took down my “consulting pair programmer” shingle, I've continued to receive requests for consultations. Lately I've also discovered an interesting new phenomenon: on a number of occasions, I've found myself on a call with a developer who was looking for guidance in less technical areas. For help in choosing the next career direction, or deciding what technology to focus on, or in how to make the jump from “just another coder” to “recognized expert”. Or, simply, for some encouragement and inspiration. I hesitate to use the word “coaching”, since I'm not a trained or certified coach. But there has been a distinct “coaching flavor” to this work.
At many times in my programming career I've felt blocked in one way or another, and was only after a conversation with a more-experienced peer that I got unstuck. I have a long way to go yet when it comes to acquiring judgement and wisdom, in programming and beyond. But I guess I've been around the block enough times now that for some folks, I'm able to be that more-experienced peer.
And so, I'm making it official: I'm re-opening my consulting door for Rubber Duck Sessions. You can book my time to talk about any topic you like. Anything from refactoring, to code review, to honing a tech talk. Heck, you can ask me about balancing a tech career with being a dad to six kids and I'll tell you what I know 🙂
I look forward to working with you on whatever's blocking you. Thanks as always for joining me for BRUNCH, and I'll see you next week!