Architecture Pattern Language

Inspired by “A Pattern Language” by … and Principles by Ray Dalio 

There are patterns at lead to all Architecture.  

Architecture in nature, and by man.  

When we build homes and cities, there are patterns that we follow to lead to comfortable flow states for people in those environments.  

There are very similar pattern rules that apply in computer Architecture 

Spaces are not defined in the same ways, but flows of electrons are very similar to humans.  

We all need access and freedom. 

Allow open direct communications when possible.  

  • Point to point streaming when no one else needs the data, and when it does not need to be stored long term 
  • Secure the connection, not the transaction 
  • Notify the receiver only when you have sent enough information for them to act 

Focus on your task at hand 

  • Fine grain task swapping only when the grains are large 
  • Build dedicated task blocks whenever you can.  
    • This is more often than you will first think 
    • But not all the time 
    • Make them small and efficient, but worth sending data to 
     

Know your neighbors 

  • If you are not often communicating with a neighbor, you should not physically be close to them 
  • Plan for the flow of information through the system 

Speak the same language 

  • Define a programming model and stick with it 
  • Discipline here will save your SW team and yourself time later  

Avoid Technical Debt 

  • Putting off decisions or short sighted Architecture leads to Technical Debt where things will cost more later than they will cost now. 

Don’t be afraid to move forward 

  • Mistakes are natural and we will learn from them all  
  • If you are unsure, and the cost function of being wrong will delay the program more than the resource cost of dual path, then build both paths. Do the analysis.  
  • Have a decision process, stick to it, document it, then move on. 
  • Do not re-open old decisions unless there is new information, new opinions and new people do not count. 
  • You don’t have to wait for a decision to move forward, if there is not enough information yet, then identify the work that needs to be done and track it. 

Know your stakeholders 

  • They may be different for each part of the Architecture 
  • Involve them in the process 
  • Get their signoff at each stage review 

Chaos and uncertainty is our world. Embrace it and thrive in it, or find a more suitable role. 

  • Not everyone is happy in this world, and that is ok, we need all people contributing where they fit. 
  • An Architect adds energy to the system to reduce Entropy, she does not fight the way of things. 

Invent solutions based on other disciplines.  

  • One day, the Matryoshka doll will be your inspiration, another it will be the tides.  
  • Architects are learning all the time to expand their breadth 

Engage the other disciplines 

  • Architects are the hub of the wheel, and must reach out and engage all disciplines 
  • Architects Talk, and talk a lot, to everyone.  
  • Communicate through spoken and written word.  

Never first accept the old way 

  • Make a conscious choice every time, for everything.  
  • It may be quick and informed, but never complacent.  
  • Every new problem needs to be addressed in it’s own way. 

Plan the town 

  • A town needs variety, but it needs agreed upon rules 
  • Each IP must have constraints, but be given freedom to perform it’s job. 
  • Compromises will be made, it is the higher level Architect’s job to understand and make constraints that guide these compromises.  
  • Do not leave this to the designer, they have too much on their plate already. 

Architects build constraints that bring shape to the world, Designers work within constraints to build beautiful final results.