AIDeveloper SkillsEvaluation

Evaluating Developer Skills in the AI Era

As AI tools increasingly assist in writing code, evaluating a developer's true technical skill becomes a complex challenge. This post explores effective strategies and new metrics for assessing proficiency in an AI-augmented development environment, ensuring fair and accurate evaluations while

·23 min read
blog cover image
Table of Contents

AI changes code production speed; it does not remove the need to assess technical judgment.

01 THE PROBLEM

AI-assisted coding is the failure mode where output quality rises faster than engineer understanding.

That is the core evaluation gap. A developer can now produce working code, pass a happy-path demo, and still lack the ability to explain failure modes, reason about tradeoffs, or safely modify the system a month later. If you keep evaluating technical skill as “can this person write code from scratch under time pressure,” you will miss both kinds of risk: weak engineers who can prompt well, and strong engineers whose leverage comes from architecture, debugging, and judgment rather than typing speed.

The business consequence shows up quickly.

Within one quarter, you start seeing more code landed per engineer, but also more review churn, more reverts, more incidents caused by edge cases, and more senior time spent validating AI-generated changes. The result is a familiar pattern: local velocity goes up, system reliability and team trust go down.

This is not a hypothetical concern.

Anthropic’s research on AI assistance and coding skills examined how access to an AI assistant affected coding performance and skill measurement. Their setup matters because the assistant could inspect the participant’s code and, if asked, produce correct code directly. That is close to how developers now work in Cursor, GitHub Copilot, Claude Code, or Windsurf. Once the model can provide implementation on demand, the evaluation target shifts. You are no longer measuring raw recall or syntax fluency. You are measuring whether the engineer can define the problem correctly, constrain the solution, verify the output, and recover when the model is wrong.

That is a different skill profile.

For a CTO or VP Engineering, this creates an immediate decision problem: how do you hire, level, coach, and promote engineers when code generation is partially commoditized but technical accountability is not?

The wrong answer is to ban AI and pretend it is still 2019.

The equally wrong answer is to let candidates use AI freely and infer skill from whether they shipped a working solution.

Both approaches misread what the job now is.

In modern engineering teams, the scarce skill is not “writing lines of code unaided.” The scarce skill is producing correct, maintainable, operable systems under real constraints: latency, security, data integrity, cost, backward compatibility, and on-call load. AI helps with implementation. It does not own the blast radius.

That distinction matters because your organization already assigns accountability this way.

Stripe does not page the LLM when a payments bug leaks through. Cloudflare does not ask a code assistant to explain a production incident to customers. GitHub does not promote engineers because autocomplete output was verbose and syntactically clean. Humans remain responsible for correctness, reliability, and judgment. Your evaluation system has to match that reality.

The strongest signal to assess in 2026 is simple: can this engineer use AI to move faster without creating hidden operational debt?

Everything else is secondary.

02 WHY IT HAPPENS

This problem exists because software engineering skill has always been a stack, and AI primarily compresses only one layer of it.

The visible layer is code production: syntax, API recall, boilerplate assembly, test scaffolding, and routine refactors. Large language models are unusually strong here. They are trained on huge code corpora, can imitate common patterns, and can fill in standard implementation paths fast enough to change day-to-day development behavior.

The less visible layers are where real engineering quality lives: problem framing, boundary definition, threat modeling, tradeoff selection, debugging under uncertainty, dependency skepticism, rollout planning, instrumentation, and long-term maintainability. These are not erased by AI. In many cases, they become more important because code can now be created faster than it can be deeply understood.

That asymmetry is the root cause.

If output generation gets 3x faster but understanding does not, your organization accumulates uninspected complexity. You see more code merged, but the confidence in that code does not rise at the same rate. In practice, that pushes burden upward: senior engineers absorb more review, more debugging, and more architecture correction.

This incentive misalignment is structural.

A developer using AI is rewarded immediately for speed. The cost of a weak prompt, shallow review, or unexamined dependency often lands later and on someone else. That “someone else” is typically the tech lead in code review, the staff engineer in design review, the SRE during incident response, or the engineering manager dealing with a roadmap miss after a brittle implementation collapses.

