Concepts
What you will learn: Follow a feature from an unclear request through design, implementation, review, release and operation. A cancellation example shows how delivery practices, acceptance rules and feedback affect risk.
Before you start: Assume a user, a business outcome and a software change. A requirement states needed behavior or quality; an acceptance criterion is a verifiable example of when behavior is acceptable. Scrum and Kanban organize work; they are not programming tools. Read the cards in order if and Agile terms are new.
Select a term with a dotted underline for its meaning, then continue reading from the same place.
#SDLC: match the lifecycle to the risk
Coding sits within a broader lifecycle: understand needs, design, implement, verify, deploy, operate and improve. That is the . The useful question is how to expose wrong assumptions early and deliver operable value.
| Model | How it works | Fit and limitations |
|---|---|---|
| Waterfall | Sequential phases with approved deliverables | Stable requirements and explicit approvals; late feedback makes correction expensive |
| Iterative | Revisit and improve a solution in cycles | Progressive learning; each cycle need not add a feature |
| Incremental | Deliver usable portions | Earlier value; requires vertical slices spanning data, and tests |
| Agile | Frequent delivery, collaboration and adaptation | Uncertain, changing needs; requires engineering discipline and communication |
A process can be both iterative and incremental, and Agile delivery can include formal approvals. Match feedback gates to risk rather than applying identical ceremony to every change.
#The Agile manifesto in practical terms
Agile does not eliminate plans or documentation. Its four values guide trade-offs:
- Let people collaborate to solve problems, supported by tools and process.
- Use working software to test value; documents explain and support it but do not establish usefulness.
- Work with customers as understanding evolves; a contract cannot replace that conversation.
- Revise plans when evidence changes; planning is continuous.
In practice: deliver a small slice, demonstrate it, gather feedback, measure outcomes and decide what comes next. Technical excellence and tests make adaptation safer. More meetings or daily priority changes do not establish agility. Reference: Agile manifesto.
#Scrum accountabilities, events and artifacts
Scrum provides a cadence for inspection and adaptation around a goal. The Scrum Team has a Product Owner accountable for maximizing value and ordering the Product Backlog, a Scrum Master accountable for Scrum's effectiveness, and Developers accountable for planning the work, quality and the Increment. Project manager is not a formal Scrum accountability, although an organization may employ one.
| Event | Purpose |
|---|---|
| Sprint | A fixed period of one month or less containing the other events |
| Sprint Planning | Establish why the Sprint matters, what is feasible and how work begins |
| Daily Scrum | Developers inspect progress toward the Sprint Goal and adapt their plan; 15 minutes |
| Sprint Review | The team and stakeholders inspect outcomes and adapt future work |
| Retrospective | Improve working practices, quality and effectiveness |
| Artifact | Commitment |
|---|---|
| Product Backlog | Product Goal |
| Sprint Backlog | Sprint Goal |
| Increment | Definition of Done |
Refinement is ongoing activity, not an additional formal event. The Review is not a release gate; a Done Increment can ship before Sprint end. Do not turn the Daily into a management status report. Reference: Scrum Guide 2020.
#Scrum, Kanban, Ready and Done
If a team starts more than it finishes, a board alone will not fix delivery. Kanban makes workflow and policies explicit and controls work in progress, allowing new work to be pulled when capacity exists.
| Dimension | Scrum | Kanban |
|---|---|---|
| Planning | Sprint Goal and cadence | Continuous flow with policy-based replenishment |
| Roles | Defined accountabilities | Does not prescribe Scrum's accountabilities |
| Work in progress | limits can be added | Controlling WIP is central |
| Measurement | Goal progress and outcomes; velocity is optional | Cycle time, , WIP and work item age |
| Change | Protect the Sprint Goal and negotiate scope | Pull the next priority when capacity exists |
Definition of Ready: an optional team agreement, not a formal Scrum element. It might require a clear purpose, example acceptance criteria and known dependencies. Avoid turning it into a handoff gate that prevents learning.
Definition of Done: shared Increment quality criteria covering appropriate tests, review, risk-based security checks, documentation, observability and deployment readiness. Acceptance criteria describe one item's behavior; DoD applies across the work.
Cycle time runs from work start to finish; lead time may start at request, depending on team definitions. Throughput is completed items per period; work item age measures unfinished work. Little's Law states average WIP = throughput rate × average cycle time for a stable system with consistent boundaries and units; it does not promise one item's completion date.
#Requirements, user stories and acceptance criteria
- A request for discounts is underspecified. Ask about eligibility, rate, maximum amount and combination with other discounts.
- A concrete acceptance example: an eligible customer with a 200 basket and a 10% discount, without extra conditions, gets 20 off and pays 180. Add ineligible and cap-boundary cases.
- Acceptance criteria describe the behavior proving completion. Numeric examples expose disagreement before implementation and support clear verification.
Before choosing an endpoint or database, identify who needs what and why. A functional requirement specifies behavior such as cancelling an order. A quality attribute makes qualities such as , availability or accessibility measurable; “fast” alone is not verifiable.
A user story emphasizes a user and value: “As a customer, I want to cancel an order before shipment so I do not wait for an unwanted product.” Not every task needs that template; a spike or platform upgrade can use a direct description. Slice work vertically by value rather than delivering a database Sprint followed by a Sprint.
Story: Customer cancels an order before dispatch.
(1) Given a paid order that has not been dispatched
When its owner cancels it
Then the order is cancelled and one refund request is recorded
(2) Given an order already dispatched
When its owner requests cancellation
Then cancellation is rejected without a refund request
(3) Quality target for this example:
p95 cancellation API latency below 300 ms at 100 requests/second
measured in a production-like load test, excluding refund settlement
- (1) Given defines context, When an action, and Then an observable outcome. Repeated cancellation must not request another refund.
- (2) Include rejection behavior; also discuss ownership checks and races with dispatch.
- (3) These are illustrative agreement values, not benchmarks or universal recommendations. Specify workload, scope and measurement.
Confirm examples with product, QA and stakeholders; Given/When/Then does not require a tool. Resolve conflicting requirements before implementation.
#Estimation: size and uncertainty, not a promise
People need forecasts to plan, but an exact number before understanding the work hides uncertainty. Story points are a team-agreed relative measure of size, complexity and uncertainty, not hours. T-shirt sizes such as S, M and L help early grouping.
- Choose a shared reference item and discuss assumptions and dependencies.
- In planning poker, estimate independently and reveal together; differences expose missing information.
- Split large items and use a timeboxed spike for a specific technical question.
- Provide a range with confidence and assumptions, then update it using observed data.
Do not convert points into hours or compare velocity across teams. Calendar time includes queues, review and approvals. Use your team's , cycle-time distributions and history for probabilistic forecasting, explaining that history is not a guarantee when the work changes.
#Design documents and ADRs: record the reasoning
A consequential technical choice deserves review before thousands of lines depend on it. A design document explains the problem, requirements, alternatives, data flow, risks and rollout. A compact records one decision, its context and consequences so future readers can revisit it with evidence.
Design doc
Problem and desired outcome:
Scope and non-goals:
Functional requirements and measurable quality attributes:
Options considered and trade-offs:
Proposed interfaces, data ownership and failure behavior:
Security, observability and operating cost:
Migration, rollout, rollback and validation:
Open questions, owner and review date:
ADR-007: Record invoice notifications in a transactional outbox
Status: Accepted
Context: A crash between database commit and send can lose a notification.
Decision: Commit the notification record with the invoice transaction.
Alternatives: Direct send; distributed transaction.
Consequences: Eventual delivery, duplicate handling and dispatcher operations.
Revisit when: Delivery requirements or transaction boundaries change.
Use the smallest document appropriate to the decision. Link the , diagrams and measurements, and explain rejected alternatives. If a decision changes, supersede the old ADR with a new one rather than erasing history. Avoid duplicating implementation details that will drift from code.
#Code review as actionable feedback
Review finds risks and shares knowledge, but does not replace automated checks or design review. A small with a clear purpose is easier to review well. Authors explain the problem, behavior change, validation and risks, then review their own diff first.
- Understand requirements and boundaries, then consider the user-visible behavior.
- Check correctness, failure paths, security, data compatibility and tests.
- Separate blockers, suggestions and nits; automate mechanical formatting rules.
- Give a checkable reason: “This retry could duplicate a charge; can we preserve its key?”
- Agree and record the resolution, inspect the final diff and run required checks.
If discussion stalls, talk briefly and summarize the decision in writing. Evaluate code rather than people, and distinguish preference from correctness. Review affects flow; reserve capacity to clear queues instead of continually starting more work.
#Make technical debt visible and actionable
Technical debt is future cost created by design or implementation choices made for immediate benefit or under incomplete knowledge. Not every disliked piece of code is debt. Debt may be deliberate and measured, reckless, or discovered through later learning. Useful categories include design, tests, dependencies, operability and documentation.
Debt item: Duplicate invoice status mapping
Evidence: Three recent changes required edits in four places.
Impact: Inconsistent paid status and additional review effort.
Principal: Centralize mapping behind one adapter and characterize behavior.
Interest: Repeated changes and reconciliation incidents.
Owner: Invoicing team
Priority trigger: Before adding another invoice provider
Success measure: One mapping boundary and verified contract examples
Connect debt to change cost or demonstrated risk, with an owner and review date. Pay it down alongside related features or through agreed dedicated work. Compare repair cost with benefit; a rewrite may introduce more risk than the debt. “Clean it up later” needs a recorded item and priority.
#Trunk-based development and feature flags
Long-lived branches delay integration and increase conflicts. Trunk-based development integrates small changes frequently into a deployable trunk, supported by fast . It does not require direct pushes: short-lived branches and review can support it.
// (1) Evaluate a server-controlled flag for this request/cohort.
bool enabled = featureFlags.IsEnabled("new-invoice-view", userId);
var view = enabled
? await newInvoices.GetAsync(id, ct)
: await currentInvoices.GetAsync(id, ct); // (2)
- (1) featureFlags illustrates your own flag-service interface; stable cohort assignment helps rollout and comparison.
- (2) Keep the previous path until rollout completes. Test both paths and data compatibility; a flag does not undo schemas or completed side effects.
Deployment moves a version into an environment; release exposes it to users. Flags separate the two and support canaries and kill switches. Assign an owner, removal date and safe default, and never substitute a flag for authorization. Flag combinations increase test cost; remove obsolete paths after stabilization.
#DORA metrics measure the delivery system
Individual commit counts or story points do not measure value. examines delivery speed and safety at the application or service level to expose constraints. The historical four metrics remain common interview material; the current model has five, adding deployment rework rate.
| Metric | Meaning |
|---|---|
| Change lead time | Time from commit to production deployment |
| Deployment frequency | Deployments per period or time between deployments |
| Failed deployment recovery time | Time to recover from a failed deployment requiring immediate intervention |
| Change fail rate | Proportion of deployments requiring immediate intervention, such as rollback or hotfix |
| Deployment rework rate | Proportion of deployments that are unplanned because of production incidents |
MTTR is an older, broader and potentially ambiguous term; specify definitions rather than mixing all outages with deployment failures. Measure consistent boundaries and inspect distributions and trends. Avoid ranking teams or people, or creating artificial deployments to raise counts. Pair these signals with reliability, user satisfaction and product outcomes. Reference: Current DORA definitions.
#Incidents, stakeholder alignment and living documentation
During an incident, reduce user impact and restore service first. Assign severity, an incident commander to coordinate, responders to investigate and execute, and a communications owner. Record a timeline and decisions. Give regular updates covering known impact, mitigation and the next update time; do not invent a recovery ETA.
- Detect and triage: establish impact and escalate early.
- Mitigate: safely roll back, disable a flag or shed load; restoration can precede full diagnosis.
- Recover and verify: check user journeys and data, not only a health endpoint.
- Review: record impact, timeline, contributing factors, detection gaps and successes, then assign measurable actions with owners and dates.
Blameless analysis asks why decisions made sense with information available at the time and improves system conditions; accountability and follow-through still matter. “An engineer pressed the wrong button” is insufficient analysis.
With product and stakeholders, clarify outcomes, offer options with costs and risks, and agree scope, quality and decision boundaries. If a deadline is fixed, negotiate scope and rollout rather than concealing risk until the final day.
Documentation stays useful when it has an owner, audience and question to answer. Store runbooks and with code and update them in the behavior-changing . Generate references from contracts, check snippets and links in , and rehearse runbooks. Avoid duplicating one source of truth in three places.
Interview questions
No results
Check your reasoning
Why does this choice fit? When would it fail? What changes under higher load or a dependency failure?
27.1What is the SDLC?Junior
I see the software development lifecycle as the activities needed to turn a need into a useful, operated system: understanding requirements, designing, implementing, verifying, deploying and learning from production. Different models organize those activities differently. A sequential approach emphasizes phase transitions, while iterative and incremental approaches create repeated feedback and smaller deliveries. As a developer, I contribute beyond coding by clarifying acceptance criteria, considering deployment and failure behavior, and checking whether the delivered change achieved its purpose.
27.2What does Agile mean to you?Junior
I understand Agile as delivering useful software in small steps, collaborating closely and adapting plans as evidence changes. It does not mean avoiding documentation, design or commitments. I still want clear goals, quality expectations and realistic forecasts, but I test assumptions early rather than wait for a large final handoff. In practice, I would demonstrate a small working slice, get feedback from users or product, and use that learning to decide the next step.
27.3What are Scrum's accountabilities?Junior
I distinguish three Scrum accountabilities. The Product Owner is accountable for maximizing value and effective Product Backlog management. The Scrum Master is accountable for establishing Scrum and improving the team's effectiveness. Developers create and adapt the delivery plan, build the Increment and uphold quality through the Definition of Done. These are accountabilities within one Scrum Team, not a chain where one person assigns every developer's tasks. Other organizational roles may exist outside that framework.
27.4What is the purpose of the Daily Scrum?Junior
I use the Daily Scrum to inspect progress toward the Sprint Goal and adapt the Developers' plan for the next day. It is a fifteen-minute event, not a status presentation to a manager. The team can choose a format that exposes progress, dependencies and impediments. If a detailed debugging discussion is needed, the relevant people continue afterwards. A useful Daily changes coordination or decisions; simply reciting yesterday's tasks does not achieve its purpose.
27.5How do Scrum and Kanban differ?Mid
I describe Scrum as a framework with defined accountabilities, artifacts and a Sprint cadence focused on a goal. Kanban focuses on managing flow through an explicit workflow, controlling work in progress and pulling new work when capacity exists. It uses signals such as cycle time, and work item age. They can be combined: a Scrum team can use Kanban policies within its Sprint. I choose practices based on the team's work and constraints rather than treating the names as competing brands.
27.6Why limit work in progress?Mid
I limit work in progress to reduce queues and context switching and to make bottlenecks visible. If review is full, starting another feature usually adds inventory rather than increasing delivery. I would help review, test or unblock existing work before pulling something new. The limit is a policy to improve flow, not a personal utilization target. I watch cycle time, aging work and to see whether the policy helps, and adjust it through team discussion.
27.7What is the difference between acceptance criteria and Definition of Done?Junior
I use acceptance criteria to describe the observable behavior required for a particular backlog item, such as rejecting cancellation after dispatch. The Definition of Done is a shared quality standard for the Increment, covering the engineering work needed across items. A feature can satisfy its example scenarios but still fail Done because required checks or documentation are missing. A Definition of Ready is an optional team agreement for starting work; it is not a mandatory Scrum element.
27.8What makes a good user story?Junior
I want a story to explain who needs something, what outcome they need and why it matters. It should be small enough to discuss, estimate and verify, with concrete acceptance examples and known dependencies. I prefer a vertical slice that delivers observable value over separate database and stories with no usable result. The template is only a conversation starter. For a technical spike or infrastructure task, a direct goal and success criteria may be clearer than inventing a fictional user.
27.9How do you make a quality requirement testable?Mid
I replace vague language with a measurable scenario. For performance, I would agree the operation, workload, environment, percentile and response boundary, such as whether an external settlement is included. For reliability, I would define the service objective and measurement window. I also ask what trade-offs are acceptable because lower , stronger consistency and lower cost may conflict. I record the agreed target and validation method so product, engineering and operations can assess the same evidence.
27.10What are story points, and why not use them to compare teams?Mid
I treat story points as a relative estimate using a team's shared reference items. They help discuss size, complexity and uncertainty, but they are not an hour conversion or an individual productivity measure. Two teams can assign different points to the same work because their references and context differ. Comparing their velocity encourages inflation without improving outcomes. For forecasting, I use the team's own history with explicit assumptions and focus on usable results and delivery flow.
27.11How do you estimate work with substantial uncertainty?Mid
I first name the unknowns and separate implementation effort from dependencies and waiting time. I may run a timeboxed spike if one question materially changes the approach, then split the work into smaller slices. I present a range with assumptions and confidence rather than a precise promise. As evidence arrives, I update the forecast and explain what changed. Independent estimates and planning poker can help expose different assumptions before the team converges on a useful forecast.
27.12How would you respond to a fixed deadline and too much scope?Senior
I make the constraint visible early and ask which outcome is essential by that date. I offer concrete options: a smaller vertical slice, a staged rollout, deferred optional behavior or a changed date, each with risks and dependencies. I do not silently trade away data integrity or essential safety checks. Once a choice is agreed, I document scope and acceptance criteria and track leading risks. Regular evidence-based updates give stakeholders time to change course before the deadline becomes a crisis.
27.13When would you write an ADR instead of a large design document?Mid
I write an when one consequential decision needs a durable explanation, such as choosing an over a direct external call. I capture context, alternatives, the decision and consequences. A larger design document is useful when reviewers need to evaluate a whole solution, including interfaces, data ownership, failure behavior and rollout. The documents can link to each other. If a decision changes, I supersede the ADR so future readers can understand the historical constraints.
27.14How do you conduct a useful code review?Mid
I start by understanding the problem and the expected behavior, then inspect correctness, failure paths, security, data compatibility and test coverage. I explain why a concern matters and distinguish blocking issues from suggestions or preferences. Mechanical style belongs in automated tooling where possible. As an author, I keep changes focused, provide validation evidence and review my own diff first. If discussion becomes circular, I suggest a short conversation and record the resolution for future reviewers.
27.15How do you prioritize technical debt with product work?Senior
I describe debt through evidence and business impact rather than aesthetic preference. I record the affected area, recurring cost or risk, repair options and an owner. Then I compare it with product work, often paying it down when a related feature would otherwise incur the same cost again. Some issues justify dedicated capacity because they threaten reliability or delivery. I define a success measure and revisit it after the change so we can see whether the investment reduced actual friction.
27.16How do feature flags support trunk-based development?Mid
I use to integrate small changes into trunk while controlling when users see them. That separates deployment from release and supports gradual exposure or a kill switch. It works only with fast checks, compatible data changes and testing of relevant flag states. I assign each temporary flag an owner and removal plan because stale paths add complexity. Disabling a flag does not reverse completed side effects, and it must never substitute for server-side authorization.
27.17Which DORA metrics would you track?Senior
I track change lead time, deployment frequency, failed deployment recovery time and change fail rate, plus deployment rework rate in the current five-metric model. I define each consistently at the application or service level and inspect trends and distributions over time. These signals describe the delivery system, not individual productivity. I use them to locate constraints, such as review queues or fragile releases, and pair them with reliability and product outcomes so improving a number does not replace improving the service.
27.18What do you do first during a production incident?Senior
I establish user impact and severity, bring in the right responders and make coordination explicit. I prioritize a safe mitigation, such as rolling back a recent change or disabling a feature, while preserving useful evidence. Someone owns communication and gives factual updates with the next update time. I avoid several people making uncoordinated changes. After mitigation, I verify user journeys and data integrity, then continue diagnosis and capture the timeline for a later learning review.
27.19What makes a postmortem blameless and useful?Senior
I want the review to explain how system conditions and available information shaped decisions. Blameless does not remove accountability; it makes it safer to share evidence and identify contributing factors. I include impact, a timeline, detection gaps, what helped and where defenses failed. Actions have owners, dates and observable success criteria. “Be more careful” is weak compared with a tested guardrail or better rollback capability. I also follow up, because an excellent document without completed improvements changes little.
27.20How do you keep documentation accurate?Mid
I keep documentation close to the source it describes and update it in the same when behavior changes. Each document has an audience and purpose, such as explaining a decision or guiding incident recovery. I generate reference material from contracts where practical, validate links and executable examples, and periodically rehearse runbooks. I avoid copying the same facts into several documents. During review, I check whether commands, configuration keys and examples still match the implementation rather than just whether the prose reads well.
Test yourself
Quiz answers and completed-topic marks are saved in this browser; they do not sync across devices.
What does Agile imply about plans and documentation?
Which is NOT a mandatory Scrum element?
The review column is at its WIP limit. What usually helps flow?
Which statement is a verifiable quality requirement?
Why should estimates often be ranges?
What should an ADR preserve?
Which statement about trunk-based development is correct?
What does disabling a feature flag guarantee?
The current five-metric DORA model adds which metric to the historical four?
Which postmortem action is strongest?