Design patterns in real life
In programming there are so called design patterns, which are basically commonly repeated pieces of code that occur often enough that people thought it would be helpful to give them a name so that’s it’s easier to talk about them. One example is the iterator pattern, which is about an efficient method of traversing the elements of a container, whether they are an array, a hash table or something else. The builder pattern is used for building objects when we don’t know all their required parameters upfront.
Sometimes, if you don’t know about a pattern and you read code that uses it, it might seem strange. Why is this extra layer of abstraction here? Why is this API broken down into these pieces? After learning about the pattern, you might learn that the extra layer of abstraction is needed because the layer that’s below changes often. Or that the API is broken into those specific pieces because this makes it easy to cover more use cases in an efficient way.
As I’ve started diving head first into the world of running my own consulting business, I’m starting to learn about a whole other world of “design patterns”, unrelated to programming. And suddenly many things that I’ve seen before started to make sense.
My friend David has been bugging me to start a community for people passionate about machine learning in Oradea, where I live, for almost two years. For a long time I was thinking, why does he push so much for this? Well, after taking Seth Godin’s Freelancer Workshop, now I know that being the person who organizes a community is one of the best ways to make yourself known.
Another example is that I saw website offering a sort of business networking thing for a very high membership cost (or at least it seemed expensive at the time). Why would anyone do that? Then I learned about a thing called alchemy network 1 and how if it’s done well it can bring great value to it’s members.
All my friends who are freelancers charge by the hour. That’s what I thought was normal. But then I heard about Value based pricing by Jonathan Stark. A different pricing “design pattern”, which aligns the incentives of the client and of the service provider in a much better way. Let’s see if I can pull it off though.
Just like in programming, design patterns help us find the correct solution faster and communicate more efficiently. The more patterns you know, the faster you can recognize a situation and react better to it.
What are your favorite design patterns?