What to Learn When AI Can Already Write the Code
Career

What to Learn When AI Can Already Write the Code

The useful question isn't what AI can do — it's what it structurally cannot. Veracode ran 100+ models across 80 tasks and 45% of the output carried an OWASP Top 10 vulnerability, with larger models no better than small ones. That failure has a shape, and the shape tells you what to learn.

Published June 21, 20269 min readUpdated Jun 21, 2026

Written by · Full-Stack Agentic AI Software Engineer — AI Agents, Automation & Revenue Systems for GTM/RevOps teams

In brief

If AI can already write working code, what should a software engineer actually learn now?

Learn the things that fail in ways a model cannot see. Veracode's 2025 benchmark ran more than 100 LLMs across 80 real coding tasks and found 45% of output introduced an OWASP Top 10 vulnerability — 86% failure on cross-site scripting, 72% on Java overall — and, critically, larger and newer models were not better. That is not a capability gap that scales away; it is structural, because the model is optimizing for code that looks correct rather than code that is safe in a context it cannot observe. The same shape recurs everywhere: DORA 2025 found AI adoption raising throughput while delivery stability kept falling, and GitClear measured duplication rising as refactoring collapsed. So the durable skills are the ones that operate on context the model does not have — system-level reasoning, threat modelling, reading unfamiliar code, verification, and deciding what should exist at all.

  • 45% of AI-generated code in Veracode's benchmark carried an OWASP Top 10 vulnerability, and model size did not help — evidence the gap is structural, not a version away from being fixed
  • The unifying pattern across every study is the same: models are strong at local plausibility and weak at global correctness, because global correctness depends on context outside the prompt
  • Verification is the skill that appreciates fastest, since generation volume rose while stability fell — someone has to be able to tell good output from convincing output
  • Reading unfamiliar code is now more valuable than writing familiar code, and it is the skill most engineers have never deliberately practised
  • The strategic skill is deciding what to build, because it is the only one where being wrong is expensive and no amount of generation speed rescues you

Evidence notes

Veracode 2025 GenAI Code Security Report

Code produced by more than 100 LLMs across 80 real-world coding tasks. 45% of samples failed security testing by introducing an OWASP Top 10 vulnerability. Cross-site scripting failed 86% of the time and log injection 88%; Java was the worst language at a 72% failure rate. AI code was 2.74x more likely to introduce XSS, 1.91x more likely to produce insecure direct object references and 1.88x more likely to mishandle passwords. Newer and larger models did not produce more secure code.

DORA 2025, State of AI-assisted Software Development

In the 2025 data, AI adoption correlates with higher software delivery throughput and, simultaneously, higher delivery instability. In 2024 the same research associated each 25% rise in adoption with a ~1.5% throughput drop and a ~7.2% stability drop; the throughput sign flipped, stability did not recover.

Meyer et al., 'The Work Life of Developers' (IEEE TSE, 2017)

Instrumented monitoring of 20 professional developers across 220 work days measured coding at 21.0% of the workday, collaborative activities at 24.4%, and work-related browsing at 11.4%. The coding bucket explicitly includes reading and navigating code, not only writing it.

Stack Overflow Developer Survey 2025

84% of developers use or plan to use AI tools while trust in accuracy fell from 40% to 29% and active distrust rose from 31% to 46%. The top frustration was output that is 'almost right, but not quite', which respondents reported as increasing debugging time.

GitClear code quality analysis

Copy-pasted lines rose from 8.3% of changes in 2020 to 12.3% in 2024; 'moved' (refactored) lines fell from 24.1% to 9.5%. 2024 was the first year measured in which within-commit copy/paste exceeded moved code.

Continue with purpose

Most advice on this question is a list of things that sound wise. Learn architecture. Learn communication. Learn to think. Fine, but unfalsifiable — that list would have been the same in 2015, and it gives you no way to decide what to drop.

So here's a stricter approach. Don't start from what AI can do, which changes every few months. Start from how it fails, because the failure has a consistent shape across every independent study we have, and that shape has held while the models got much better. Pair this with XenGrowth's work on go-to-market systems if what to learn when AI can already write the code sits inside a wider growth programme.

What does the failure actually look like?

Veracode ran the most direct test I know of: code from more than 100 LLMs across 80 real-world tasks, checked against security testing. 45% of the output introduced an OWASP Top 10 vulnerability. Cross-site scripting failed 86% of the time. Java came out worst at a 72% failure rate.

The finding that matters more than the headline: newer and larger models were not better. If this were a capability gap, scale would have closed some of it. It didn't.

A model asked to write a function optimizes for code that looks like correct code. Whether the output is safe depends on where the data came from and where it's going — neither of which is in the prompt.

That's the whole mechanism. XSS isn't a property of a line of code; it's a property of a line of code plus the trust boundary it sits behind. The model can see the line. It cannot see the boundary. So it writes something locally plausible and globally unsafe, and it writes it fluently, which is precisely what makes it hard to catch in review.

