Software becomes part of how a business makes promises. It accepts orders, calculates prices, controls access, moves information and tells people what to do next. The real test comes when a payment stalls, two customers want the last available slot or the person who understands the system is away.
AI can help produce code, explore options, explain unfamiliar systems and draft tests. Used well, it is a useful part of delivery. The business still needs people who can establish what matters, challenge assumptions, judge the evidence and take responsibility for the result. Those responsibilities remain whether software is written by a person, generated with AI or bought from a supplier.
Experienced technical judgement connects the implementation to the organisation around it. That includes recognising an undocumented exception, questioning a requirement that would make work harder and deciding when a simpler solution is sufficient. Sometimes the right intervention is a conversation or a change to the process before anyone builds anything.
A customer books the last available appointment. The screen confirms it, the payment is taken and a message arrives. It looks like one straightforward transaction. Inside the business, several separate systems may now need to agree on what has happened.
Another customer may have chosen the same time. The payment may have succeeded just as the connection dropped. Whether this becomes a minor interruption or a broken promise depends on decisions that were easy to overlook when everything appeared to work. Those decisions start with the people who understand the business.
Many connected decisions.
Is the slot still available?
Was the payment recorded?
What if a step fails?
Who can resolve it?
Before the first line of code
01 Business rules: what must always be true
TLDR: Reliable software starts with clear rules about what the business will allow, prevent and guarantee.Read the explanationClose the explanation
A booking cannot exceed available capacity. A refund needs to relate to a valid payment. A discount may require approval above a threshold. These rules define correct behaviour, including the conditions that must remain true when several people or systems act at once.
Discovering them requires time with the people doing the work. Written requirements often omit exceptions that staff handle through experience. AI can help organise those requirements and expose inconsistencies; business owners and technical practitioners need to resolve them together, before an assumption becomes an automated decision.
02 System boundaries: where one responsibility ends
TLDR: Clear boundaries make software easier to change without disturbing unrelated parts of the business.Read the explanationClose the explanation
Sales, billing and fulfilment share information, but each has different responsibilities. Software should make those responsibilities understandable, with clear ways for one area to request work from another. When everything depends on everything else, a modest change can require investigation across the whole system.
Good design chooses boundaries that fit the business and the team maintaining it. That may mean well-organised parts within one application. Splitting everything into separate services introduces coordination and operational costs that need a clear justification. Experienced judgement helps establish how much separation is useful now and what can wait.
03 Data ownership: which record can be trusted
TLDR: Each important business fact needs an agreed authoritative source and someone responsible for its accuracy.Read the explanationClose the explanation
A customer's address may appear in sales, finance and delivery systems. Without an agreed source for each purpose, one correction can be overwritten by an older copy elsewhere. “Customer data” may need several owners: finance can own billing details while operations owns delivery instructions.
The practical work is agreeing where changes begin, how they travel and how disagreements are resolved. This crosses departmental and supplier boundaries. Establishing ownership gives integrations something clear to enforce and gives staff a reliable way to correct information when it is wrong.
04 Configuration: when a test reaches the real business
TLDR: Settings and environments should allow safe testing without accidentally affecting real customers or business records.Read the explanationClose the explanation
Software behaves differently depending on its settings: which payment service it uses, where messages go and which features are available. Test and live environments need deliberate separation, including access, credentials and suitable test data. A convincing demonstration is less useful if nobody knows whether it has sent a real email or created a real order.
Configuration changes also deserve ownership and checks. Changing a price threshold or supplier connection can have consequences comparable to changing code. Clear records, validation and a controlled route into live use make those consequences easier to anticipate and reverse.
When real work begins
Clear rules are only the beginning. Once a request moves between people, applications and suppliers, timing becomes part of correctness. A decision that works perfectly in isolation can become unreliable when two things happen at once.
05 Input validation: the assumptions inside incoming information
TLDR: Information entering the system should be checked for business meaning and handled safely wherever it is used.Read the explanationClose the explanation
A correctly formatted date can still be an impossible delivery date. A valid-looking spreadsheet can contain duplicate orders. Validation needs to consider the business context as well as the shape of the data. These checks need to happen inside the service even when the screen already performs them.
There is also a security boundary. Imported text, external messages and AI-generated output must be treated as untrusted input. Safe database query construction keeps supplied values separate from executable instructions. Useful error messages then help people correct genuine mistakes without revealing sensitive technical details.
06 Transactions and consistency: when several changes belong together
TLDR: Changes that belong together should leave the business in a coherent state, including when part of the work fails.Read the explanationClose the explanation
Recording a stock movement may require several related records to change together. A database transaction can make that group succeed or fail as a unit. The business must first establish which changes genuinely belong together and which information may safely take time to catch up.
Work spanning a payment provider, an order system and a warehouse is more complicated. One database transaction cannot normally control all three. Those workflows need explicit intermediate states and recovery arrangements. A dashboard that updates later may be acceptable; uncertainty about whether a customer has paid needs more careful handling.
07 Concurrent updates: when two people act at once
TLDR: The system must handle simultaneous activity without selling the same capacity twice or silently overwriting someone's work.Read the explanationClose the explanation
Two people can book the final appointment, edit the same record or approve the same request within moments of one another. Checking availability before saving is insufficient if another action can change it in between. The system needs a reliable way to prevent or detect conflicting changes.
The appropriate response depends on the work. A booking may need one action to succeed and the other to receive an alternative. An edited document may need a comparison and a conscious decision. Designing that response with users avoids turning a technical conflict into lost work or an unexplained refusal.
08 Idempotency: one action, several attempts
TLDR: Retrying the same business action should not accidentally create a second payment, booking or instruction.Read the explanationClose the explanation
People double-click. Connections drop. Suppliers resend messages because they did not receive a response. Idempotency means recognising another attempt at the same action and preserving the intended single outcome, even when the system receives that request more than once.
The important judgement is deciding what counts as the same action. Two identical orders can be legitimate; two attempts to submit one order are different. Business identifiers and clear rules help distinguish them. This protection matters wherever automation, including an AI-enabled workflow, can retry a consequential action.
09 Background work: the gap between submitted and completed
TLDR: Work that happens later still needs a deadline, a visible status and an owner when it gets stuck.Read the explanationClose the explanation
Reports, imports, reminders and document processing often run in the background so people can continue working. Queues hold pending tasks, while schedules start work at agreed times. Both can smooth demand, but they create a gap between accepting a request and completing it.
The business needs to know how long that gap may be and what happens when work fails. Pending tasks should be traceable, failures recoverable and repeated processing safe. A system that says “submitted” while a critical task remains unnoticed for days has only moved the problem out of sight.
10 Events and webhooks: what a notification actually proves
TLDR: Notifications between systems need clear meaning and a way to detect missed, repeated or delayed delivery.Read the explanationClose the explanation
An event announces that something happened, such as an order being approved. A webhook delivers a notification to another service. These mechanisms help systems cooperate without requiring every activity to happen immediately, but receiving a notification and completing the resulting work are separate steps.
The weak point is often the hand-off: each system believes it has done its part, while the business action is still incomplete. Messages can arrive late, repeat or appear in a different order. Agreed meanings, named responsibility and reconciliation give the business a way to discover the gap and close it.
11 Integration contracts: shared data, shared meaning
TLDR: Systems that exchange information need stable agreements about its meaning and how those agreements can change.Read the explanationClose the explanation
An application programming interface (API) is one way software exposes information or actions to another system. Its contract includes more than field names: units, permitted values, timing, errors and business meaning all matter. Changing a value from pounds to pence can break an integration without changing its shape.
A supplier changing its contract can leave customers with a deadline they did not choose. Versioning and agreed support periods create room to adapt without abruptly breaking existing connections. AI can help draft integration code; someone with knowledge of both businesses still needs to confirm that the exchange means the same thing to each.
12 Data changes: what happens to the history
TLDR: Changing how information is stored requires a plan for existing records and ongoing operations.Read the explanationClose the explanation
A new workflow may require different statuses, additional fields or a revised relationship between records. Moving existing information into that structure is a migration. The main risk is often its meaning: an old “complete” status may not prove that all the conditions of a new process were met.
Safe change includes representative checks, reconciliation and a practical route through the transition. Large or sensitive changes may need stages so old and new software can coexist temporarily. The people who understand the records should help define success; a migration finishing without an error is only part of the evidence.
13 Workflow recovery: the work left unfinished
TLDR: Multi-step processes need a deliberate way to complete, reverse or reconcile work after an interruption.Read the explanationClose the explanation
A payment can succeed while a booking fails. A supplier can accept an instruction before the local system records its response. Recovery starts by establishing what actually happened, then deciding the next legitimate business action. Blindly repeating the entire process can make the situation worse.
Sometimes the remedy is compensation, such as a refund or cancellation, rather than an exact reversal. That remedy can also fail or require approval. Good design gives staff a clear view of unresolved cases, a safe way to intervene and a record of how each case was settled.
The responsibility that comes with access
The connections that help work move also give people and systems the ability to affect it. A customer, a colleague and an automated service may all touch the same record, but each brings a different level of authority.
14 Authentication: identity beyond the login screen
TLDR: Knowing who is using the system includes secure sign-in, account recovery and timely removal of access.Read the explanationClose the explanation
Authentication establishes identity. Its reliability depends on more than the login screen: account creation, stronger checks for sensitive activity, lost-device handling and session expiry all affect the outcome. A weak recovery process can undermine a strong password policy.
Access must also follow real organisational change. Staff leave, suppliers change and devices go missing. Without clear ownership of account creation, recovery and ending active sessions, access can outlast the reason for granting it. Established identity services help, but the organisation remains responsible for how those capabilities are configured and used.
15 Authorisation: the authority behind an identity
TLDR: Every action should be limited to the information and authority that the user or service actually needs.Read the explanationClose the explanation
Authorisation determines permissions after identity has been established. A person may view an invoice without being allowed to change bank details or approve payment. In software serving several customers, tenant isolation means keeping each customer's information and actions within the correct boundary.
These rules must be enforced by the service, including through integrations and background processes. Hiding a button is insufficient. Access should default to refusal unless justified. Permissions need review as roles change. AI tools acting on business systems should receive similarly limited authority rather than inheriting unrestricted access for convenience.
16 Secrets and keys: the access behind the scenes
TLDR: Passwords, access tokens and encryption keys need controlled storage, limited access and a workable replacement process.Read the explanationClose the explanation
Systems use credentials to connect to databases, suppliers and other services. If those secrets appear in source files, shared documents, diagnostic output or prompts, people and tools may receive access they were never intended to have. Separate credentials for different environments help contain the consequences of exposure.
Ownership matters as much as storage. Someone must know which credentials exist, what they permit and how to replace or revoke them without unnecessary disruption. Staff changes, supplier changes and suspected compromise should trigger a defined process, with evidence that the old access has ended.
17 Encryption: protection throughout the data journey
TLDR: Encryption reduces exposure when information is intercepted or storage is accessed, provided the keys are protected.Read the explanationClose the explanation
Encryption in transit protects information moving between systems. Encryption at rest protects stored information, including relevant backups. Both are useful layers, but neither decides whether an authorised account should be able to read a particular customer's records.
The business needs to understand where information travels, who can decrypt it and how keys will remain available during recovery. Supplier assurances should be examined against that journey. Protecting a database while leaving an exported report exposed creates a gap that the encryption of the original system cannot resolve.
18 Browser security: the risks inside an ordinary session
TLDR: Browser-based software needs safeguards against hostile content and unintended actions using a person's session.Read the explanationClose the explanation
Some attacks make a page run untrusted instructions; others attempt to make a signed-in user perform an unwanted action. These are commonly called cross-site scripting and cross-site request forgery. Their practical consequences include information theft and changes made under someone else's identity.
Browser security also includes rules about which websites may read responses from a service, often called CORS. Those rules do not replace identity or permission checks. The business priority is layered protection around real workflows, particularly where people view external content, handle sensitive records or approve consequential changes.
19 Outbound connections: how far a feature can reach
TLDR: A feature that opens a supplied link should not become a route into private systems or information.Read the explanationClose the explanation
Software may fetch an image, import a document or inspect a webpage on a user's behalf. If it follows arbitrary addresses, it can be tricked into contacting destinations that the user could not reach directly. This is known as server-side request forgery (SSRF).
Controls need to restrict network access appropriately and account for actual destinations, including redirects. The same boundary matters for AI-enabled tools that browse or retrieve material. Giving a feature internet access is a decision about its reach and authority, with consequences beyond whether it returns a useful answer.
20 Abuse protection: keeping capacity available for legitimate work
TLDR: Limits should protect the service from deliberate abuse and accidental overload while allowing legitimate work to continue.Read the explanationClose the explanation
Automated login attempts, repeated searches, large uploads and aggressive integrations can consume shared capacity. Rate limits, traffic filtering and other protective controls reduce that pressure. A limit needs to reflect the action's cost and sensitivity as well as the number of requests.
Business context prevents blunt controls from becoming a new problem. A supplier's legitimate bulk import may resemble abuse, while a small number of expensive requests may cause disproportionate harm. A useful control distinguishes those situations, gives genuine users a clear explanation and provides a managed route for exceptions. Otherwise, the defence can become part of the disruption.
21 Audit trails: the evidence behind an important action
TLDR: The business should be able to establish who changed something important, what happened and under whose authority.Read the explanationClose the explanation
An audit trail records consequential actions such as approvals, permission changes, exports and changes to financial details. Its purpose is different from diagnostic output used to investigate a fault. The record must be suitable for reconstructing the business event, with controlled access and protection against inappropriate alteration.
Automation makes attribution more important. A useful record distinguishes the person who authorised an action from the service or AI tool that performed it. Decide what evidence is needed and how long to retain it, while avoiding unnecessary sensitive content. Recording everything indiscriminately can create a new exposure without improving accountability.
22 Data lifecycle: the responsibility attached to every copy
TLDR: Information is easier to govern when its collection, use, retention and removal follow an agreed purpose.Read the explanationClose the explanation
Every extra copy creates another place to protect, correct and eventually remove information. Retention decisions should cover live systems, exports, logs, test environments and backup recovery. Deleting a record from the main screen does not establish what happened to its other copies.
Business owners need to agree the purpose, applicable obligations and operational need before those decisions are automated. The same questions apply when information is sent to an AI service: what is being shared, under which terms and who has authorised that use? Clear policies give implementation and supplier decisions a sound basis.
When demand grows
A service can behave correctly for its first customers and still struggle when the business succeeds. More records, larger imports and busier periods expose costs and delays that were almost invisible at the start.
23 Performance expectations: whose experience gets measured
TLDR: Meaningful performance measures reflect real business tasks, including the experience of people receiving the slowest responses.Read the explanationClose the explanation
An average response time can hide a frustrating checkout, a slow approval screen or a report that regularly misses its deadline. Performance measurement should follow the work people are trying to complete, under representative conditions and levels of demand. Different tasks can reasonably have different expectations.
A performance budget gives a particular journey an agreed limit for time or resource use. Its value lies in connecting the measurements to lost time, abandoned activity and operating pressure. That connection helps an experienced practitioner identify where an improvement will make a difference to the business and where further optimisation offers little return.
24 Database performance: when the records grow
TLDR: The way software retrieves information should remain practical as records and usage grow.Read the explanationClose the explanation
A report that works with a few hundred records may struggle with several years of trading history. Common causes include retrieving too much information, repeatedly asking small related questions or lacking a useful index. An index helps the database find records, but adds storage and work when information changes.
The right response starts with measuring the actual workload. A larger server may provide breathing space, while an inefficient query continues to create avoidable cost. Delivery teams should test important journeys against realistic volumes and understand which improvements will matter before adding complexity or committing to a larger platform.
25 Caching: when a faster answer is an older answer
TLDR: Reusing a previous result can improve speed, provided the business knows when that result is no longer safe to use.Read the explanationClose the explanation
A cache keeps information close to where it is needed instead of repeatedly fetching or calculating it. This works well for many images, pages and reference values. It becomes more delicate when the answer concerns stock, access permissions, prices or other information that changes with business activity.
The acceptable age of an answer depends on what happens next. Yesterday's product description may be harmless; yesterday's permission could expose information to the wrong person. Rules for refreshing or discarding a cached result, separation between customers and a fallback when the cache is unavailable determine whether the faster answer remains trustworthy.
26 Resource management: how one task affects everyone else
TLDR: Memory, storage and shared connections need limits so individual activities cannot consume everything available.Read the explanationClose the explanation
A large import, an unreleased database connection or a steadily growing use of memory can make a service unreliable over time. The system needs to release resources when work finishes and manage how much activity can compete for them at once.
These limits should reflect operational priorities. Running a non-urgent report should not prevent staff from processing today's orders. Capacity checks, sensible job sizes and monitoring help keep the service predictable. Buying more capacity may be justified, but it should follow an understanding of whether demand is legitimate or resources are being wasted.
27 Capacity and cost: the price of growth
TLDR: Growth plans should connect expected demand, acceptable service and the cost of each important activity.Read the explanationClose the explanation
Scaling can mean giving one system more resources or spreading work across several. Automatic scaling adjusts capacity in response to demand, within configured limits. None of these approaches removes every bottleneck: a shared database, supplier quota or expensive operation can still constrain the whole service.
A credible capacity plan connects ordinary demand and likely peaks to an affordable response when limits are reached. Costs become more useful when related to completed orders or processed cases. The same reasoning applies when a workflow calls a paid AI service: repeated or unnecessary calls can increase expenditure without improving the outcome.
28 Traffic routing: the journey into the service
TLDR: The path into the system should distribute demand safely and deliver appropriate content efficiently.Read the explanationClose the explanation
Traffic routing directs requests to the systems able to handle them. Content delivery services can place suitable material nearer to users, reducing repeated work and travel time. The arrangements also depend on practical details such as domain ownership, certificates and correctly configured routes.
Responsibility for that path needs to be explicit, especially when several suppliers are involved. A healthy application is little help if customers cannot reach it. Know who can make changes, how those changes are checked and which content is safe to distribute or cache beyond the main system.
When something goes wrong
Growth is only one source of pressure. A supplier can stop responding on an otherwise quiet day. At that point, the decisions that matter are how far the problem can spread, what work can continue and how the business recovers.
29 Timeouts and retries: uncertainty after a missing response
TLDR: Waiting and retrying need limits that reflect the uncertainty of an unanswered request.Read the explanationClose the explanation
A timeout means a response did not arrive in time; the requested action may still have happened. Repeating a payment or supplier instruction without checking can therefore create a duplicate. Retry behaviour needs to work with the safeguards described in entry 8 and with a clear overall deadline.
Spacing attempts further apart helps avoid adding pressure to a struggling service. Eventually the system must stop, explain the uncertainty and provide a route to resolution. Choosing that point is a business decision about acceptable delay, customer expectations and the consequences of an unresolved action.
30 Failure isolation: how far a problem can spread
TLDR: A failing component or overloaded activity should have a limited effect on the rest of the service.Read the explanationClose the explanation
When a dependency is struggling, repeatedly calling it can consume capacity and spread the problem. Controls can pause those calls, limit how much work is accepted and keep separate activities from exhausting shared resources. These techniques help preserve useful service while a fault is investigated.
The fallback needs business judgement. Showing older catalogue information may be acceptable; inventing a successful payment response would be dangerous. Decide which functions can continue, which should become read-only and which must stop. A deliberately reduced service is easier to manage when its limits are understood in advance.
31 Redundancy and failover: what the alternative can actually deliver
TLDR: Spare capacity and duplicate systems can improve continuity, provided switching between them is understood and tested.Read the explanationClose the explanation
Replication maintains copies of information. Redundancy provides alternatives when a component fails. Failover moves work to an alternative. Their value depends on what failures they actually cover: two systems relying on the same power, network or credentials can still fail together.
Copies can also lag behind, making recent information unavailable after a switch. The business's tolerance for interruption and data loss determines whether that trade-off is acceptable; testing reveals what actually happens. Replication can copy a mistaken deletion as readily as a valid update, so recovering earlier information requires separate protection.
32 Backups: what can actually be recovered
TLDR: A backup is useful when the business can recover the right information from it within an acceptable time.Read the explanationClose the explanation
Creating a copy is the beginning of recovery preparation. The organisation also needs to know what it contains, how far back it goes, who can access it and whether the necessary keys and tools will be available. Backup copies need protection from the incidents that could damage the live system.
Restoration should be rehearsed and checked for meaningful completeness. Can the recovered service open its records, use its files and support its critical processes? Timing that exercise provides better evidence than a successful backup notification. The findings should shape both the recovery plan and any promise about acceptable data loss.
33 Business continuity: the business during an interruption
TLDR: Recovery planning should explain how the organisation will continue working while technology is unavailable or being restored.Read the explanationClose the explanation
A major incident can affect systems, suppliers, people and access at the same time. Disaster recovery addresses restoring technology; continuity also considers customer communication, essential work, temporary procedures and the order in which services should return. These decisions depend on business priorities.
A business may be able to postpone reporting for a day while having very little tolerance for losing new orders. Those differences determine recovery priorities, acceptable data loss and the resources required. Rehearsing the plan with suppliers and available staff reveals whether the promise is realistic and where additional investment would change the outcome.
Keeping control of change
Recovery becomes harder if nobody is sure what changed. Every release alters a system that people already depend on, so the freedom to improve it rests on understanding the effect of a change and being able to respond.
34 Testing: what the evidence really shows
TLDR: Tests should show that important business outcomes remain correct, including permissions, exceptions and relevant failure scenarios.Read the explanationClose the explanation
Automated tests can repeatedly check behaviour as software changes. Their value depends on what they examine: a large test count can coexist with an untested refund process or a broken boundary between customers. Priorities should reflect the cost of getting particular actions wrong.
AI can help generate tests and suggest difficult cases, but generated code and generated tests can share the same mistaken assumption. Independent examples, operational knowledge and human review provide a stronger basis for checking the result. For higher-consequence changes, include realistic integration, recovery and user acceptance checks as appropriate.
35 Review: the assumptions a second look can expose
TLDR: Changes need informed scrutiny of their purpose, consequences and maintainability, supported by automated checks.Read the explanationClose the explanation
Code review examines how a proposed change works and whether it fits the wider system. Static analysis uses tools to identify certain problems without running the software. Both can find issues, but passing automated checks does not establish that the change solves the right business problem.
Useful human review asks what was assumed, which existing behaviour could be affected and how the next person will understand the result. AI can assist that examination, while review responsibility should remain clear. The depth of scrutiny should match the consequence of the change, keeping routine work efficient and consequential decisions explicit.
36 Dependencies: the commitments inherited from others
TLDR: Third-party software and services need ownership, maintenance and an understood route through change or withdrawal.Read the explanationClose the explanation
Most applications depend on components maintained elsewhere. Those dependencies bring useful capabilities alongside security updates, licence conditions, compatibility changes and support lifecycles. The software supply chain also includes the tools and processes used to assemble and release the application.
An unsupported component can turn a planned improvement into an urgent replacement. Knowing which dependencies matter, who owns their maintenance and what replacement would involve reduces that exposure. Code suggested by an AI tool needs the same checks: a plausible recommendation is a starting point for verification.
37 Repeatable delivery: the path from tested to live
TLDR: The route from a proposed change to live software should be repeatable, traceable and appropriately checked.Read the explanationClose the explanation
Continuous integration and delivery, often called CI/CD, automate parts of checking, building and preparing releases. Controlled inputs and a consistent build process help connect what was reviewed and tested to what reaches the live service. This reduces dependence on undocumented steps performed on one person's machine.
Automation should make the evidence and responsibility clearer. The business needs to know which version is running, what changed and which checks were completed. Approval requirements can vary with risk; the objective is a dependable path to release that the team can understand, maintain and use confidently.
38 Controlled releases: the first people to experience a change
TLDR: A gradual release creates room to discover a problem while fewer people or operations are exposed to it.Read the explanationClose the explanation
A release can begin with a small audience, a limited amount of traffic or a feature that remains disabled until needed. Feature flags are switches controlling whether particular behaviour is available. These approaches create opportunities to observe real use before extending the change more widely.
The value of a gradual release lies in what the business learns before extending it. Clear signals for expansion or pause give someone the means to act. Old switches and incompatible combinations can create their own problems, so the controls also need to be retired or maintained deliberately.
39 Rollback: what returning to an earlier version can undo
TLDR: Every consequential change needs a credible response if its effects are unacceptable.Read the explanationClose the explanation
Returning to an earlier software version can restore previous behaviour, but it does not automatically undo messages sent, payments taken or information changed. Older software may also be unable to use a newly altered data structure. Recovery therefore needs to consider the whole change.
Decisions made before release can turn a hurried reaction into a controlled response. Disabling a feature, correcting the new version, restoring information and reconciling affected records solve different problems. Clear warning signs, decision authority and rehearsed options help the team choose an appropriate response when time is limited.
40 Infrastructure records: the environment someone else can recreate
TLDR: The services and settings supporting an application should be recorded in a form that can be reviewed and recreated.Read the explanationClose the explanation
Infrastructure and configuration as code means describing much of an operating environment in managed files. Changes can then be compared, reviewed and applied consistently. This helps teams understand what exists and reduces reliance on settings remembered by a particular individual.
These definitions still need access controls, secure handling of secrets and care when applied to live resources. Their usefulness depends on whether they match reality and can support recovery. The business benefit is a more understandable and transferable service, with less uncertainty when moving suppliers, rebuilding systems or bringing new people into the team.
Knowing what is really happening
Even a carefully introduced change can behave differently in everyday use. The business needs a way to see what customers are experiencing, understand the cause and put the right people in a position to act.
41 Health checks: online, ready and useful
TLDR: An application being online does not establish that it is ready or able to serve its users.Read the explanationClose the explanation
Health checks answer specific operational questions. Readiness asks whether a component should receive new work. Liveness asks whether it has become stuck in a way that warrants restarting it. Checks of an important customer journey provide a further view of whether the service is actually useful.
Choosing the wrong response can worsen an incident. Restarting every component because a shared supplier is unavailable may add disruption without addressing the cause. Checks need to reflect how the system fails and connect to a sensible action. Business-critical journeys should remain visible alongside the condition of individual components.
42 Monitoring and observability: the evidence behind a customer experience
TLDR: Useful operational evidence connects a technical problem to its effect on real work.Read the explanationClose the explanation
Monitoring tracks known conditions, such as rising failures or delayed processing. Observability is the ability to investigate system behaviour using the evidence it produces. Measurements, event records and traces across a journey help connect a customer's experience to the activity behind it.
Useful evidence begins with useful questions. Why are these orders delayed? Which customers were affected? Did the supplier accept the request? AI can help summarise and investigate available evidence, but findings need verification against reliable records. Collection also needs boundaries so sensitive information does not spread through diagnostic systems unnecessarily.
43 Reliability objectives: the service the business is promising
TLDR: Measurable service expectations give reliability problems a clear place in operational and investment decisions.Read the explanationClose the explanation
A booking screen can be available while its payments fail. A service-level indicator brings the measure closer to that experience: the proportion of successful bookings, for example. A service-level objective sets the target for that measure over a defined period. An error budget expresses the amount of failure permitted by the chosen target; its meaning depends on how the indicator is calculated.
These agreements help balance new work against reliability improvements. Alerts should identify situations where someone needs to act, with urgency proportionate to the impact. Business and technical leaders need to agree the target together, including important deadlines and customer commitments that a broad availability figure might conceal.
44 Incident ownership: who can act when it matters
TLDR: When service is disrupted, named people need the authority, access and information to coordinate a response.Read the explanationClose the explanation
Incident response includes recognising the problem, limiting harm, restoring service and communicating with affected people. Someone needs to coordinate those activities while others investigate. Suppliers and internal teams need agreed escalation routes so the response does not stall at organisational boundaries.
Support arrangements should match the promises made to the business. A critical service outside office hours needs an appropriate response plan, including coverage and access. An on-call name alone is insufficient. People need usable procedures, practice and a sustainable arrangement that works when the usual expert is unavailable.
45 Learning from incidents: what changes after the review
TLDR: An incident review becomes useful when its findings lead to completed improvements.Read the explanationClose the explanation
A useful incident review establishes what happened, how it affected people, what evidence was available and why the response unfolded as it did. The aim is to understand the technical and organisational conditions involved, including unclear ownership, misleading signals or an unsafe routine process.
Improvements need owners, priorities and a way to check their effect. More alerts or another document may be less useful than removing a recurring failure path. Experienced leadership helps distinguish a local mistake from a wider weakness and creates conditions in which people can share evidence honestly.
The people who depend on it
Behind every measurement and process are people trying to get something done. Their confidence depends on ordinary details: a usable form, an understandable message, a safe correction and someone else being able to take over.
46 Accessibility: who can complete the journey
TLDR: People should be able to complete important tasks across different abilities, devices and ways of interacting.Read the explanationClose the explanation
Accessibility includes usable keyboard navigation, meaningful labels, readable presentation and compatibility with assistive technology. It applies to staff systems as well as customer-facing services. A technically available workflow can still exclude someone if its controls, instructions or feedback are inaccessible.
A form can pass automated checks and still leave someone unable to finish. Building accessibility into requirements, design and acceptance checks gives the team a stronger starting point; practical testing and feedback reveal barriers across the complete journey. This includes handling errors and completing less common steps, where a polished first impression tells only part of the story.
47 Errors and progress: what people need to know next
TLDR: The interface should explain what has happened, what remains uncertain and what the person can safely do next.Read the explanationClose the explanation
A vague failure message can make someone repeat a successful payment or abandon a valid application. Progress information should distinguish between received, processing and completed work. When something goes wrong, retain useful information where safe and provide a clear route to correction or support.
The language needs to match the actual state of the process. That requires cooperation between the people designing the screen and those implementing the underlying behaviour. Thoughtful recovery reduces avoidable support work and helps users remain in control, particularly when an automated action has an outcome they need to review.
48 Safe administration: the freedom to put things right
TLDR: Routine business changes and exceptional cases should have controlled tools that authorised staff can use confidently.Read the explanationClose the explanation
Staff may need to change thresholds, correct a record, retry a failed task or override a decision. Without suitable controls, these actions become developer requests or improvised database changes. A well-designed administration interface makes the effect visible and applies the necessary permissions, checks and records.
The right safeguards depend on consequence: previews, limits, additional approval or a reversible step may be appropriate. Human intervention should also be available where automated judgement is insufficient. Giving operations useful control reduces dependency while keeping responsibility clear, especially when the system includes AI-assisted decisions.
49 Documentation and handover: the knowledge that outlasts a team
TLDR: Knowledge should remain usable when a team member leaves, a supplier changes or the system needs urgent attention.Read the explanationClose the explanation
Documentation needs to explain the system's purpose, important decisions, ownership and operating procedures. A runbook sets out how to perform or recover a particular activity. The most valuable material often explains why a choice was made and which assumptions would justify revisiting it.
AI can help produce a first draft, but the account must be checked against the actual system and its history. Handover is stronger when the receiving team demonstrates that it can perform essential tasks. This makes knowledge transfer observable and leaves the business better able to operate and develop what it owns.
50 Modernisation: what is worth carrying forward
TLDR: Staged modernisation allows a business to improve its software while protecting the knowledge and operations it depends on.Read the explanationClose the explanation
Older systems often contain years of business decisions, exceptions and practical adaptations. Some are valuable; others are constraints worth removing. A replacement needs to distinguish between them and understand the integrations, records and working habits that depend on the current arrangement.
Incremental change creates opportunities to learn, compare results and limit disruption. AI can help analyse unfamiliar code or draft replacements, while people with technical and operational experience establish what must be preserved and validate the transition. Progress should be judged by improved business capability and reduced risk, alongside the maintainability of the resulting system.
Where experienced judgement earns its place
These decisions overlap. A retry policy affects payments. A retention decision affects recovery. A release changes what support teams need to understand. Their consequences become clearer when someone can connect business priorities, technical behaviour and the people doing the work.
AI can contribute throughout that work. Its output needs an operating context: clear objectives, appropriate access, trusted evidence and someone accountable for consequential decisions. Human involvement earns its place through the quality of those decisions and the ability to follow them through in practice.
That ordinary booking is dependable when the appointment is reserved correctly, the payment is accounted for and the customer can trust the confirmation. If something interrupts it, someone has a clear route to resolution. The judgement behind those outcomes is where technical capability becomes business value.
Signal North brings technology leadership, architecture and hands-on delivery to these questions, connecting decisions about software to the organisation that will depend on it. Read more about our approach and hands-on software delivery.
Explore the article
Further reading
The following primary references provide more detail behind selected entries:
- Entries 6 and 7: PostgreSQL on transaction isolation and locking.
- Entry 8: AWS on making retries safe with idempotent APIs.
- Entry 13: Microsoft's Saga pattern, including recovery through compensating actions.
- Entries 15 and 16: OWASP guidance on authorisation and secrets management.
- Entries 18 and 19: OWASP on cross-site scripting, cross-site request forgery and server-side request forgery, alongside MDN's explanation of CORS.
- Entry 21: OWASP on logging and the distinct purposes of audit records.
- Entry 25: MDN on HTTP caching.
- Entries 29 and 30: AWS on timeouts, retries and backoff and Microsoft's Circuit Breaker pattern.
- Entry 31: PostgreSQL on replication and standby systems.
- Entries 35 and 36: NIST's Secure Software Development Framework.
- Entries 41 and 42: Kubernetes on health probes and OpenTelemetry's observability primer.
- Entries 43 and 45: Google SRE on service-level objectives, error-budget policy and learning from incidents.
- Entry 46: W3C's introduction to web accessibility.
For related Signal North perspectives, see designing systems that do not require constant development and modernising legacy systems without destabilising operations.