Architecture
Architecture is expected to evolve throughout the project and most decisions will be best made by those close to the work.
There are often many different ways of building applications and there could be tradeoffs in selecting technologies, frameworks, and approaches. In addition, we often have constraints within our client environments that can alter our perspective or make some options not viable.
Collaborate
When you're tasked with a new project, it's worthwhile to ask the larger group for advice first. There may be frameworks or services that could make the solution more maintainable or engaging that you didn't even know existed.
Keep it light
You don't need to create a UML diagram or a process diagram to communicate the intention of a system. It can be as simple as a PowerPoint slide with boxes and arrows explaining how the system should fit together, something like a C4 Model, or a text file that concisely conveys the essential information. Only add more complexity if it's really necessary to communicate your idea.
Things that are important in a high-level architecture:
- what technologies are you using?
- how do they fit together?
- dependencies - which pieces depend on which other pieces?
- boundaries and cross-cutting concerns (authentication, authorization, transactions, logging)?
One way to validate whether a model makes sense is to evaluate it against user stories and imagine how their implementation would fit within your proposed architecture.
Include the client
Whenever your team has an idea on how something could be built (system or feature), it's very important to ensure the client is fully on board with the direction. Consider those that will need to deploy or maintain your solution going forward:
- Are you adding work or removing work?
- Are there services or libraries that will need to be purchased?
- Does your design work within their company policies on data storage, access, preferred technology vendors, etc.?
It can't be understated how important it is that the client's IT staff are fully on board with your direction before you proceed.