Item Changed Location Exception Design Pattern
Background:
On a previous trip to visit my son, I met a student at Arizona State University (Alex Wood). Alex is on a software development internship while he finishes his degree. Alex and I had a great conversation and I promised Alex I would keep him updated on technologies that I am working on. It is always fun to engage with young people that are eager to learn. Alex is going to be a rock star technologist.
The Business Problem:
Understanding the business question is always the most important step in creating a good technology solution. The question is, "When a person changes an item, where is that person located?" This question is very similar to a supply chain question UPS had in 2001 when they first launched e-Logistic Online Tools. The supply chain question was, "When inventory falls below a certain level, where is the product located in the supply chain?" Overtime I see business questions or problems in different industries that can be solved using the same design pattern. The key is to abstract the nouns in the business question with generic words like "Entities" or "Items".
The abstracted business question is, "When an Item changes, what is the location of the Entities related to changed Item?" Below is a good design pattern that solves this business question regardless of the industry. You can replace "Item" or "Entity" with any industry specific noun.
Item Changed Location Exception Design Pattern:
The "Item Changed Location Exception Pattern" is ideal for the business question described above.
The Importance on Product Agnostic:
This concept of product agnostic architecture and design was forced on me very early in my career. When I first became a Java Architect for Encore Development back in 1999. My Chief Architect specialized in the Microsoft technology stack. As a matter of fact, I was the only Java Architect in the company. Although I was the Java Architect, all of my designs had to be approved by the Chief Architect (a Microsoft technologist) before getting proposed to our clients.
Recommended by LinkedIn
Any diagrams or documents that included:
Would have be to corrected with words like:
The conflict of having all my clients operating Java shops but having my design recommendations approved by a Microsoft slanted Chief Architect forced the separation of architecture and design from product selection. Although I benefited in the long run, the Microsoft Architects used words like IIS, MS SQLServer and MSMQ all the time. Since the Chief Architect was absolutely brilliant, I never called him out on the discrepancy of my reviews...(lol)
I could write all day about companies that have asked me to architect or design a solution and the first question they ask is..."How should we use bla, bla, bla product?"
Closing:
Many design patterns can be abstracted and applied to different industries if you look beyond the nouns. After 20 years my most impactful read remains:
Products, languages and tools will come and go but good design patterns will live on.
Alex, If you find the opportunity to use this pattern in your career, remember to send me a message.
Thank you so much Willie! I will look into this.