Manual Testing Only
Zero automated tests. The team has no idea where to start and the codebase was not designed for testability.
9 minute read
Zero automated tests. The team has no idea where to start and the codebase was not designed for testability.
9 minute read
Builds and deployments are manual processes. Someone runs a script on their laptop. There is no automated path from commit to production.
11 minute read
The build is automated but deployment is not. Someone must SSH into servers, run scripts, and shepherd each release to production by hand.
11 minute read
Each environment is hand-configured and unique. Nobody knows exactly what is running where. Configuration drift is constant.
9 minute read
Servers are provisioned manually through UIs, making environment creation slow, error-prone, and unrepeatable.
8 minute read
Connection strings, API URLs, and feature flags are baked into the build, requiring a rebuild per environment and meaning the tested artifact is never what gets deployed.
8 minute read
Dev, staging, and production are configured differently, making “passed in staging” provide little confidence about production behavior.
8 minute read
Pipeline definitions are maintained through a UI rather than source control, with no review process, history, or reproducibility.
9 minute read
Credentials live in config files, environment variables set manually, or shared in chat - with no vault, rotation, or audit trail.
9 minute read
Every build starts from scratch, downloading dependencies and recompiling unchanged code on every run.
11 minute read
The team cannot tell if a deployment is healthy. No metrics, no log aggregation, no tracing. Issues are discovered when customers call support.
9 minute read
After deploying, there is no automated verification that the new version is working. The team waits and watches rather than verifying.
11 minute read
Manual committee approval required for every production change. Meetings are weekly. One-line fixes wait alongside major migrations.
11 minute read
Developers throw code over the wall to a separate team responsible for deployment, creating long feedback loops and no shared ownership.
9 minute read
Regulations like SOX, HIPAA, or PCI are interpreted as requiring human review of every change rather than automated controls with audit evidence.
10 minute read
Security reviews happen at the end of development if at all, making vulnerabilities expensive to fix and prone to blocking releases.
10 minute read
A compliance requirement for separation of duties is implemented as organizational walls - developers cannot deploy - instead of automated controls.
10 minute read
The team adopted microservices without a problem that required them. The architecture may be correctly decomposed, but the operational cost far exceeds any benefit.
7 minute read
Multiple services read and write the same tables, making schema changes a multi-team coordination event.
11 minute read
Services exist but the boundaries are wrong. Every business operation requires a synchronous chain across multiple services, and nothing can be deployed independently.
8 minute read
Code that behaves differently based on environment name (if env == ‘production’) is scattered throughout the codebase.
10 minute read
Tests exist but run only when a human remembers to trigger them, making test execution inconsistent and unreliable.
8 minute read
Breaking API changes reach all consumers simultaneously. Teams are afraid to evolve APIs because they do not know who depends on them.
3 minute read
Build outputs are discarded and rebuilt for each environment. Production is not running the artifact that was tested.
3 minute read
Change management overhead is identical for a one-line fix and a major rewrite. The process creates a queue that delays all changes equally.
3 minute read
Changes cannot go to production until multiple services are deployed in a specific order during a coordinated release window.
4 minute read
Application code has a CI/CD pipeline, but ML models and data pipelines are deployed manually or on an ad hoc schedule.
3 minute read
Schema changes require downtime, lock tables, or leave the database in an unknown state when they fail mid-run.
4 minute read
There is no way to deploy code without activating it for users. All deployments are full releases with no controlled rollout.
3 minute read
Production deployments cause anxiety because they frequently fail. The team delays deployments, which increases batch size, which increases risk.
4 minute read
Slow CI servers, poor CLI tools, and no IDE integration. Every step in the development process takes longer than it should.
3 minute read
Deploying happens monthly, quarterly, or less. Each release is a large, risky event that requires war rooms and weekend work.
4 minute read
Test environments are a scarce, contended resource. Provisioning takes days and requires another team’s involvement.
3 minute read
Mainframes or proprietary platforms require custom integration or manual steps. CD practices stop at the boundary of the legacy stack.
3 minute read
A single repository with multiple applications and no selective build tooling. Any commit triggers a full rebuild of everything.
3 minute read
The team cannot prove what version is running in production, who deployed it, or what tests it passed.
3 minute read
The only way to know if a change passes CI is to push it and wait. Broken builds are discovered after commit, not before.
3 minute read
If a deployment breaks production, the only option is a forward fix under pressure. Rolling back has never been practiced or tested.
4 minute read
Adding a build step, updating a deployment config, or changing an environment variable requires filing a ticket with a platform or DevOps team and waiting.
3 minute read
Services in five languages with five build tools and no shared pipeline patterns. Each service is a unique operational snowflake.
3 minute read
A single person coordinates and executes all production releases. Deployments stop when that person is unavailable.
4 minute read
Changes queue for weeks waiting for central security review. Security slows delivery rather than enabling it.
3 minute read
No criteria exist for what a service needs before going live. New services deploy to production with no observability in place.
3 minute read
Pipelines take 30 minutes or more. Developers stop waiting and lose the feedback loop.
3 minute read
A cultural split between shipping speed and production stability. Neither side sees how CD resolves the tension.
3 minute read
Deployments pass every pre-production check but break when they reach production.
3 minute read
Services holding in-memory state drop connections, lose sessions, or cause cache invalidation spikes on every redeployment.
3 minute read
Upstream systems deploy quarterly or downstream consumers require advance notice. External constraints set the team’s release schedule.
3 minute read
Some services have full pipelines and coverage. Others have no tests and are deployed manually. No consistent baseline exists.
3 minute read
Teams cannot provision environments, update configurations, or access infrastructure without filing a ticket and waiting for a separate platform or ops team to act.
3 minute read