The DORA framework is relevant here even though it predates the current AI wave. In Accelerate, Nicole Forsgren, Jez Humble, and Gene Kim showed that software delivery performance is not about maximizing a single output metric like coding speed. High-performing teams balance throughput and stability, measured through the four key metrics: deployment frequency, lead time for changes, change failure rate, and time to restore service. If AI improves deployment frequency while quietly increasing change failure rate or time to restore, you did not improve engineering performance. You shifted work into a more expensive part of the system.

That is exactly what weak evaluation frameworks miss.

Another reason this happens: most technical hiring loops were designed for a world where code production was a good proxy for understanding.

Whiteboard interviews, take-home projects, timed algorithms tests, and “build a CRUD app” exercises all assumed the candidate’s output was mostly generated by their own memory and reasoning. That made implementation a useful signal. Now it is a contaminated signal. It still matters, but it no longer means what it used to mean.

GitHub’s own data on Copilot adoption reflects the upside clearly. In GitHub’s research with Accenture, developers reported higher perceived productivity and faster completion for some tasks when using Copilot. That is important, but it does not answer the more important management question: was the resulting code easier to operate, easier to extend, and safer to deploy? Productivity in the local moment and engineering quality over six months are not the same variable.

The organizational failure starts when leaders conflate them.

There is also a subtler issue: AI can conceal competence gaps better than previous tools could.

A weak engineer used to get exposed by not knowing the syntax, library, or framework well enough to ship independently. Now the model can bridge that gap. The engineer may still lack the ability to evaluate whether the generated code is secure, idiomatic for the codebase, aligned with existing abstractions, or resilient under concurrent load. But because something compiles and tests pass locally, the gap stays hidden longer.

This creates what I’d call deferred incompetence.

The person looks productive until they encounter an ambiguous requirement, a partial outage, a strange race condition, or a system-level tradeoff. Then the absence of mental models becomes obvious, often at the worst time. By then, they may already have shipped a meaningful amount of code into production.

This is why the strongest organizations are shifting the assessment locus from generation to supervision.

That pattern shows up in mature engineering cultures long before AI. The Google SRE book emphasizes toil reduction, observability, rollback safety, and production responsibility. Charity Majors has argued for years that the differentiator in modern software teams is not just shipping but understanding systems in production. Will Larson’s writing on staff engineering similarly centers on technical direction, influence, and system design under organizational constraints. AI raises the value of those skills because the implementation floor gets lower.

The practical implication is blunt: if your interview loop and leveling rubric still treat coding output as the primary signal, your process is now measuring the easiest part of the job and underweighting the expensive part.

03 WHAT MOST GET WRONG

The most common mistake is replacing “can write code” with “can ship code with AI.”

That sounds modern. It is not rigorous.

A candidate completes a take-home using Copilot or Claude, demos a feature, and explains that this reflects “real-world development.” That is directionally true. The mistake is assuming the artifact proves technical strength. It proves that a human plus AI plus unconstrained time produced an artifact. It does not prove the human could diagnose a latent bug, challenge a bad abstraction, detect a security flaw, or choose a safer rollout plan.

This is the same category error teams made with framework-heavy hiring.

For years, companies mistook familiarity with React, Kubernetes, or Terraform for engineering depth. Then production incidents reminded everyone that tool fluency is not the same thing as systems understanding. AI is just a stronger version of the same trap.

The second mistake is the backlash response: ban AI in interviews and insist on pure, unaided coding.

This restores a cleaner signal, but often the wrong one.

If your actual engineers use Cursor, Copilot, or Claude Code every day, an interview loop that prohibits AI entirely does not reflect the job. It overweights memorization, syntax recall, and speed under artificial constraints. You may reject strong candidates who are excellent at scoping work, guiding models, and critically reviewing output, which is now a real and valuable operating skill.

The third mistake is evaluating prompting as if it were a standalone craft.