Once you have that frame, the other findings stop looking like separate problems. DORA's 2025 result — throughput up, delivery stability still falling — is the same failure at team scale. GitClear's numbers, with copy-pasted lines rising from 8.3% to 12.3% while refactored lines fell from 24.1% to 9.5%, are the same failure at codebase scale: a tool that cannot see what already exists twelve directories away will cheerfully write it again. The XenGrowth resource library covers the the operations side of this side of this.

Scale

What the study measured

The same underlying gap

One function

45% carried an OWASP Top 10 flaw (Veracode)

Cannot see the trust boundary the code sits behind

One codebase

Copy/paste up, refactoring down (GitClear)

Cannot see what already exists elsewhere in the repo

One team

Throughput up, stability down (DORA 2025)

Cannot see what breaks downstream of the change

One developer

19% slower, felt 20% faster (METR)

Cannot see the cost it displaced into your later day

Four studies, four scales, one gap: the model is strong on local plausibility and weak on global correctness, because global correctness depends on context that was never in the window. Everything worth learning right now sits on the far side of that line.

So what specifically should you learn?

Verification, before anything else

The scarce skill in a world of cheap generation is telling good output from convincing output. That's not a personality trait, it's a set of learnable habits: knowing what a class of bug looks like before you go looking, reading a diff for what it doesn't do, writing the test that would fail if the code were subtly wrong rather than the test that passes because the code is what it is.

Concretely: learn the OWASP Top 10 properly, not as trivia. Veracode's numbers say 45% of generated code will hand you one, and the categories that failed worst — XSS at 86%, injection-shaped bugs generally — are exactly the ones that depend on trust boundaries. If you can spot those on sight, you are the person the 45% needs.

Reading unfamiliar code

This is the most undervalued skill on the list and the one almost nobody practises deliberately. We train for writing. We are assessed on writing. Then the job turns out to be mostly reading — the Meyer study's 21% coding bucket explicitly counts reading and navigating, and Stripe's survey put 42% of the week on code that already exists. XenGrowth on AI agents and marketing automation approaches this from the AI agents and marketing automation side.

Generated code makes this worse in a specific way: it produces code that nobody on the team has the mental model for, including the person who prompted it. Every accepted suggestion is a small deposit of unfamiliar code into a codebase you are responsible for. If you cannot read fast and read skeptically, that debt compounds silently.

System-level reasoning

Not architecture as a vocabulary of patterns — architecture as the ability to predict what a change does to things it doesn't touch. Where the trust boundaries are. What happens under partial failure. Which of two designs is cheaper to be wrong about.

This is the skill most directly protected by the context gap, because it operates almost entirely on information that lives outside any file: how the system is deployed, who else depends on it, what the business will need in eighteen months, which team will own it when you don't.

Deciding what should exist at all

The highest-leverage skill and the least teachable. When implementation gets cheap, the cost of building the wrong thing goes up relative to everything else, because you will now build the wrong thing faster and in greater volume. Requirements work, problem selection, and the willingness to say a feature shouldn't be built are the skills that stop that. There is a longer treatment of AI search, GEO and discovery in XenGrowth on AI search, GEO and discovery.

Where does prompting fit in all this?

Somewhere near the bottom, and I say that as someone who uses these tools all day. Prompting is a real skill with a real learning curve, and it is also the skill with the shortest half-life on this list, because every interface improvement erodes it deliberately. The prompt tricks that mattered in 2023 are mostly obsolete; the ones that matter now are mostly about supplying context, which is a restatement of the gap rather than a solution to it.

Learn it to competence in a week and stop. What does not decay is knowing what to ask for, which is the same skill as writing a good ticket, and knowing whether you got it, which is verification. Both were valuable before any of this existed.

What should you spend less time on?

This is the half most advice skips, because it requires actually giving something up. Some honest candidates:

Spend less on

Why

But keep enough to

Memorizing framework APIs

The lowest-value thing a model does, it does perfectly and instantly

Recognize when the generated call is the wrong one for your case

Boilerplate fluency (CRUD, config, scaffolding)

Genuinely commoditized, and was never where the difficulty lived

Notice when scaffolding has quietly become architecture

Competitive-programming-style puzzles

Optimized for exactly the bounded, checkable problems that got cheapest

Keep the data-structure intuition underneath — that part still pays

Breadth across many similar frameworks

Switching cost between them collapsed once a model can translate

Understand the one you run in production far more deeply than before

Writing tests that restate the implementation

A model writes those instantly and they were always near-worthless

Write the test that encodes the requirement, which is a different skill

I want to be careful with the fundamentals question, because 'you don't need to learn the basics anymore' is the most expensive advice currently in circulation. You cannot verify what you don't understand. Every skill on the keep-list above is downstream of having built things by hand — the reason a senior engineer spots the 45% is that they've written the vulnerable version themselves and remember why it was wrong. Fundamentals aren't a competing investment to verification. They are the prerequisite for it.

