Technical Assessment

How to Design Code Assessments That Top Engineers Actually Want to Take

DK

David Kumar

Engineering Hiring Manager

October 25, 2024
15 min read
Code AssessmentDeveloper HiringTechnical TestingEngineering Recruitment

Key Insight

Companies that redesigned their code assessments saw completion rates jump from 30% to 75% while maintaining quality. The secret: respect candidates' time, test relevant skills, and evaluate code quality holistically.

Your coding test is why top developers ghost your company. They see another 4-hour algorithm gauntlet testing skills they'll never use, and they move on to the 20 other companies trying to hire them.

Good developers have options. They won't waste entire evenings on homework that has nothing to do with the actual job. Your assessment strategy needs to change.

Companies that redesigned their code assessments saw completion rates jump from 30% to 75% while maintaining quality. Here's what they figured out.

Why Traditional Coding Tests Fail

Most companies copied their code assessment from someone who copied it from Google. The problem? You're not Google. You don't get 500 applications per role. You can't afford to lose great candidates to frustrating tests.

The typical coding test: implement some algorithms, solve puzzles unrelated to your actual work, and maybe do some system design on a whiteboard. The entire process optimizes for one thing: filtering out people who didn't study Leetcode.

What You're Actually Testing

When you ask candidates to reverse a binary tree, you're testing whether they:

  • Recently studied data structures
  • Have time to practice algorithm problems
  • Memorized common patterns

You're not testing whether they can build features, debug production issues, or write maintainable code. You're testing Leetcode proficiency.

Here's what senior developers actually do at work: read existing code, make changes without breaking things, debug weird issues, review teammates' pull requests, and gradually improve systems over time.

None of this requires inverting binary trees. Yet that's what you test.

What Good Engineers Want From Assessments

Talk to experienced developers about their ideal coding assessment. You'll hear the same themes repeatedly:

Respect for Their Time

Senior people have jobs, families, and side projects. They can spare 60-90 minutes for your assessment. Four hours? They'll pass.

Your assessment competes with their actual life. Make it concise or lose candidates to companies that value their time.

Relevance to Real Work

Show them a realistic problem. Not a puzzle, not a whiteboard algorithm—something they'd actually solve on your team.

If you're hiring for React development, have them work with React. If you need someone who can optimize database queries, test database optimization. Match the test to the job.

Use of Normal Tools

Nobody codes in a text box without IDE, documentation, or Stack Overflow. Assessments that restrict normal tools test the wrong skills.

Let candidates use their development environment. Let them reference documentation. Let them Google. This is how professional development works.

Evaluation Beyond "Does It Work"

Good developers want you to look at their code quality, not just whether tests pass. They want credit for readable code, good naming, thoughtful error handling, and appropriate testing.

Binary pass/fail evaluations miss most of what makes someone a good developer.

Designing Assessments Developers Actually Complete

Here's the framework top tech companies use for code assessments:

Start With Working Code

Give candidates a small but functional codebase. Not TODO comments in empty files—actual working code that does something.

Then ask them to extend it, fix it, or refactor it. This tests the skills that matter: understanding unfamiliar code and making changes safely.

Example for a backend role:

"Here's a simple REST API with three endpoints. Add a new endpoint that returns user statistics. The database schema is in schema.sql. Tests are in tests/ directory."

This is realistic. They need to understand existing patterns, write code that matches the style, handle edge cases, and write tests. These are the daily activities of backend development.

Focus on One Thing

Don't test 15 different skills in one assessment. Pick the most important capability for the role and test that well.

For frontend developers: component implementation and state management
For backend developers: API design and data modeling
For infrastructure engineers: configuration and debugging

Deep signal on one thing beats shallow signal on many things.

Make It Completable in 60-90 Minutes

Time-box ruthlessly. If your assessment takes longer than 90 minutes, cut scope.

The best candidates will finish in 60 minutes. Average candidates will need 90. Nobody should need more than 2 hours total.

Test this yourself. If you can't complete your own assessment in 45 minutes, it's too long for candidates who don't know your codebase.

Provide Clear Success Criteria

Tell candidates exactly what "done" looks like. Don't make them guess what you care about.

"Your solution should: implement the required endpoint, handle error cases gracefully, include tests for happy path and edge cases, follow the existing code style."

Clear requirements reduce anxiety and help candidates showcase their best work.