Prompting matters. But “prompt engineer” is too shallow a frame for engineering assessment. A candidate who knows to ask for tests, request edge cases, or specify constraints may get better model output. That is useful. It is still not enough. What matters is whether the person knows which constraints matter, which edge cases are likely, and when the model’s answer is subtly wrong.

Prompt quality without domain judgment is cosmetic.

The fourth mistake is trusting test pass rates too much.

AI-generated code often does well on narrow test suites because the model is very good at pattern-matching to expected inputs. If your evaluation only checks whether the candidate reached a passing solution, you reward optimistic implementation and under-detect brittle reasoning. This is particularly dangerous in backend, infra, data, and security-sensitive roles where the key risks live outside the happy path.

A real-world analogue exists in production incidents caused by overconfidence in automation.

Knight Capital’s 2012 trading disaster was not caused by generative AI, but it remains one of the clearest examples of what happens when fast deployment outruns operational control. A software deployment activated dormant code on some servers but not others, and the company lost over $440 million in roughly 45 minutes. The lesson is not “AI causes incidents.” The lesson is that speed without verification, rollout discipline, and system understanding can create catastrophic downside. AI increases the chance of this pattern by making it easier to produce and propagate change quickly.

Another example comes from the long history of dependency and supply-chain failures.

The event-stream npm incident in 2018 showed how easy it is for developers to import functionality they do not fully inspect, including malicious code. AI-generated code can recreate the same trust problem in a new form: the engineer pastes or accepts code they did not author and may not deeply understand. The source is now an LLM rather than an npm maintainer, but the review responsibility is the same. If your evaluation process does not test whether engineers can inspect borrowed code skeptically, you are hiring for velocity and hoping for judgment.

The fifth mistake is overcorrecting toward architecture theater.

Once leaders realize typing speed matters less, they often swing too far and make every interview abstract: systems design, leadership principles, broad technical discussion. That catches senior candidates who can speak well, but it misses whether they can actually execute with AI in the loop. The result is a different kind of false positive: articulate candidates who can discuss CAP theorem, event-driven systems, and fault isolation, but cannot supervise AI-generated implementation effectively enough to ship safely.

Most teams need a more balanced model.

Not “no AI.” Not “anything goes.” Not “just watch them prompt.”

The goal is to test three things together: technical fundamentals, AI supervision skill, and production judgment.

If you only test one, you will hire the wrong people.

04 THE FRAMEWORK

The evaluation model that works is simple to state and hard to fake:

Assess the engineer as the accountable technical operator of an AI-assisted workflow.

That means you evaluate not just whether code gets produced, but whether the person can define the task, constrain the assistant, verify the result, integrate it cleanly, and defend the decision under real operational conditions.

Here is the framework.

1. Split technical skill into four assessable layers

Do not ask “is this candidate good at coding?” Break the job into four layers and score them separately.

Layer 1: Fundamentals

Can they reason about data structures, control flow, interfaces, failure modes, concurrency, and performance without needing the model to explain first principles?

Layer 2: AI orchestration

Can they use tools like GitHub Copilot, Cursor, Claude Code, or source-aware chat effectively? Do they know how to provide constraints, decompose work, and ask for alternatives rather than first-draft code only?

Layer 3: Verification and debugging

Can they detect incorrect assumptions, weak tests, unsafe edge cases, or hidden coupling in AI output? Can they recover when the generated approach fails?

Layer 4: Production judgment

Can they choose rollout strategy, observability, security controls, and maintenance boundaries that fit your environment?

Most hiring loops over-measure Layer 1 or Layer 2.

The expensive failures come from weak Layer 3 and Layer 4.

That should be reflected in weighting. For senior product engineers, a workable weighting might be 20/20/30/30 across these layers. For platform, infra, or security roles, I would push 15/15/30/40. The more expensive your production mistakes, the more you should overweight judgment.

2. Evaluate with AI allowed, but under controlled constraints

This is the single most important design choice.

Let candidates use AI in at least one practical exercise. But define the environment tightly enough that you can observe judgment rather than just harvest output. A good setup includes:

  • A realistic but bounded codebase
  • A time box, typically 60–90 minutes
  • Full access to an AI assistant
  • Explicit success criteria
  • One or two hidden complexity traps
  • A debrief where the candidate must explain what they accepted, rejected, and why

