"Shift left" has been the security industry's favourite phrase for years. The idea is simple and correct: find vulnerabilities earlier in the development lifecycle, where they're cheaper and easier to fix. In practice, most shift-left programmes create friction, resentment, and a growing backlog of SAST findings that nobody trusts.
The problem isn't shifting left. It's how we do it — and who carries the weight when something goes wrong.
I've embedded into multiple engineering organisations as an AppSec engineer. The pattern is consistent: a security scanner gets added to the CI/CD pipeline, it starts blocking merges, developers start working around it, and within six months it's either disabled or universally ignored. The security team calls this "developer resistance." The developers call it "security slowing us down." Both are right, and both are missing the point.
The real failure is signal quality. When a SAST tool fires 200 findings on a single PR — with a mix of critical issues, false positives, and informational noise — developers learn to ignore all of them. You haven't shifted security left. You've added a step that nobody trusts.
Before adding any security gate to a pipeline, answer this question: what percentage of findings from this tool are genuine, actionable vulnerabilities in this codebase?
If the answer is below 40%, the gate will fail. Developers are rational — if they learn that most security findings are false positives, they'll treat all security findings as false positives. That's not resistance. That's pattern recognition.
Security teams often talk about making developers "accountable" for security. This framing is counterproductive. Accountability without capability is just blame with extra steps.
Developers will fix security issues when they understand them, have the tools to fix them, and aren't blocked by ambiguous guidance. The shift-left programmes that actually work treat developers as security partners, not security liability owners.
Practically, this means: when a security finding blocks a merge, the blocking message includes not just the vulnerability description but a concrete remediation code example. One extra paragraph of guidance reduces the time-to-fix dramatically and builds the muscle memory that makes the next fix faster.
The most effective structural change I've seen in large engineering organisations is the security champion programme. One engineer per squad — not a security specialist, but a developer with a security interest — who acts as a first-line security resource for their team.
Champions don't replace security reviews. They reduce the load on central security teams and create distributed security competence. A team with a security champion files clearer bug reports, asks better questions during threat modelling, and catches obvious issues before they reach code review.
The key to making champion programmes work: give them real tools and recognition. Access to security training, a direct channel to the AppSec team, and visible acknowledgement of their contribution. Champions who feel like they're doing extra work for no benefit don't stay champions long.
Most security programmes measure what's easy to count: number of vulnerabilities found, number of scans run, percentage of code covered. These metrics are fine for reporting up. They're useless for improving the programme.
The metrics that actually reflect whether shift-left is working:
After several years embedding security into engineering teams, the interventions that consistently produce results are not the ones that look most impressive in a security programme report.
Shifting left works when it makes developers' lives better, not harder. Security gates that block without explaining, scanners that cry wolf, and programmes that treat developers as the problem — these don't shift security left. They push security underground.
Build the trust first. The gates come after.