A concrete way to start this week

  1. Take the last five AI suggestions you accepted and review them as if a stranger had opened the PR. Look specifically for the Veracode categories: unescaped output, direct object references, anything touching a password or a token. You are calibrating your own acceptance rate

  2. Read one unfamiliar codebase for an hour a week with no goal but understanding it. Pick something in your stack that you depend on and have never opened. Reading is a trainable skill and almost nobody trains it

  3. For your next non-trivial change, write down what you expect to break before you make it. Then check. This is the cheapest available exercise in system-level reasoning and it gives you a score

  4. Learn the OWASP Top 10 to the point where you can name the trust boundary each one crosses. Not the list — the boundary. That is the part that transfers to code you didn't write

  5. Once a month, kill something. Find a feature or a request that shouldn't be built and make the argument for not building it. Problem selection is a muscle and it only develops under real stakes

The through-line is that all five exercises have you working on context rather than on syntax. That is not a moral preference for the higher-order stuff. It's just where the measured gap is, and the gap has stayed open across several model generations while the syntax gap closed entirely.

If the 45% figure drops to 5% in two years, most of this advice survives anyway — because verification, reading and problem selection were undervalued long before any of this, and the studies just made the undervaluation legible.

Further reading from XenGrowth

Where this work meets go-to-market

XenGrowth, who work on the commercial side of this writes for the teams who have to run what to learn when AI can already write the code day to day.

Apply this article

How to turn insights into execution

A practical sequence for teams turning concepts into production outcomes.

CareersAISoftware EngineeringSecurityArchitectureLearningcareer

Audit your current state

Map the bottlenecks and constraints connected to the article’s core problem.

Choose one bounded change

Test the most useful recommendation on one workflow before widening the scope.

Measure what changed

Keep the parts that improve the work, document what failed, and make the next decision from evidence.

Next step

Need help applying this in your stack?

I can translate these patterns into a concrete implementation plan for your team.

Discuss implementationBack to blog

Replies usually within 24 hours.

Next Steps

Continue reading

Systems Thinking Beats Syntax Now, and Here's Why

Richard Cook's central claim is that catastrophe requires multiple failures — no single fault is ever enough. That's a statement about relationships between components, which is exactly the information a code generator never receives. Syntax got commoditized. The relationships did not.

Navigate

Why Senior Engineering Judgment Is Worth More Now

Judgment is the ability to be right about things that cannot be checked yet. Cheap generation raises the volume of decisions and lowers the cost of each one, which sounds like it devalues judgment. It does the opposite, and DORA's stability data is the receipt.

Navigate

Do Programming Fundamentals Still Matter in the AI Age?

Yes, and the reason is narrower and better than the usual appeal to rigour. You cannot verify what you do not understand — and verification is now the job. Veracode found 45% of generated code carries a serious flaw. Someone has to be able to see it.

Navigate

Prompt Engineering Is a Floor, Not a Career

Learn it — it takes about a week and it genuinely helps. Then stop, because every interface improvement is deliberately designed to make your prompting skill worthless, and the vendors are quite open about that being the goal.

Navigate

Will AI Cut Engineering Jobs, or Multiply Their Leverage?

Both answers are already true, for different people. The payroll data shows a 19% employment gap opening for 22-to-25-year-olds in AI-exposed jobs while experienced workers show no gap at all. That split is the actual story, and it is not the one either side of the argument is telling.

Navigate

The Software Engineer of 2030 Will Look Different

Most predictions about this are unfalsifiable, so here are five that aren't. Each one names what would have to be true, and what evidence would prove it wrong — including the two I think are most likely to age badly.

Navigate

Should Software Engineers Become AI Engineers?

Mostly no — and the reason is in the data people cite to argue yes. The Stanford AI Index finds the fastest-growing AI skills are deployment ones: AWS, scalability, workflow management. The market is short of engineers who can ship these systems, not people who understand them.

Navigate

How AI Agents Change the Shape of Engineering Teams

Not by shrinking them. Conway's law says you ship your communication structure, and an agent adds throughput without adding a communication participant — so the structure stays and the queue moves. DORA already measured where it moved to.

Navigate

Product Thinking Is What Will Separate Engineers

When building gets cheap, building the wrong thing gets cheap too — and you now do it faster and in greater volume. The famous claim that 64% of features are rarely or never used is weaker than people think, but the direction it points is the whole argument.

Navigate
  • What Happens When One Engineer Does the Work of Five?

    The claim gets made constantly and almost never with a number attached. When someone did attach numbers — METR's randomized trial — experienced developers came out 19% slower while believing they were 20% faster. But suppose the claim were true. The consequences are stranger than the people making it seem to expect.