Evaluating Code Beyond Pass/Fail

Working code is the baseline, not the goal. Look at how they got there.

Code Organization

Is the code readable? Are functions small and focused? Do names explain intent? Is related code grouped logically?

Candidates who write organized code will write organized code on your team. Candidates who submit spaghetti will create spaghetti in your codebase.

Error Handling

Did they think about edge cases? Do they handle invalid input gracefully? Do error messages help debug issues?

Production code needs defensive programming. Assessment code should demonstrate this thinking.

Testing Approach

What did they test and why? Are tests meaningful or just achieving coverage numbers? Do they test behavior or implementation details?

Good tests document how code should behave. Bad tests just make CI green without adding value.

Git Commit History

How did they approach the problem? Did they build incrementally with small commits? Or dump everything in one massive commit at the end?

Commit history reveals problem-solving approach. Incremental commits suggest systematic thinking. Single commits suggest working until something passes.

Comments and Documentation

Do they explain non-obvious decisions? Do they document edge cases? Do they note trade-offs?

You want people who think about future maintainers—even if that maintainer is themselves in 6 months.

Question Formats That Work

Here are specific assessment formats that consistently produce good signal:

The Extension Task

Provide working code. Ask candidates to add one feature that requires understanding the existing architecture.

Example: "This todo app has create and list functionality. Add the ability to mark items complete. The UI is already built—you just need to implement the API endpoint and database updates."

This tests: code comprehension, pattern matching, integration skills, testing.

The Debugging Challenge

Give them buggy code with failing tests. Ask them to fix it and explain what was wrong.

Example: "Three tests are failing in this payment processing module. Debug the issues, fix the code, and add tests to prevent regressions."

This tests: debugging methodology, test-driven thinking, communication about technical issues.

The Refactoring Exercise

Show them working but messy code. Ask them to improve it without changing behavior.

Example: "This function works but is hard to understand and test. Refactor it to be more maintainable. All existing tests should still pass."

This tests: code quality judgment, refactoring skill, commitment to maintainability.

The Design Task

For senior roles, ask them to design a small system and implement the core piece.

Example: "Design a rate limiting system. Write the core rate limiter class with tests. Document your design decisions in comments."

This tests: system design thinking, ability to scope appropriately, implementation skill, technical communication.

Red Flags in Candidate Code

Some patterns reliably predict problems:

Over-Engineering

Adding abstractions before they're needed. Creating complex class hierarchies for simple problems. Building frameworks instead of solutions.

Over-engineering in assessments becomes over-engineering in production.

No Tests or Bad Tests

Tests that only test happy paths. Tests that mock everything. Tests that break when you refactor implementation details.

If they can't write good tests in an assessment, they won't write them at work.

Copy-Paste Code

Repeated logic that should be extracted. Inconsistent patterns across different parts of the solution.

This signals someone who writes code until it works, then stops. No thought about maintenance or colleagues.

Ignoring Requirements

Building features that weren't asked for. Skipping requirements that seemed hard. Misunderstanding the core ask.

If they don't read requirements carefully in assessments, they won't read specs carefully at work.

Making This Work at Your Company

Changing your code assessment process requires buy-in from engineering and recruiting. Here's how to get it:

Run a Pilot

Pick one role. Design a focused assessment using these principles. Track completion rates and candidate feedback.

Compare to your current process. You'll find that more candidates complete the assessment and quality stays the same or improves.

Get Feedback From Candidates

Ask everyone who completes your assessment: Was it fair? Too long? Relevant to the role? What would improve it?

This feedback loop helps you refine the assessment and shows candidates you care about their experience.

Review Quarterly

Every 3 months, look at the data. Are you getting good candidates? Are completion rates high? Does performance on the assessment predict job performance?

Assessments aren't set-it-and-forget-it. They need regular tuning based on results.

The Bottom Line

The companies winning the engineering talent war aren't conducting harder assessments—they're conducting smarter ones. They respect candidates' time, test relevant skills, and evaluate code quality holistically.

Get this right and you'll see completion rates above 70%, faster hiring, and better quality. Get it wrong and you'll keep losing top candidates to companies that figured this out years ago.

Ready to Get Started?

Join thousands of companies using Assessly to hire better talent faster. Create your first assessment in minutes.

No credit card required • Free plan available • Set up in under 2 minutes