Anthropic’s framing is useful here because it distinguishes between solving and understanding. If the assistant can generate correct code on demand, then the signal moves to supervision. So design tasks where implementation is not the only challenge.

Example exercise:

A backend service has a bug in a retry path causing duplicate writes under partial network failure. The candidate can use any AI tool. They must diagnose the issue, propose a fix, add tests, and explain the rollout and monitoring plan.

Now you can observe:

  • Did they ask the model useful questions?
  • Did they identify idempotency as the actual issue?
  • Did they trust the first generated fix too quickly?
  • Did they add tests for retries, timeouts, and duplicate requests?
  • Did they mention logging, metrics, feature flags, or canary rollout?

That is a much better measure of real engineering competence than a clean-room coding puzzle.

3. Make explanation quality a scored artifact

If AI is allowed, explanation is no longer optional. It is the proof of understanding.

Require candidates and internal engineers to answer, in writing or verbally, five questions about any substantial AI-assisted change:

  1. What problem are you solving?
  2. Why is this approach preferable to the obvious alternatives?
  3. What assumptions does this solution depend on?
  4. What can fail in production?
  5. How would you know quickly if it fails?

This is not bureaucracy. It is a competence test.

Stripe’s engineering culture has long emphasized API consistency, careful abstractions, and operational rigor because payments systems have very low tolerance for ambiguity. The lesson for AI-era evaluation is clear: when the blast radius is high, structured explanation matters more, not less. related topic

A candidate who cannot answer these five questions probably does not understand the code deeply enough to own it.

4. Add “review the AI’s work” as a first-class interview task

Most interview loops test creation. Few test review.

That is now backwards.

Give the candidate a patch that was “generated by an AI assistant” and ask them to review it as if they were the responsible engineer. Seed it with realistic issues:

  • missing null handling
  • misleading test coverage
  • an N+1 query
  • a race condition
  • secret leakage in logs
  • a silent backwards compatibility break
  • overuse of a new dependency

This is where strong engineers separate themselves fast.

They do not merely nitpick style. They identify risk concentration, unstated assumptions, weak invariants, and production hazards. In a real team, that review skill is often more valuable than writing a fresh implementation from scratch.

GitHub is a useful reference point here because its collaboration model is built around pull requests and review workflows. AI has changed who drafts code, but not the fact that review remains the primary quality gate. If your assessment ignores review judgment, you are skipping the place where expensive errors are actually prevented.

5. Use reliability metrics to validate whether your evaluation model works

Do not just redesign the hiring loop and assume it succeeded. Measure whether the changes improve team outcomes.

Use post-hire signals over the first two quarters:

  • Review iteration count per merged PR
  • Revert rate within 14 days
  • Change failure rate, per DORA
  • Time to restore service for incidents involving the engineer’s code
  • Senior review load, measured as review time or number of escalations
  • Defect escape rate to production

The DORA metrics remain the cleanest benchmark set because they force you to examine throughput and stability together. A useful internal threshold is not a universal industry number, but a directional change: if AI-enabled hires increase deployment throughput while your change failure rate rises for two consecutive quarters, your evaluation system is rewarding local speed over durable competence.

That is a hiring bug, not merely an onboarding issue.

6. Calibrate by role, not by ideology

The right evaluation model is role-dependent.

A frontend product engineer at Linear, where polish, iteration speed, and codebase ergonomics matter enormously, should be assessed somewhat differently from a platform engineer at Cloudflare dealing with globally distributed systems and security-sensitive edges.

Linear is a good example of a company that built a strong reputation on product quality and engineering taste. Their public changelog and team discussions consistently point to a bias for tight scope, careful implementation, and low-friction tools. In that environment, AI value comes from speeding up execution while preserving coherent product behavior and maintainable code paths.

