Reading Constraints Before Designing
Good architecture starts by uncovering the real constraints, technical, organizational and regulatory, and separating them from preferences and assumptions.
Architects are often handed a problem statement and begin sketching boxes within minutes. The better habit is to spend the first hours on constraints. A design is a response to a set of limits; if you misread the limits, an elegant solution still fails.
Constraints, preferences and assumptions
People use these words interchangeably, but they behave differently:
- Constraint: a fixed limit you cannot change within the project. "Patient data must stay in the EU."
- Preference: something stakeholders want but could trade. "We would like to use Kubernetes."
- Assumption: a belief that has not been checked. "Traffic will be mostly reads."
Treating a preference as a constraint shrinks your option space for no reason. Treating an assumption as a constraint is worse, because you build on sand. Part of the architect's job is to convert assumptions into verified facts, or to label them clearly as risks.
Where constraints come from
Look systematically across categories rather than waiting to stumble on them:
| Category | Examples | |---|---| | Regulatory and legal | Data residency, retention periods, audit trails, accessibility | | Business | Launch date, budget ceiling, contract terms, pricing model | | Organizational | Team size and skills, on-call capacity, approval processes | | Technical | Existing systems, legacy protocols, network limits, device capability | | Operational | Required uptime, maintenance windows, support hours | | Quality targets | Latency, throughput, durability, recovery time and recovery point |
A fixed delivery date with a four-person team constrains the design more than any technology preference. If the team has no experience operating a message broker, a design relying on one has a hidden cost.
Ask questions that expose them
Good discovery questions are specific and often uncomfortable:
- What happens if this is down for an hour? A day?
- What is the worst data loss we can tolerate?
- Who has to approve changes to this system, and how long does that take?
- Which existing systems must we integrate with, and who owns them?
- What is not negotiable, and what is merely desired?
- What would make this project a failure in the eyes of the sponsor?
Answers frequently contradict each other. A requirement for five-nines availability alongside a modest budget needs a conversation, not a silent compromise.
Quantify the quality attributes
Vague qualities cannot drive design. Convert them into measurable scenarios:
Source: user in a mobile app on a 3G connection
Stimulus: requests the order history page
Response: first meaningful content displayed
Measure: within 2 seconds at the 95th percentile
A scenario like this makes trade-offs visible. If it requires a 2 second target on 3G, you must keep payloads small, which may rule out a heavy client-side framework. Without the scenario, the choice looks like taste.
Rank, then design for the top few
Constraints compete. Low latency conflicts with strong consistency across regions; speed of delivery conflicts with thorough compliance work. Ask stakeholders to rank the top three. Then evaluate options against those, and accept that lower-ranked qualities will be adequate rather than excellent.
Record the constraints in your decision record, with their source. When a constraint later changes, such as a regulation being relaxed or a vendor contract ending, you can see which decisions to revisit.
Revisit and challenge
Some constraints are stale. "We cannot use the cloud" may date from a policy since replaced. "That database cannot handle the load" may predate an upgrade. Periodically ask who set the constraint and whether the reason still holds. Challenge respectfully, with evidence, since removing one real constraint can open a much simpler design.
Key takeaways
- Separate constraints, preferences and assumptions before drawing any boxes.
- Search deliberately across regulatory, business, organizational, technical and operational categories.
- Turn vague quality goals into measurable scenarios.
- Have stakeholders rank competing qualities, and record constraints with their sources.
- Re-examine old constraints; some have quietly expired.