Learning a new way of doing something is a very powerful tool – not only does it open our eyes to new perspectives, but it has the potential to improve on a previous approach we may have taken to solving a problem. The more we learn, the more perspectives we have in place to creating a solution. With this set of approaches that can then be used, we will generally pick the one that feels like the most suited approach – whilst maybe using pieces of the others as a small influence in our work. But when it comes to the pieces making up that core approach, it can be easy to not take on that same mindset – feeling like we need to follow them as a rule book rather than a set of collective guidelines.
When it comes to architectures, programming principles, testing – we are often faced with a collection of guidelines that can be easily portrayed as rules, sometimes following them for the sake of wholeness and social portrayal rather than practicality. An important thing is understanding why these rules exist and what purpose they serve – questioning the reason for each one and how they affect the bigger goal. Once you have that understanding and are aware of the needs for the current scenario, you can adapt your learnings to suit anything that you’re currently working on.
Let’s say we read a book about a new architectural approach, Architecture X. This approach has a lot of promising parts to it and is defined by a large collection of principles. When we come to working on our next project we could definitely use this new architecture – regardless of whether all of the details make sense to apply, we carry out the work following the book page by page. We do this because it’s a collective set of principles which we’ve portrayed as a set of rules, and if we don’t follow these rules then we’re doing it properly, are we? Instead, what we if bookmarked the pages from that book which made the most sense for our project – creating our own collection of guidelines for what is most suitable for the current scenario. This way we set aside doing some things because of principle, focusing only on what will bring us benefit in the current situation.
With this mindset we can gain a better understanding not only of the guidelines which we are following, but also of the whys and hows of the details within the book – helping to piece together the workings of the bigger picture. Taking the whole book as a collective can mean we tie all of those principles together, making them all become one concept. However, having the ability to pull things apart and create independent guidelines allows us to learn how these things can be used independently from the larger concept. This practice trains us to then be able to use these completely outside of this context, being able to pick from a scrapbook of independent guidelines and adapting them to our needs at the time, regardless of the source that they were originally tied to.
Whilst rules are often put in place to not only give guidance on how things could be done, in our minds they can also create a set of instructions as to how something should be done (even if not intended) – this has the ability to enforce a closed mindset when following them. Instead, if we take these instructions as how something could be done, we pave way for a much more pragmatic approach to our work. So next time you are working on something and are following a set of defined guidelines or rules, try to ask yourself, do I need to use this or is it outside of my goals?
By all means, break the rules, and break them beautifully, deliberately, and well.
Robert Bringhurst