Cloudflare, by contrast, operates at internet infrastructure scale. Its engineering and post-incident writing repeatedly show the importance of rollback discipline, observability, and an obsession with failure domains. In that environment, evaluation must heavily weight production judgment because a bad assumption can propagate globally.

So set role-specific expectations:

  • Product engineer: architecture fit, user-facing correctness, maintainability, instrumentation basics
  • Platform engineer: failure isolation, concurrency, rollback, capacity, observability
  • Security engineer: threat modeling, unsafe generated code detection, dependency skepticism, least privilege
  • Data engineer: schema evolution, lineage, backfill strategy, idempotency, cost awareness

One evaluation rubric across all roles is lazy management.

7. Test memory less; test transfer more

AI reduces the value of rote recall and increases the value of transferring fundamentals into unfamiliar contexts.

So stop over-indexing on memorized syntax, exact method names, and textbook algorithm trivia unless the role truly depends on it.

Instead, test:

  • Can they infer behavior from partial information?
  • Can they detect when the AI invented an API?
  • Can they choose a simpler design over a clever one?
  • Can they reason across boundaries: database, queue, service, client?
  • Can they explain why the generated code is wrong even when it looks plausible?

This aligns with how strong senior engineers actually operate.

Mitchell Hashimoto has written and spoken repeatedly about the value of understanding systems deeply rather than just stacking tools. Kelsey Hightower has made similar points through years of infrastructure education: abstraction is useful until it obscures the mental model you need during failure. AI raises the premium on transfer because the abstracted layer gets easier to produce automatically.

8. Build an internal bar for acceptable AI-generated code

You need explicit standards, or review quality will drift.

A practical rubric for AI-assisted code should require:

  • tests cover unhappy paths, not just happy paths
  • logs contain enough context without leaking secrets
  • dependencies are justified, not casually introduced
  • interfaces match existing architecture conventions
  • performance-sensitive paths are measured or reasoned about
  • rollout and rollback path are defined
  • ownership is clear

OWASP is especially relevant for secure coding standards because generated code often reproduces insecure patterns from training data. If your engineers cannot spot injection risk, unsafe deserialization, authorization gaps, or secret handling mistakes in AI-generated code, your adoption of coding assistants is outpacing your quality system.

Set a default rule: AI-generated code is reviewed with at least the same scrutiny as human-generated code, and in security- or reliability-sensitive areas, more scrutiny.

That sounds obvious. In practice, teams often do the opposite because generated code arrives fast and fluently written. Fluency is not evidence.

9. Train interviewers and managers to look for the right failure modes

Your process is only as good as the people running it.

Most senior engineers were trained to evaluate direct coding ability. They need new calibration prompts:

  • Did the candidate define constraints before generating?
  • Did they challenge the AI’s first answer?
  • Did they verify with tests that actually exercise the risk?
  • Did they discuss rollback, observability, and migration?
  • Did they know where uncertainty remained?

A candidate saying “I’d ask the model to…” is not itself a positive signal.

The positive signal is “I’d ask the model to generate two approaches, reject the one that introduces a write-time race on shared state, keep the simpler one, and add idempotency tests before rollout.”

That is judgment.

10. Separate hiring, leveling, and promotion criteria

This is where many organizations get tangled.

A junior engineer may reasonably rely more heavily on AI for implementation while still demonstrating learning velocity and sound review habits. A staff engineer cannot be leveled mainly on output volume if most of the leverage is coming from models. At senior levels, the contribution must be in system design, technical decision quality, mentorship, incident handling, and raising the quality bar for AI-assisted development across the team.

Will Larson’s work on staff roles is useful here: seniority is about scope, ambiguity handling, and organizational influence, not just code contribution. AI only sharpens that distinction.

So codify it:

  • Junior: can use AI productively with supervision; understands generated code after review
  • Mid-level: can independently verify and adapt AI-generated code; owns moderate changes safely
  • Senior: can set constraints, spot hidden risks, and ship AI-assisted work with low review burden
  • Staff+: improves team-wide AI usage patterns, standards, and architectural quality

If you do not update your ladder, you will promote the fastest AI users rather than the most reliable technical leaders.

