Agile Engineering, Quality and DevOpsIntroductionScrum provides a framework for delivering product increments, but Scrum alone does not guarantee that an increment is technically sound, releasable, secure, or maintainable. Technical excellence is the engineering capability that makes agility sustainable. It connects product goals with architecture, code, testing, operations, security, and learning from production. In a product environment, quality is not merely the absence of defects discovered by a test team. Quality includes fitness for purpose, reliability, usability, performance, security, accessibility, maintainability, and compliance. DevOps extends this concern across the entire value stream: development, testing, deployment, operations, and feedback. The central principle is shared ownership. Developers, product managers, quality specialists, security professionals, and operations engineers collaborate to create a product that can be changed and operated safely. The relationship between Scrum and engineering is therefore complementary. Scrum establishes an empirical management cycle based on transparency, inspection, and adaptation. Engineering practices provide the technical evidence that supports those cycles. A Sprint Review is more valuable when the increment is genuinely usable; a Sprint Retrospective is more productive when teams can inspect delivery data; and Product Backlog ordering is more rational when technical risk and operational evidence are visible. Learning ObjectivesAfter completing this chapter, the learner should be able to: - Explain how technical excellence supports Scrum and product value.
- Design a quality strategy involving automation, continuous integration, and continuous delivery.
- Compare trunk-based development with long-lived branching models.
- Explain refactoring and technical-debt management as product-management responsibilities.
- Apply observability, security, and reliability practices to release decisions.
- Interpret engineering metrics without using them as simplistic productivity measures.
- Evaluate an integrated Agile engineering approach in a realistic product context.
1. Scrum, the Increment, and the Definition of DoneScrum defines an Increment as a usable, additive step toward the Product Goal. The Definition of Done is the shared description of the state an Increment must reach before it can be considered complete. It may include code review, automated tests, security checks, documentation, performance criteria, accessibility checks, deployment readiness, and monitoring. A weak Definition of Done often creates an illusion of progress. For example, a team may mark a feature complete when coding is finished, although integration testing, data migration, operational monitoring, and security review remain outstanding. Such work is not complete from the customer’s perspective; it is merely unfinished work moved outside the Sprint. A strong Definition of Done should be: - explicit and understood by all stakeholders;
- applicable to every relevant Increment;
- progressively strengthened as team capability improves;
- based on observable evidence rather than intention; and
- connected to the product’s risk profile.
The Definition of Done is not identical to acceptance criteria. Acceptance criteria describe conditions for a particular Product Backlog Item. The Definition of Done describes the general quality threshold for all applicable Increments. A payment feature may require an acceptance criterion such as “the customer can pay using a supported card,” while the Definition of Done may require automated regression tests, audit logging, vulnerability scanning, and production monitoring. 2. Quality as a Socio-Technical SystemQuality is produced by the whole system of work, not inspected into a product at the end. A useful quality model considers several dimensions: | Quality dimension | Typical concern | Possible evidence |
|---|
| Functional | Does the product perform intended actions? | Acceptance and integration tests | | Reliability | Does it remain available and correct over time? | Error rates, uptime, recovery tests | | Performance | Does it respond within acceptable limits? | Latency percentiles, load tests | | Security | Is it protected against misuse and attack? | Threat modelling, scans, penetration testing | | Usability and accessibility | Can intended users use it effectively? | Usability research, accessibility audits | | Maintainability | Can the system be changed safely? | Code review, modularity, change-failure data | | Compliance | Does it meet legal and organizational obligations? | Control evidence, audit records |
Quality assurance is a preventive and systemic activity: defining standards, improving processes, and reducing the probability of failure. Quality control is the detection of nonconformance through inspection and testing. Both are necessary, but late detection is generally more expensive and disruptive than prevention and early feedback. The cost of delay also matters. A defect discovered in a developer’s local environment may be corrected quickly. The same defect discovered after a public release may require incident response, customer communication, data repair, and reputational recovery. This is why Agile engineering emphasizes small changes and rapid feedback. The testing pyramid and test strategyA balanced automated test portfolio commonly contains: - unit tests for small, isolated units of behavior;
- component or service tests for a deployable subsystem;
- contract tests for agreements between services;
- integration tests for interactions with databases, queues, or external systems; and
- a smaller number of end-to-end tests for critical user journeys.
The testing pyramid is a heuristic, not a law. Lower-level tests are usually faster and more diagnostic, while higher-level tests provide broader confidence but are often slower and more fragile. A product with complex user interfaces may require more component-level and accessibility testing than a simple internal service. Test investment should follow risk rather than a fixed numerical ratio. Test automation does not mean testing without judgment. Automated tests are valuable when they are reliable, meaningful, maintainable, and capable of detecting important failures. Flaky tests—tests that pass and fail without a relevant product change—damage trust in the delivery pipeline. Teams should measure, quarantine, investigate, and remove flakiness rather than simply ignoring failed builds. 3. Continuous Integration and Continuous DeliveryContinuous integration (CI) means that developers frequently integrate small changes into a shared codebase and receive automated feedback. A CI pipeline generally performs source retrieval, compilation or packaging, static analysis, unit tests, security checks, and selected integration tests. Continuous delivery means that software is maintained in a state in which it can be released safely and routinely. Continuous deployment goes further: every change that passes the required controls is automatically deployed to production. Continuous delivery does not require automatic production deployment; release authorization may remain a business, regulatory, or risk decision. A credible pipeline should be treated as a product capability. It must be observable, documented, secure, and maintained. Typical stages are: - Validate: syntax checks, formatting, dependency and policy checks.
- Build: compile, package, and create an immutable artifact.
- Test: execute unit, component, integration, and selected end-to-end tests.
- Assess: perform security, performance, accessibility, and compliance checks appropriate to risk.
- Deploy: promote the same artifact through controlled environments.
- Verify: use smoke tests, health checks, telemetry, and business indicators.
- Recover: support rollback, roll-forward, or feature disabling.
The same artifact should be promoted across environments wherever practical. Rebuilding separately for testing and production can introduce differences that invalidate earlier evidence. Environment-specific configuration should be injected safely at deployment time, while secrets should be held in an approved secret-management system rather than in source code or pipeline logs. Pipeline controls and flowA pipeline should be fast enough to support frequent integration, but not so permissive that it provides false confidence. Teams can separate rapid commit checks from slower scheduled or pre-release checks. A failed quality gate must have a clear owner and response. If failures are routinely bypassed, the pipeline becomes theatre rather than control. Useful delivery measures include deployment frequency, lead time for changes, change-failure rate, and time to restore service. These measures are useful at system level and over time; they should not be used as a simplistic ranking of individuals. For a period containing N deployments, if F deployments cause a production incident or rollback, the change-failure rate can be represented as: Change-failure rate = F ÷ N × 100% Here, F and N count deployments in the same defined period, and the result is a percentage. The measure depends on a consistent definition of “failure,” such as a deployment requiring rollback, hotfix, or incident response. It should be interpreted with deployment frequency and service criticality; a low rate achieved by releasing very rarely is not necessarily superior. 4. Trunk-Based Development and Safe IntegrationTrunk-based development is a practice in which developers integrate small changes frequently into a shared mainline, commonly called trunk or main. Short-lived branches may be used, but they are merged quickly—often within a day or a few days. The aim is to reduce integration divergence and expose conflicts early. Long-lived feature branches defer integration. They may provide temporary isolation, but they increase merge complexity, duplicate work, and the risk that a feature is developed against obsolete assumptions. Trunk-based development requires discipline: automated tests, code review, small changes, feature flags, and a main branch that remains releasable. Feature flags separate deployment from release. Code can be deployed while a capability remains disabled for customers. Flags support gradual rollout, internal testing, experimentation, and rapid disablement. However, flags create conditional complexity and must have owners, expiry dates, access controls, and removal plans. A permanent flag is often a form of accumulated technical debt. Safe integration also involves backward-compatible database and API evolution. A common migration pattern is “expand and contract”: first add structures that support both old and new versions, then deploy application changes, migrate or backfill data, and finally remove obsolete structures after the old version is no longer active. This approach reduces the risk of a deployment that requires all components to change simultaneously. 5. Refactoring and Technical DebtRefactoring is the disciplined restructuring of existing code without changing its externally observable behavior. It improves internal qualities such as readability, cohesion, testability, modularity, and changeability. Refactoring is not the same as rewriting. A rewrite replaces a substantial system and carries significant migration and compatibility risk; refactoring changes a system incrementally while preserving behavior. Technical debt is a metaphor for the future cost created by expedient technical choices. Some debt is deliberate and economically rational—for example, using a simpler implementation to test a market hypothesis. Some is inadvertent, arising from limited knowledge, rushed work, weak design, or environmental change. Debt is not automatically bad; unmanaged debt is dangerous. A product team should make debt visible in the Product Backlog or an associated technical-risk register. Each item should state: - the affected system or capability;
- the current symptom and likely cause;
- the consequence for customers, delivery, security, or operations;
- evidence of the risk;
- an estimated remediation approach; and
- a review date or trigger.
Debt prioritization should consider impact, likelihood, urgency, and remediation cost. A simple qualitative model is often more honest than false precision. For example, high-impact debt that blocks regulatory compliance should be addressed before low-impact duplication in an infrequently changed module. Product managers should resist treating all capacity as feature capacity: preserving future delivery capability is itself a product investment. Refactoring is safest when supported by characterization tests, small commits, code review, and continuous integration. Teams should avoid large “cleanup Sprints” that postpone customer feedback and create difficult-to-review changes. Improvement should be integrated into normal product delivery. 6. Observability and OperationsMonitoring reports known conditions, such as CPU utilization or whether a process is running. Observability concerns the ability to infer the internal state of a system from its externally generated outputs. The principal signals are: - Logs: timestamped records of events, with appropriate context and privacy controls.
- Metrics: numerical time-series measurements such as request rate, error rate, and latency.
- Traces: linked records showing a request’s path across services.
- Profiles and diagnostics: evidence about resource use and runtime behavior.
Good observability is designed around user and business outcomes. A dashboard showing server memory may be technically interesting but insufficient if it does not reveal whether customers can complete checkout. Important services should have service-level indicators (SLIs), such as successful request proportion or latency at a specified percentile. A service-level objective (SLO) states the target for an SLI over a defined time window. An error budget is the permitted unreliability implied by the SLO. For example, an SLO of 99.9% successful requests over a 30-day period allows approximately 0.1% unsuccessful requests, assuming the measurement definition is stable. The approximate permitted unavailable time in a 30-day month is: 30 × 24 × 60 × (1 − 0.999) = 43.2 minutes This calculation assumes a 30-day period, continuous measurement, and that the SLO is expressed as availability over time. Request-based and time-based SLOs are not interchangeable. The error budget is a decision tool: when reliability is within budget, the team may accept more delivery experimentation; when the budget is exhausted, reliability work may take priority. Observability must respect privacy and security. Logs should avoid unnecessary personal data, credentials, tokens, and sensitive business information. Retention, access, redaction, and deletion should follow organizational policy and applicable law. 7. Security and Secure DeliverySecurity is a shared product responsibility, not an activity delegated entirely to a specialist at the end of development. Secure delivery integrates security into discovery, design, coding, testing, deployment, and operations. A practical secure-development approach includes: - threat modelling for important flows and trust boundaries;
- least-privilege access and strong identity controls;
- secure dependency and container management;
- input validation and output encoding;
- protection against common application vulnerabilities;
- secret scanning and secure secret storage;
- auditability for sensitive actions;
- vulnerability triage based on exploitability and business impact; and
- incident response and recovery exercises.
Security requirements should be expressed in product language. “Only authorized administrators can export customer records” is more actionable than “improve security.” Acceptance evidence may include authorization tests, audit records, and negative tests demonstrating that unauthorized actions fail. Security automation is valuable but not sufficient. Static analysis can identify patterns in source code; dynamic testing can expose runtime weaknesses; dependency scanning can identify known vulnerable components. These tools produce findings that require human prioritization. A scanner result is not automatically a confirmed exploit, and a clean scan is not proof of security. Governance includes data protection, accessibility, licensing, records management, and sector-specific regulation. Release decisions should identify who is authorized to accept residual risk and how that decision is documented. Emergency changes should be controlled rather than exempt from all controls; retrospective review is essential. 8. Reliable Release PracticesA release is a socio-technical event involving technology, people, communication, and customer impact. Reliable release practices reduce blast radius and increase the speed of recovery. Common techniques include: - Canary release: expose a change to a small proportion of traffic or users before wider rollout.
- Blue-green deployment: maintain two production environments and switch traffic between them, subject to data and compatibility constraints.
- Rolling deployment: replace instances progressively rather than simultaneously.
- Progressive delivery: combine staged exposure, feature flags, automated verification, and decision points.
- Rollback: return to a previous version when the new version is unsafe.
- Roll-forward: correct the defect through a new change when rollback is unsafe or data has already changed.
Rollback is not always possible. Database migrations, irreversible external actions, and data-format changes can make an old version incompatible. Release design must therefore include compatibility, migration, backup, recovery, and validation plans. A release readiness decision should consider technical and product evidence: test results, unresolved defects, security findings, operational capacity, customer impact, support readiness, telemetry, and a recovery plan. “All tests passed” is useful evidence but not a complete release argument. Incident management should be blameless but accountable. A blameless post-incident review focuses on contributing conditions, detection, response, and system improvement rather than individual punishment. It should produce owned actions with measurable completion criteria. Repeated incidents without systemic action indicate a governance failure. 9. Engineering Metrics and Product DecisionsMetrics influence behavior, so they must be selected carefully. Useful measures include: | Area | Examples | Interpretation caution |
|---|
| Flow | Lead time, deployment frequency, work-in-progress | Context and batch size matter | | Stability | Change-failure rate, restoration time | Definitions must be consistent | | Quality | Escaped defects, flaky-test rate | Counts alone do not show severity | | Reliability | SLO attainment, incident recurrence | Averages can hide tail behavior | | Maintainability | Time spent on debt, complexity trends | Metrics are proxies, not direct quality | | Customer value | Adoption, task success, retention | Technical delivery is not value by itself |
A metric should have a decision use. If a team tracks deployment frequency but never changes its release process, the measurement is merely reporting. Metrics should be reviewed for unintended consequences. For example, rewarding teams for minimizing incident counts may discourage reporting; rewarding raw code output may encourage unnecessary complexity. Product leaders should triangulate quantitative evidence with customer research, engineering judgment, and qualitative incident learning. 10. Applied Case: Reliable Checkout at Northstar RetailThis is an illustrative case. Northstar Retail operates an online store. Its checkout team uses Scrum, but releases are infrequent because the team has a large integration branch, manual regression testing, and uncertainty about payment failures. A recent release caused duplicate order records for a small number of customers. The organization responded by adding a lengthy approval process, which reduced release frequency without eliminating risk. Background and problemThe Product Goal is to increase completed purchases while protecting customer trust. The technical symptoms are long-lived branches, a fragile end-to-end test suite, inconsistent test environments, limited payment observability, and a database migration that cannot be safely reversed. The product manager and engineering lead agree that “more approval” is not a sufficient control. AnalysisThe team maps the checkout value stream and identifies three major risks: incorrect payment/order state transitions, lack of visibility into external payment responses, and releases with excessive change size. They revise the Definition of Done to require automated tests for payment state transitions, structured correlation identifiers, security checks, operational dashboards, and a documented recovery procedure. The team also distinguishes customer-facing acceptance criteria from engineering constraints. A customer criterion is that a successful payment produces one confirmed order. An engineering criterion is that repeated payment callbacks are handled idempotently. Idempotency means that processing the same valid request more than once does not create an unintended additional business effect. Approach and solutionThe team adopts short-lived branches and merges small changes to trunk. A feature flag controls a new payment workflow. Contract tests validate the interface with the payment provider using a controlled test environment. Component tests cover order and payment state transitions, while only a small number of end-to-end tests cover the complete checkout journey. For observability, each checkout receives a correlation identifier. Dashboards show payment success rate, duplicate-callback errors, latency, and order-confirmation failures. Alerts are linked to customer impact rather than merely infrastructure thresholds. A canary release exposes the new workflow to a small user segment. The release plan specifies that the feature flag can be disabled while the compatible database schema remains in place. The team schedules remediation of the existing migration risk as Product Backlog work. It uses an expand-and-contract migration so old and new application versions can coexist. A security review confirms that logs do not contain card data or authentication secrets. OutcomeAfter several Sprints, Northstar can release smaller changes more frequently. The team detects a payment-provider contract change in a pipeline test before production. During a later canary, elevated confirmation latency causes automatic exposure to stop, and the feature flag is disabled while the team investigates. No duplicate orders are created. The organization retains human release accountability, but approval is based on evidence rather than fear. Learning points- Quality is strengthened by reducing change size and improving feedback, not merely by adding gates.
- Technical debt should be visible in product decisions because it affects customer value and delivery risk.
- Observability must connect system behavior to customer outcomes.
- Feature flags and compatible migrations make recovery more realistic.
- Scrum events are more effective when the Increment is genuinely integrated, tested, and operable.
11. Challenges and LimitationsAgile engineering practices are not cost-free. Automation requires design, maintenance, environments, and skilled people. Poorly designed tests can slow delivery while providing little confidence. Continuous delivery may be inappropriate without additional controls in highly regulated or safety-critical contexts, although frequent integration and automated evidence can still be valuable. Trunk-based development can expose weaknesses in architecture, testing, and team coordination. Feature flags can create confusing behavior and security risks if unmanaged. Observability can produce excessive data and privacy exposure. SLOs can be gamed if teams optimize the measured indicator while degrading unmeasured customer experience. Technical-debt estimates are uncertain because future change is uncertain. These limitations do not invalidate the practices; they require contextual judgment. The appropriate level of automation, release independence, documentation, and approval depends on product criticality, regulation, architecture, customer expectations, and organizational capability. 12. Contemporary DevelopmentsPlatform engineering increasingly provides reusable internal capabilities for CI/CD, identity, observability, deployment, and policy enforcement. The aim is to reduce cognitive load for product teams without hiding important risk. Internal platforms should be treated as products with users, service levels, documentation, and feedback. Software supply-chain security has become more important as products depend on open-source packages, build services, containers, and external actions. Practices include dependency provenance, signed artifacts, protected build pipelines, vulnerability response, and controlled permissions. Artificial intelligence can assist with code suggestions, test generation, log summarization, anomaly detection, and incident analysis. However, generated code and explanations require review. AI systems may reproduce insecure patterns, expose confidential data through inappropriate prompts or integrations, or create false confidence. Governance should define approved tools, data restrictions, review responsibilities, licensing expectations, and auditability. AI can accelerate engineering work, but it does not transfer accountability away from the product team. Best-Practice ChecklistA product team seeking technical excellence should be able to answer “yes” to most of the following questions: - Is the Definition of Done explicit and evidence-based?
- Can the team integrate changes frequently into a healthy mainline?
- Are critical behaviors covered by reliable automated tests?
- Does the pipeline build and promote a controlled artifact?
- Are security, accessibility, and operational requirements included early?
- Can the product be deployed, verified, and recovered safely?
- Are technical debt and operational risks visible in Product Backlog decisions?
- Do dashboards and alerts reveal customer impact?
- Are sensitive logs, secrets, and personal data protected?
- Are engineering metrics used for learning and improvement rather than individual surveillance?
Chapter SummaryTechnical excellence makes Scrum’s Increment meaningful. The Definition of Done establishes a shared quality threshold, while automated testing, continuous integration, and continuous delivery provide rapid evidence about change. Trunk-based development reduces integration risk when combined with small changes, code review, feature flags, and a healthy mainline. Refactoring preserves the ability to change a product, and technical-debt management makes future cost visible in product decisions. Observability connects system behavior to customer outcomes through logs, metrics, traces, service-level indicators, objectives, and error budgets. Secure delivery integrates threat analysis, access control, dependency management, testing, privacy, and governance throughout the lifecycle. Reliable release practices—including progressive delivery, compatible migrations, rollback or roll-forward planning, and incident learning—reduce blast radius and improve recovery. Metrics such as lead time, deployment frequency, change-failure rate, restoration time, and SLO attainment are useful only when definitions are consistent and interpretation is contextual. Ultimately, Agile engineering is not a collection of tools; it is a socio-technical capability that aligns product value, quality, security, and sustainable delivery. Key TermsDefinition of Done: The shared quality state an Increment must reach to be considered complete. Acceptance criteria: Conditions that a particular Product Backlog Item must satisfy. Continuous integration: Frequent integration of small code changes with automated feedback. Continuous delivery: Keeping software in a releasable state through repeatable automation and controls. Continuous deployment: Automatically deploying qualifying changes to production. Trunk-based development: Frequent integration into a shared mainline using small, short-lived branches. Feature flag: A control that separates deployment of code from exposure of functionality. Refactoring: Restructuring code without changing its externally observable behavior. Technical debt: Future cost or constraint created by expedient or suboptimal technical choices. Test automation: Use of software to execute repeatable checks and compare results with expectations. Flaky test: A test whose result changes without a relevant product change. Observability: The ability to infer internal system state from emitted outputs. Service-level indicator (SLI): A measured indicator of a service characteristic. Service-level objective (SLO): A target value or range for an SLI over a defined period. Error budget: The unreliability permitted by an SLO. Canary release: Gradual exposure of a change to a small user or traffic segment. Idempotency: A property whereby repeated processing does not create an unintended additional effect. Progressive delivery: Staged delivery supported by automated verification and controlled exposure. Change-failure rate: The percentage of deployments that result in a defined failure outcome. Software supply-chain security: Protection of code, dependencies, build systems, artifacts, and delivery infrastructure. Review QuestionsShort Answer Questions- What is the difference between the Definition of Done and acceptance criteria?
- Why is continuous integration valuable in a Scrum product team?
- Define technical debt and explain why it should be visible to product managers.
- What are the principal signals used in observability?
- Why may rollback be impossible after a database migration?
Long Answer Questions- Explain how automated testing, continuous integration, and continuous delivery support empirical process control in Scrum.
- Compare trunk-based development with long-lived feature branches, including benefits, risks, and enabling practices.
- Discuss how a product manager should prioritize technical debt alongside customer-facing features.
- Explain how SLOs and error budgets can influence release and investment decisions.
- Evaluate the role of security, privacy, and governance in an Agile engineering lifecycle.
Analytical / Application Questions- A team has high deployment frequency but frequent customer incidents. Diagnose possible weaknesses in its engineering system and propose a prioritized improvement plan.
- Design a release strategy for a payment feature that requires a database migration and depends on an external provider. Specify testing, observability, feature-flag, security, and recovery controls.
- A team’s end-to-end test suite takes four hours and has a 15% flaky-test rate. Analyze the likely effects on delivery behavior and recommend a balanced test and quality strategy.
Multiple Choice Questions with AnswersQuestion 1Which statement best describes the relationship between Scrum and technical excellence? A. Scrum eliminates the need for engineering standards. B. Technical excellence supplies engineering practices that make Scrum increments usable and sustainable. C. Technical excellence is the sole responsibility of operations. D. Scrum requires all testing to occur after the Sprint. Correct Answer: B. Technical excellence supplies engineering practices that make Scrum increments usable and sustainable. Question 2What is the primary purpose of the Definition of Done? A. To describe the general quality state required for a completed Increment. B. To replace all acceptance criteria. C. To list only customer-interface requirements. D. To authorize production deployment automatically. Correct Answer: A. To describe the general quality state required for a completed Increment. Question 3Which practice most directly supports trunk-based development? A. Maintaining large branches until a quarterly release. B. Merging small changes frequently into a shared mainline. C. Disabling automated tests to accelerate merging. D. Separating developers permanently by subsystem. Correct Answer: B. Merging small changes frequently into a shared mainline. Question 4A period contains 200 deployments, of which 8 require rollback. What is the change-failure rate? A. 0.4% B. 2% C. 4% D. 25% Correct Answer: C. 4% Question 5Which statement about continuous delivery is correct? A. It always requires automatic production deployment. B. It keeps software in a releasable state through repeatable practices and controls. C. It means testing is performed only manually. D. It prohibits business or regulatory release decisions. Correct Answer: B. It keeps software in a releasable state through repeatable practices and controls. Question 6Which observability signal is primarily used to follow a request across multiple services? A. Trace B. Source-code comment C. Feature flag D. Backup image Correct Answer: A. Trace Question 7An SLO of 99.9% availability over a 30-day month permits approximately how much unavailable time? A. 4.32 minutes B. 43.2 minutes C. 432 minutes D. 1,440 minutes Correct Answer: B. 43.2 minutes Question 8What is the main purpose of an expand-and-contract database migration? A. To require all application versions to change simultaneously. B. To support compatibility between old and new application versions during migration. C. To eliminate the need for backups. D. To prevent automated testing. Correct Answer: B. To support compatibility between old and new application versions during migration. Question 9Which statement best characterizes refactoring? A. Replacing a product without preserving behavior. B. Adding functionality without changing internal structure. C. Restructuring code while preserving externally observable behavior. D. Deleting tests to reduce technical debt. Correct Answer: C. Restructuring code while preserving externally observable behavior. Question 10Why should feature flags have owners and expiry dates? A. To ensure flags become permanent architecture. B. To prevent conditional complexity and unmanaged operational or security risk. C. To eliminate the need for release monitoring. D. To make all features visible to every user. Correct Answer: B. To prevent conditional complexity and unmanaged operational or security risk.
|