DevOps Culture and Delivery Practices Questions
The principles and engineering culture behind modern software delivery: what DevOps means as a shared-ownership way of working and how to ease development and operations friction, adopting DevOps, infrastructure-as-code and GitOps practices across teams, the software development lifecycle and its methodology trade-offs (waterfall, agile, trunk-based development and branching agreements), engineering velocity and how it is measured without perverse incentives, development standards and how they are rolled out, enforced, excepted and justified with a business case, code review policy, turnaround expectations and handling bypasses, governance of shared delivery assets and changes to production automation, and the role of a platform team in enabling faster, safer delivery. Focuses on why teams work this way and how to drive adoption, not on how to build the machinery. Pipeline and build mechanics, deployment and rollback techniques, infrastructure tooling, reliability practice, and incident handling are covered elsewhere.
Your company is forming a platform engineering team to serve dozens of product teams. How would you decide what it owns, how you would treat product teams as customers, and how you would measure whether developers are better off?
Sample Answer
Position. I would run the platform team as a product team with voluntary adoption and the thinnest viable platform: it owns what most teams need and nobody wants to rebuild, and it earns its users. A platform team builds internal services (deployment pipelines, service templates, observability defaults) so that product teams can ship without becoming infrastructure experts. Team Topologies (a book by Skelton and Pais on how to organise software teams) describes this as a compelling internal product, kept thin so it does not become a bloated bottleneck. A paved path is the well-supported, easiest route the platform offers, such as a template that sets up a new service with build, deploy and monitoring already working.
What it owns: three tests
- Do most teams need it?
- Is it undifferentiated, meaning it gives no competitive edge when each team does it differently?
- Does standardizing it reduce the cognitive load on developers (the amount a person must hold in their head to do their job)?
Example: a CI/CD template. Most teams need to build and deploy (yes); no customer picks us because our deploy script is unique (undifferentiated, yes); one template removes dozens of decisions a developer would otherwise make (lower load, yes). It belongs in the platform. A team's checkout pricing logic fails test 1 (only one team needs it) and test 2 (it is the business), so it stays with that team. The thinnest viable platform is therefore a short list like: a service template, a pipeline template, a way to create environments, and default logging and metrics, rather than a catalogue of every tool.
It would start with paved paths for new service scaffolding, CI/CD templates, environment provisioning, and logging and metrics defaults. It would not own product teams' business code or take over their on-call for their own services.
Treating teams as customers
- Interview 8 to 10 product teams in the first month and publish a roadmap built from their pain.
- Name a product manager or lead for the platform; keep a public backlog.
- Service level objectives (SLOs, targets for reliability) for the platform's own services, and a support channel with a response target.
- Adoption is voluntary at first; if teams must be forced, the product is wrong. Interaction mode (how two teams work together) is mostly "X-as-a-Service" (the platform is consumed like a service, with little back-and-forth), with temporary collaboration when a new capability is being built.
Measuring "developers better off"
- Delivery outcomes per team using current DORA (DevOps Research and Assessment) metrics: change lead time (committed to running in production), deployment frequency (how often you deploy), failed deployment recovery time (how long to recover from a deployment that needs immediate intervention), change fail rate (the share of deployments needing immediate intervention). A fifth, deployment rework rate, is the share of deployments that are unplanned because of a production incident. Compare before and after for adopting teams, not individuals.
- Time to first production deploy for a new service (illustrative: three weeks down to days).
- Developer survey on satisfaction and friction, run each quarter.
- Adoption of paved paths, and platform cost per team served.
Avoid counting commits or tickets, which can be gamed.
What would change my call. With few teams (as a rough heuristic of mine, not a published threshold, fewer than about five) a dedicated platform team is overhead; a shared-tooling working group suffices. Very different tech stacks may require two thinner platforms rather than one.
A team has a legitimate need to break an engineering standard (say, a shortcut the standard forbids). How would you design the exception process: who approves, how long it lasts, and how you stop exceptions from becoming the norm?
Sample Answer
Position. An exception process should be quick for the requester, visible to everyone, and shaped so that exceptions expire by default. A standard is a rule the team agreed to follow (say, "no direct database access from services").
1. Request. A short form in the team's repository: the rule, the reason, alternatives tried, the risk, the compensating control (what reduces the risk instead), the owner, and the expiry date.
2. Who approves: by risk tier, one accountable approver each
| Tier | Example | Approver |
|---|---|---|
| Low | style or tooling deviation | requesting team's tech lead; standards owner informed |
| Medium | architecture or process deviation | standards owner (architecture or platform lead) |
| High | security, privacy or compliance | security lead, with the engineering director informed |
3. Duration. Time-boxed, default 90 days (illustrative), renewable at most twice, then the team must fix the gap or the standard changes.
4. Preventing the norm
- A public register of active exceptions with age and owner.
- Auto-expiry: an expired exception reopens as a ticket and defaults to revoked.
- Remediation plan with dated milestones, required at approval.
- Pattern review: when three or more teams request the same exception, the standard is wrong or too costly; change it.
- A quarterly check of the number and age of active exceptions.
Example record (illustrative).
Rule: services must not call the payments database directly
Team: Billing Owner: A. Rivera Tier: High (security)
Reason: reporting migration needs read access for one batch job
Alternatives tried: reporting API (not ready until January)
Risk: unreviewed queries could read card-holder data
Control: read-only replica credentials, access logged
Granted: 2026-11-03 Expires: 2027-02-01 (90 days) Renewals used: 0 of 2
Remediation: move the job to the reporting API by 2027-01-15
What would change my call. In a very small team a lightweight form is enough; in a regulated organization every tier needs a compliance sign-off.
Your org currently deploys by having CI push to production, and someone proposes pull-based GitOps. What changes in ownership, audit and who can change production, and is the move worth it for a 200-engineer company?
Sample Answer
Direct answer
I would say the move is worth it for a 200-engineer company if most workloads run on Kubernetes (a system that runs applications packaged as containers, which are self-contained bundles of a program and what it needs to run, across many machines) and audit or access control matters, and I would roll it out as a staged pilot, not a big bang. GitOps means the desired state of production lives in a Git repository, and an agent inside the environment (Argo CD and Flux are the common open-source ones) continuously pulls that state and makes reality match it. That matching step is called syncing or reconciling: the agent compares what Git says should run with what is running, and fixes any difference. Today CI pushes into production, so CI holds production credentials. In the pull model CI only builds and proposes a change; production changes itself.
What changes
| CI pushes to production (today) | Pull-based GitOps | |
|---|---|---|
| Who can change production | Anyone with CI permissions or the pipeline credentials | Anyone whose change is merged to the config repo branch, plus a small break-glass group (a few named people allowed to change production directly in an emergency, with every use logged and reviewed afterwards) |
| Credentials | CI holds production access | The agent holds access from inside the environment; CI needs no production credentials (it still needs write access to the config repository) |
| Audit | Pipeline logs, which can be scattered or expire | Git history: who proposed, who approved, when |
| Drift (production differing from what was intended) | Silent until someone notices | Detected; reverted automatically only if self-healing (automatic correction of drift) is switched on, otherwise flagged for a person |
| Rollback | Re-run an older pipeline | Revert a commit |
| Ownership | The pipeline owner owns deploys | Service teams own their config; a platform team owns the agent and conventions |
One caveat on the credentials row: it describes the common in-cluster model (Flux, or Argo CD installed in each cluster). Argo CD can also run as one central instance that holds credentials for many remote clusters; that setup still removes production access from CI, but the central instance becomes a high-value credential store, so it needs the same protection CI used to need.
Is it worth it at 200 engineers?
- In favour: removing production credentials from CI is a real security gain, review of config becomes the control, and audit evidence falls out of Git rather than being assembled by hand for each audit.
- Against: it adds a layer to learn and operate; you need a decision about where config lives (usually a separate repo from application code); secrets (passwords and API keys, for example a database password) need a separate solution because they must not sit in Git in plain text, and Git history is permanent; "merged but not yet synced" is a new state engineers must understand; and if you mostly run virtual machines or serverless functions, the tooling fit is weaker.
My recommendation
Yes if the Kubernetes share is high and there is audit pressure. Run a pilot with two or three willing teams for one quarter. Judge it by whether those teams' change lead time stays about the same, whether manual production changes drop, and whether the platform team can support it without becoming the new gate. If fewer than roughly a third of services are on Kubernetes, I would stay with push and tighten credentials instead; between a third and a half, the audit pressure decides, and above half I would adopt it. These thresholds are judgement calls, not research findings. The reasoning: the agent only manages Kubernetes workloads, so the platform team runs two deployment systems whatever the share, and the question is whether the credential and audit gain justifies running the second one. Below about a third that gain covers too few services to repay the operating cost; above half the pull model becomes the main path and push the exception. Two or three teams for a quarter is enough to see several full release cycles and a few incidents while limiting the damage if the conventions turn out wrong.
What would change my call: a compliance mandate for an audit trail (accelerates), or a team of five platform engineers already stretched (delays).
You are asked to drive GitOps adoption across several teams, some of which use a heavily scripted Jenkins setup. How would you sequence the rollout, handle resistance, decide between mandate and platform pull, and show it was worth it?
Sample Answer
Position. I would pull teams toward GitOps with a platform that makes the new path easier, mandate only the outcome (every production change is traceable to Git), and migrate the heavily scripted Jenkins teams last, replacing only the deploy step.
Terms. GitOps means the desired state of a system lives in Git and software agents pull it and reconcile (compare the real system with Git and change it until they match) reality to match. The OpenGitOps principles (v1.0.0) are: declarative (you describe what you want, not the steps); versioned and immutable (every desired state is a Git commit you can look back at or restore); pulled automatically (the agent inside the environment fetches it, rather than a pipeline pushing in); continuously reconciled (the agent keeps checking and correcting). A paved path is the well-supported, easiest route the platform provides. Config drift means the real system has quietly diverged from what was intended, for example after a manual change. Jenkins is an automation server; in many shops its scripted pipelines both build and push deployments. GitOps changes the deploy half: Jenkins can keep building and testing, then commit a new image version to a config repository, and an agent such as Argo CD or Flux (tools that watch a Git repository and apply what is in it to the cluster) applies it.
Tiny before and after: before, the last Jenkins stage runs a script, kubectl set image deployment/web web=shop/web:1.4.2, pushing the change into production. After, that stage instead edits one line in the config repository, image: shop/web:1.4.2, and opens a pull request; once merged, the agent sees the difference and applies it. The build and test stages are untouched.
Sequence
- Pilot with one willing team on a stateless service (one that keeps no data of its own between requests, so it is easy to restart or roll back) with real traffic but moderate risk. Capture the current lead time and the manual steps removed.
- Build the paved path: a template repository (a ready-made starting repo teams copy), a documented promotion flow (dev, staging, production by pull request), and secrets handling decided up front.
- Wave 2: teams who feel the pain (config drift, who-deployed-what questions, audit asks).
- Scripted Jenkins teams last. Their pipelines hide logic (approvals, database migrations, ad-hoc scripts). Inventory it first; move deploy logic to Git, keep the rest in Jenkins, and retire pieces only when the team agrees.
Resistance. "Our Jenkins works" is true. Respond by not asking them to rewrite it, offering a joint migration of the deploy step, and showing the pilot's numbers.
Mandate or pull. Pull first: onboarding support, templates, an engineer embedded for a sprint. Add a dated mandate only for the outcome (audit trail of production changes) once at least half of the teams are on the path, with exceptions for those with documented blockers. If compliance requires it by a date, the mandate comes earlier.
Proving it was worth it. Track DORA's current metrics per team. DORA (DevOps Research and Assessment) defines five, in two groups. Throughput: change lead time (time for a change to go from committed to version control to running in production), deployment frequency (number of deployments over a period, or time between them), failed deployment recovery time (time to recover from a deployment that fails and needs immediate intervention). Instability: change fail rate (ratio of deployments needing immediate intervention, likely a rollback or hotfix), deployment rework rate (ratio of deployments that are unplanned because of a production incident). Add drift incidents and migration effort. Compute each per team before and after, for example change fail rate = failed deployments / total deployments, so 2 of 40 is 5 percent. Illustrative payback: 3 engineer-weeks (120 hours) to migrate a team that deploys 10 times a week and saves 20 minutes each time is about 3.3 hours a week, so 36 weeks to break even on time alone. That is why the case also needs the audit and incident benefits, and why teams with little deployment traffic go last.
How would you make the business case, with numbers, for stricter development standards and a delivery pipeline over the next year? What would you expect to improve, what could get worse, and how would you report honestly on it?
Sample Answer
Direct answer
I would present it as an investment with three kinds of return, a year-one dip that I state up front, and one line item I flag as the least certain. Standards (agreed rules for how code is written and reviewed) plus a delivery pipeline (the automated path from a merged change to production, often called CI/CD, continuous integration and continuous delivery) cost real money in year one. They pay back mainly through fewer failed releases, less manual release work, and fewer customer-facing incidents. The honest version of the case shows when it breaks even, and what happens if the shakiest assumption turns out wrong.
Worked example (all inputs illustrative, replace them with your own baseline)
Assume 120 engineers, a loaded cost (salary plus employer overheads such as benefits, equipment and office) of $150,000 per engineer per year (about $83 per hour: 150,000 / 1,800 working hours = 83.33), and 1,500 production deployments per year.
Costs
- Two platform engineers to build and run it: 2 x $150,000 = $300,000
- Tooling and licences: $60,000
- Adoption drag in the first half-year (3% of every engineer's time): 120 x $150,000 x 3% x 0.5 = $270,000
- Year-one cost: $630,000. Year two has no adoption drag: $360,000.
Benefits at full effect
- Fewer failed deployments. Change fail rate (the share of deployments that need immediate intervention, one of the DORA delivery metrics from DevOps Research and Assessment) falls from 20% to 12%. That is 300 failures down to 180, so 120 avoided. Each costs about 4 people x 5 hours = 20 hours (an illustrative assumption; use your own incident records), so 120 x 20 = 2,400 hours, about $200,000.
- Less manual release work. Each release drops from 3 hours of hand steps to 0.5 hours: 1,500 x 2.5 = 3,750 hours, about $312,500.
- Fewer customer-facing incidents. Suppose (an illustrative guess to be checked against your incident history) 25% of avoided failures would have become customer-facing incidents at $20,000 each: 120 x 25% x $20,000 = $600,000.
Full-effect benefit is $1,112,500 per year. Assume only half is realised in year one (teams adopt gradually): $556,250.
| Year 1 | Year 2 | |
|---|---|---|
| Benefit | $556,250 | $1,112,500 |
| Cost | $630,000 | $360,000 |
| Net | -$73,750 | +$752,500 |
A note on the hour-based lines: avoided hours are freed capacity, not cash. They turn into savings only if the time is redirected to other valuable work or headcount growth is avoided, so I would present them that way rather than as money returned to the budget.
The least certain line. The incident term is $600,000 of the $1,112,500, and it rests on a guess about incident cost. Drop it and the table becomes year one -$373,750, year two +$152,500, and about -$221,250 after two years. So I would say plainly: the hour-based savings alone (about $512,500 a year at full effect, and only capacity unless redirected) do not repay this in two years at this size, and the cash case without incident avoidance is weaker still; the case depends on incident avoidance, which I would validate from our own incident history before committing.
One basis caveat on the table above. It nets the adoption drag ($270,000 of engineers' time) against the benefit hours, so it is a capacity view: the drag and the freed hours are both time, not budget cash. On a cash-only view (spend of $360,000 a year against the one line that is real money, the avoided incident cost, at half effect in year one) the result is year one $300,000 - $360,000 = -$60,000, year two $600,000 - $360,000 = +$240,000, about +$180,000 over two years. The conclusion is the same either way: it stands or falls on incident avoidance, and the hour-based lines are upside to be redirected, not repayment. Also, every benefit line above comes from the pipeline; the standards half of the investment (review rules, conventions) is not priced here. I would say so and carry it as unquantified benefit (review consistency, onboarding time) rather than invent a figure.
What I expect to improve
- Change fail rate and deployment rework rate (unplanned deployments caused by a production problem) should drop.
- Change lead time (commit to production) and deployment frequency should improve once manual steps go.
- Review consistency and onboarding time for new engineers.
What could get worse
- Individual change lead time can rise at first, because gates and new conventions add steps.
- Adoption drag: some engineers lose focus time while learning.
- Workarounds: if the pipeline is slow or rigid, people route around it, and the dashboard then flatters reality.
- Standards ossify (harden): rules nobody revisits keep being followed as ritual, without anyone remembering their purpose.
Reporting honestly
- Record the baseline for each measure before starting, and write the targets down before seeing results.
- Report leading indicators (percentage of services on the pipeline, bypass count) beside outcomes (the five DORA metrics: change lead time, deployment frequency, failed deployment recovery time (how long it takes to recover from a deployment that needs immediate intervention), change fail rate, deployment rework rate).
- Say when a metric moved for other reasons (a big launch, a staffing change).
- Publish misses with the same prominence as wins, and set a quarterly checkpoint where the sponsor (the executive who funds and backs the work) can stop or resize the investment.
- Use DORA metrics for team learning, not to rank teams, since ranking invites gaming.
Unlock Full Question Bank
Get access to all 9 DevOps Culture and Delivery Practices interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.