Code that works when everything goes as expected is only part of a reliable system. Good engineering also anticipates what can fail, limits how far the effects can spread, chooses what the system should do next, and checks that the chosen behavior works. That is the useful idea behind this title—not a claim that seniority alone makes software resilient.
Why “working” is not the same as reliable
A feature can pass its normal-path tests and still behave badly when a dependency slows down, data is missing, or a component stops responding. In a connected system, one fault can trigger more: a caller retries a slow request, retries consume connection capacity, and unrelated functions then struggle to reach the same service.
As an Amazon Associate I earn from qualifying purchases.
The payment-provider timeout example is a hypothetical cascade, not a report of a documented incident. It illustrates a practical design question: what happens after the first component fails, and can the response make the original problem worse?
Free tools Windows power users keep installed
One-click scans. No signup required.
Thinking about failure is useful at every experience level. The title’s contrast is a lens on engineering judgment and system boundaries, not an evidence-based distinction between senior and junior engineers; the sources cited here do not compare those groups.
#1 Best Overall
Start by describing how the system could fail
Do not specify only the expected behavior. Carnegie Mellon’s Software Engineering Institute (SEI) recommends anticipating adverse scenarios, identifying defects early, and writing requirements and architecture that can be analyzed. Its guidance is aimed at dependable systems, including safety-critical ones, so the appropriate depth of analysis depends on a system’s mission and consequences.
For a service that calls an external payment provider, useful scenarios might include a timeout, an error response, a slow response, or a provider that recovers after a brief outage. For each scenario, ask:
- What fault could occur, and which components depend on the affected component?
- How will the system detect and signal the fault?
- Could retries, queues, shared connection pools, or other interactions amplify its effects?
- Which functions must remain available, and which can be temporarily disabled?
- Should the system return cached information, queue work, reject requests quickly, or move to a safe state?
- What observation or test would show that the selected response worked?
SEI’s guidance on anticipating failures in software systems emphasizes planning for how a system might fail, not just how it should work under normal conditions.
Rank #2
Trace the fault, its effects, and its consequences
A fault is not automatically a system-wide failure. A defect or operational problem may need to be activated before it causes an effect, and that effect may be contained—or propagate through interacting components. NASA safety guidance analyzes failure modes, their effects, and their likelihood to understand safety-relevant risks.
For a low-risk application, a focused dependency map and a few concrete failure scenarios may be enough to make design decisions. In safety-critical systems, where consequences can include serious injury or environmental harm, more formal analysis may be warranted. NASA lists methods such as fault tree analysis, failure modes and effects analysis (FMEA), Markov analysis, and common-cause analysis. These are tools for assessing safety-relevant characteristics, not a mandatory checklist for every software project.
NASA’s system-safety memorandum also discusses architecture techniques such as redundancy, independence, detection, isolation, and recovery. The right combination depends on the potential harm, likelihood, propagation paths, recovery needs, and cost.
Choose the response to match the consequences
There is no universally correct failure response. A service may preserve essential features while disabling optional ones; a safety-critical system may need to stop or transition automatically to a safe state instead of continuing with uncertain inputs. SEI describes detection, signaling, appropriate failure behavior, redundancy, and safe-state transitions as possible design responses.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteDegrade gracefully when partial service is useful
If a recommendation or analytics service is unavailable, a product might still allow users to complete a core transaction without those optional features. This is graceful degradation: retaining useful core behavior rather than treating every dependency failure as a reason to take down the whole product.
Stop work quickly when waiting would spread harm
Timeouts put a limit on how long a caller waits. Circuit breakers can stop repeated calls to a dependency that is failing, giving it room to recover and preventing callers from spending resources on requests unlikely to succeed. These patterns can reduce one kind of propagation; they do not prove that the system is reliable.
Contain resource and safety risks
Bulkheads separate resource pools so pressure in one area is less likely to consume capacity needed elsewhere. Redundancy can provide an alternate path or component, but only if the design accounts for shared dependencies and common causes of failure. In systems where continued operation could be unsafe, detection and isolation may need to lead to a defined safe state rather than a degraded mode.
A resilience guide distinguishes resilience from performance and scalability, discusses graceful degradation and patterns including timeouts, circuit breakers, bulkheads, and redundancy, and recommends deliberately testing failure behavior. See the resilience patterns guide for that broader service-design context.
Prove the behavior with observation and tests
A diagram, fallback branch, or pattern name does not show that failures are contained in operation. SEI’s guidance includes monitoring and analysis; the resilience guide calls for deliberate tests of failure behavior. Together, these point to two practical checks:
- Observe: make faults and their effects visible enough to tell whether detection, signaling, and recovery are working.
- Exercise: test relevant failure scenarios and verify the system’s actual response, including whether unrelated functions remain available.
Testing should match the system’s risks. A targeted test of a dependency timeout may answer a concrete question for a service; more extensive fault analysis or assurance may be appropriate where failures could cause serious harm. No single pattern or test guarantees reliability.
Use the right level of rigor
Failure planning is not an argument for maximum redundancy or formal analysis everywhere. Added mechanisms have costs and can introduce their own failure modes. SEI cautions that practices have limitations and need to be adapted to the mission and organization. A low-impact feature and a safety-critical control system should not be expected to carry the same assurance burden.
For any system, the decision turns on the severity and likelihood of failure, the possibility that effects will propagate, the value of recovery or continued service, and the cost of the proposed safeguards. The important work is to make those tradeoffs deliberately—and to verify that the system behaves as intended when conditions are not ideal.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




