Why DevOps efforts stall

DevOps transformations often stumble not because of technology, but because of how teams structure their work. Antipatterns emerge when teams chase short-term wins, focus exclusively on tooling, and neglect the people and processes that make those tools effective. As Martin Fowler has noted, patterns must recur across many situations to be worth naming — an antipattern is essentially a one-off solution incorrectly generalized to other contexts.

Cloud native strategies, particularly those built around declarative workflows and automation, offer a path away from these dead ends. By treating pipelines and infrastructure as code, teams can leverage familiar collaboration mechanisms like pull requests and version control to keep delivery flowing.

GitHub is a platform for developers, and not just from a productivity perspective—for happiness and our holistic experience. When you are happy and can get in a state of flow…and stay there because you don’t have to context switch between cumbersome tooling and manual actions, you tap into your true potential and productivity naturally ensues.

- Brent Foster, VP TD Bank Group Software Engineering Practice Owner

Team structures that become bottlenecks

A common failure mode starts with good intentions: a skilled DevOps team forms to drive transformation, but as its model spreads across the organization, the team becomes a choke point. Instead of enabling innovation, it gates it, consolidating knowledge around configuration, monitoring, and deployment into a single group that must approve every change.

The same problem appears when cloud teams run infrastructure-as-code with the same rigid processes as legacy infrastructure teams. The result is identical delays and bottlenecks, just with newer technology underneath. When a small team is responsible for approving work across domains it doesn't fully understand, throughput suffers and risk aversion grows.

The fix lies in moving from a centralized approval model to one where pipelines are expressed declaratively "as code." When CI/CD workflows live in repositories, they inherit the same collaboration features as application code. Teams can propose changes via pull requests, see version history, and make updates without routing everything through one group. The exemplar DevOps team shifts from being a decision point to being a steward of an open source-style community where many teams contribute to shared workflows.

Moving testing and security left — for real

"Shift left" gets cited often, but it remains one of the most effective patterns available. Infrequent testing, security reviews, and governance checks that wait until the end of delivery are harder to execute and slow everything down. The principle is simple: if a process is difficult, push it earlier in the pipeline and automate it within continuous integration.

Security is a good place to start. Common OWASP vulnerability classes can be caught directly in GitHub workflows without forcing developers out of their flow. Automated guardrails replace manual review cycles that don't scale. The same logic applies to testing. Unit tests introduce quality control the moment the first line of new code is written — provided the testing tools are properly integrated with the code repository and loosely coupled to it.

Governance is the piece teams often overlook. When auditability, separation of duties, and shared responsibility are treated as external concerns that live outside the pipeline, the flow of value halts as soon as delivery touches the rest of the organization. Start by mapping existing controls to tools teams already use — code review via pull requests, for example — against frameworks like NIST Cybersecurity. Many compliance requirements are already satisfied by routine developer workflow.

Tooling without people

The most common and hardest-to-diagnose antipattern is focusing on tools while leaving team dynamics untouched. An organization can buy the best tooling available, but if team structures still resemble waterfall-era hierarchies, responsibilities blur, decision-making suffers, and people interfere across roles unnecessarily.

The useful frame here is Conway's Law, the observation that software architecture mirrors the communication structure of the team that built it. Siloed, multilayer team communication produces systems with the same architecture. Fowler's guidance is to not fight this dynamic — instead, design the communication patterns you actually want to have, then shape pipelines around them.

For example, when security and development teams must coordinate on open source dependencies, the communication channel can be optimized with Dependabot and pull requests. Security findings arrive as code changes developers already know how to review, and issues surface much earlier — without disrupting either team's flow. That is a better outcome than a complex chain of handoffs between separate groups.

To sustain this, measure what matters to developer productivity and wellbeing. The SPACE framework, used at GitHub, offers a way to gauge perceived productivity, efficiency, and flow. Applied to DevOps pipelines, it exposes how many teams and handoffs are involved in a given process, making it possible to reduce toil and build an environment where engineers can focus on valuable work.

The path forward

DevOps succeeds when it addresses people, process, and tooling together. Streamlining team structures with declarative workflows, pushing testing and governance into earlier stages of the pipeline, and building communication channels that respect how developers actually work all contribute to a healthier delivery environment. These are not one-off fixes — they are repeatable patterns that can scale across an organization and sustain developer productivity and satisfaction.