05 STRATEGIC TAKEAWAY

Technical evaluation must move from code authorship to code accountability. The CTO decision this quarter is not whether engineers should use AI; that has already been decided by the market and often by your developers. The decision is whether your hiring loop, career ladder, and review culture measure the person who owns the outcome or merely the person who can elicit output from a model. If you get this right, you gain throughput without paying for it later in incident load, review drag, and architecture decay. If you get it wrong, your next two quarters will look deceptively productive on delivery dashboards while your senior engineers quietly become a quality-control layer for AI-generated debt.

06 IMPLEMENTATION ANGLE

Start with one role family, not the whole company.

Pick a hiring loop where AI use is already common—usually product engineering or internal tooling. Replace one conventional coding round with a supervised AI-allowed exercise and one review round focused on critiquing generated code. Run it for 6–8 weeks, then compare interviewer confidence, pass-through rates, and early post-hire quality signals such as PR review churn and revert rates.

Next, update your scorecards.

Add explicit fields for constraint-setting, verification depth, edge-case detection, and production judgment. Remove vague prompts like “strong coder” unless tied to observable behaviors. A better rubric is: “Identified duplicate-write risk under retries, rejected AI’s first patch due to missing idempotency, added failure-path tests, proposed canary rollout with metric guardrails.”

Finally, train your managers and staff engineers before you train everyone else.

If the people setting the quality bar still reward speed over understanding, the rest of the process will collapse back into artifact-based evaluation. This is one area where external support can be useful: Amplify helps engineering teams scale, but the real leverage is not staffing alone. It is making sure the engineers you hire and the system you place them into are calibrated for AI-assisted accountability rather than AI-assisted output.

07 FAQ

Q: How should companies evaluate software engineers when AI writes much of the code? A: Companies should evaluate engineers on accountability for the code, not raw authorship of it. That means testing fundamentals, AI supervision, debugging, and production judgment in the same loop. The DORA framework from Accelerate is the right validation lens because it measures both throughput and stability through deployment frequency, lead time, change failure rate, and time to restore service. Q: Should AI be allowed in technical interviews for software engineers? A: Yes, but only in controlled exercises where the candidate’s judgment is observable. A realistic 60–90 minute task with explicit constraints, AI access, and a required debrief reveals much more than an unrestricted take-home. Anthropic’s coding-skills research is relevant here because once an assistant can produce correct code directly, the meaningful signal shifts to supervision and understanding. Q: What skills still matter most when AI can generate code? A: The highest-value skills are problem framing, architecture, debugging, verification, and operational judgment. AI is strong at syntax, boilerplate, and standard implementation paths, but it does not own security, latency, rollback safety, or maintainability. Will Larson’s writing on staff engineering and the Google SRE book both point to the same reality: senior technical value comes from handling complexity and failure, not just producing code. Q: Why is reviewing AI-generated code more important than writing code from scratch? A: Review is where hidden risk is caught before it becomes production debt. AI-generated code is often fluent and plausible, which makes superficial review more dangerous, not less. GitHub’s collaboration model centers on pull-request review because quality in software teams is enforced at integration time; AI changes who drafts the patch, but not the importance of the reviewer’s judgment. Q: What metrics show whether AI-assisted engineering is actually working? A: Track deployment frequency and lead time together with change failure rate and time to restore service, using the DORA metrics defined in Accelerate. Also track local quality indicators such as revert rate within 14 days, PR review iteration count, and defect escape rate. If code output rises while change failure rate or senior review burden rises for two straight quarters, AI is speeding up generation faster than your team can safely verify it.

Enjoyed this article?

Share it with your network

LatAm Engineering Insights

Stay ahead of the curve

Weekly insights on hiring LatAm developers, salary trends, tech stack analysis, and exclusive job opportunities.

No spam, unsubscribe anytime. We respect your privacy.

Salary Insights

Real market data on LatAm developer salaries

Hiring Tips

Best practices for remote LatAm teams

Exclusive Roles

Early access to new job opportunities

Join 2,500+ CTOs, Engineering Managers, and Developers