The Friday Deploy

The plain English newsletter for people who run the business, not the tech stack. No jargon. Every Friday.

How to Tell If Your Developer Is Any Good (When You’re Not Technical)

November 21, 2025

Your Rails application has been maintained by the same developer for two years. Things work, mostly. Features get delivered, eventually. Bugs get fixed, sometimes. You’re paying $8,000 monthly for ongoing maintenance and development.

But you have no idea if you’re getting good value. Is this developer competent or coasting? Are timelines realistic or padded? Is the code quality sustainable or accumulating problems? You’re not technical, so you can’t evaluate the work directly.

How do you assess developer quality when you can’t read code or verify technical claims?

What You Can’t Evaluate (And Shouldn’t Try)

Let’s establish what’s off the table. You cannot meaningfully assess code quality, architectural decisions, or technical implementation choices without technical expertise. Trying to evaluate these directly leads to bad decisions.

Don’t ask your neighbour who “knows computers” to review your developer’s work unless they’re an expert in the specific technology stack (Rails, React, etc.). General technical knowledge doesn’t transfer. An iOS developer can’t meaningfully review a Rails application any more than a plumber can assess electrical wiring.

Don’t judge developers by prestigious company logos on their CV. Google, Facebook, and Amazon employ thousands of developers. Some are brilliant. Some are mediocre. A big company name tells you they passed an interview once, not whether they’re good at the specific work you need.

Don’t rely on generic references from former clients unless you know how to interpret them. “They did great work” could mean anything from “they built exactly what we needed” to “they showed up and wrote code and we had no way to evaluate quality.”

So what can you evaluate?

Communication: The Most Reliable Signal

The single best indicator of developer quality for non-technical clients is communication. Good developers communicate clearly, proactively, and transparently. Poor developers are vague, defensive, or uncommunicative.

Can they explain what they’re doing in business terms? Ask your developer to describe their current work. Good developers explain technical work in terms of business outcomes: “I’m optimising the checkout process to reduce abandoned carts” or “I’m fixing security vulnerabilities that could expose customer data.” Poor developers speak only in technical jargon: “I’m refactoring the controller layer to implement SOLID principles.”

Do they proactively communicate problems? Issues emerge in every software project. Good developers surface problems early: “I discovered the payment integration has breaking changes. Here are three options with trade-offs.” Poor developers either hide problems until they become crises or blame external factors without proposing solutions.

Do they explain trade-offs, not just solutions? Every technical decision involves trade-offs. Good developers present options: “We can build this custom feature in six weeks for full control, or integrate this third-party tool in one week with slightly less flexibility.” Poor developers present single solutions without discussing alternatives or constraints.

Can they repeat your requirements back to you accurately? Explain your project or feature request. Have them summarise it back. If their understanding matches your intent, that’s a good sign. If they fundamentally misunderstand what you’re asking for, the code they write won’t solve your problem no matter how technically brilliant it is.

Delivery Patterns: What Gets Done and When

Observe delivery patterns over time. Reliable developers establish predictable rhythms. Unreliable developers have chaotic, inconsistent output.

Do estimates become more accurate over time? A developer working on your application for months should get better at estimating how long tasks take. If estimates remain wildly inaccurate after extended engagement, that’s a red flag. They’re either padding timelines deliberately or genuinely can’t assess their own work pace.

Do they deliver incremental value regularly? Good developers ship small improvements frequently rather than disappearing for weeks then delivering everything at once. This reduces risk and provides visibility into progress. Poor developers go silent for long periods then drop large changes that are difficult to test or revert.

When they miss deadlines, do they communicate early? Missed deadlines happen. Good developers raise the flag days in advance: “This task is more complex than estimated. We’ll need an extra week, or I can deliver a simplified version by the original deadline.” Poor developers miss deadlines silently and only acknowledge problems when you ask about status.

Do they finish what they start? Pay attention to abandoned features. If your developer regularly starts work but never fully completes it, leaving half-implemented features that don’t work properly, that’s poor follow-through. Good developers close work completely before starting the next thing.

How They Handle Problems

Developer quality becomes obvious when things go wrong. Problems reveal competence, responsibility, and integrity.

Do they take ownership of bugs they introduce? Everyone writes bugs. Good developers acknowledge bugs they’ve introduced and fix them without complaint or blame. Poor developers deflect responsibility: “It worked in testing” or “That’s a server configuration issue, not a code issue” or “Users aren’t supposed to do that.”

How quickly do they fix urgent production issues? When your site breaks in production, response time matters enormously. Good developers respond within hours (or minutes for critical systems) and prioritise fixes appropriately. Poor developers are unresponsive to urgent issues or treat production outages with the same priority as minor feature requests.

Do they explain what caused problems and how they’ve prevented recurrence? After fixing a bug, good developers explain what went wrong and what changes prevent similar issues: “The timeout occurred because of a missing database index. I’ve added the index and implemented monitoring to catch similar problems early.” Poor developers fix the immediate symptom without addressing underlying causes, so similar problems recur.

Are they defensive about criticism or receptive to feedback? When you question decisions or report problems, good developers respond professionally. They explain their reasoning without defensiveness and adjust when feedback is valid. Poor developers take criticism personally, become combative, or dismiss concerns without investigation.

Documentation and Knowledge Transfer

How your developer handles knowledge and documentation indicates whether they’re building sustainable systems or creating dependency.

Can someone else understand what they’ve built? This is hard to test without bringing in another developer, but there are proxies. If your developer is unavailable for a week and work completely stops because nobody else can understand the codebase, that’s a problem. Good developers document their work and structure code so others can maintain it.

Do they explain technical decisions in writing? When making significant changes, good developers document why: “I chose PostgreSQL over MySQL because we need advanced full-text search capabilities.” This creates institutional knowledge. Poor developers make decisions without documentation, so the reasoning disappears when they leave.

Are they building systems that create dependency on them personally? Some developers deliberately create complexity that only they understand, ensuring continued employment. Good developers build straightforward systems that don’t require their specific knowledge to maintain.

Do they provide handover information when transitioning work? If you bring in another developer to help or replace them, good developers provide comprehensive handover: access credentials, architecture overview, deployment process, known issues. Poor developers provide minimal information and make transition deliberately difficult. This is especially worth checking for founders who built fast with AI and aren’t sure what they’ve got. Speed during the build phase often means documentation and knowledge transfer were skipped entirely.

Questions That Reveal Quality

Ask these questions and pay attention to the quality of answers, not just the content:

“What’s the biggest technical risk in our application right now?” Good developers have thought about risks and can articulate them clearly. Poor developers either claim there are no risks (unrealistic) or identify so many risks you can’t prioritise them (analysis paralysis).

“If you had an extra week to improve one thing, what would it be and why?” This reveals what the developer thinks is important versus what you’ve asked them to prioritise. Good developers identify meaningful improvements that benefit the business. Poor developers focus on technical perfectionism that doesn’t create business value.

“What recent change are you most proud of, and why?” Good developers describe changes in terms of impact: “I reduced page load time by 60%, which should improve conversion rates.” Poor developers describe technical cleverness without connecting to outcomes.

“What’s something you learned recently that you’ve applied to our project?” Good developers continuously learn and apply new knowledge appropriately. Poor developers either don’t learn or apply every new trend regardless of suitability.

“If we needed to scale to 10x current traffic, what would need to change?” Good developers have considered scalability and can outline a realistic path. Poor developers either dismiss the question or propose massive rewrites that aren’t necessary.

Red Flags That Demand Attention

Certain behaviours indicate serious problems regardless of technical skill:

Unavailability without notice. If your developer regularly disappears for days without communication, that’s unacceptable. Freelancers have other clients and personal lives, but professional developers communicate availability.

Refusing to work with other developers. If your developer resists code reviews, collaboration, or bringing in additional help, they’re either incompetent and hiding it or deliberately creating dependency.

Constant technology changes. If your developer frequently proposes rebuilding in different frameworks, question their priorities. Are they solving business problems or building their CV?

Be particularly cautious about becoming someone’s learning project. When developers suggest using cutting-edge frameworks, ask about long-term support, hiring availability, and community size. This matters especially in fast-moving ecosystems like JavaScript, where frameworks can go from hot to obsolete in 18 months.

Dismissing non-technical stakeholder input. Good developers respect that business stakeholders understand user needs and business requirements even if they’re not technical. Poor developers dismiss input from non-technical people as ignorant.

Blaming users for bugs. “Users shouldn’t do that” is never an acceptable response to bugs. Good developers acknowledge that if users can do something wrong, the software should prevent it or handle it gracefully.

Getting a Second Opinion

If you’re genuinely uncertain about your developer’s quality, pay for an independent technical assessment. This costs $2,000-$5,000 but provides clarity.

A qualified technical consultant will review your codebase, infrastructure, and development practices, then report on code quality, maintainability, security vulnerabilities, technical debt levels, appropriateness of technical decisions, and whether current developer’s work is competent.

This is particularly valuable before major investments (large feature development, platform migrations) or if you’re considering replacing your current developer.

The Bottom Line

You don’t need to understand code to assess developer quality. You need to assess communication, delivery patterns, problem-handling, and professionalism.

Good developers communicate clearly in business terms, deliver value incrementally on realistic timelines, take ownership of problems, and build maintainable systems. Poor developers are vague, miss deadlines without communication, deflect responsibility, and create dependency.

Trust your instincts about communication quality. If interactions feel unclear, defensive, or evasive, that’s a signal. If your developer explains things clearly, delivers consistently, and takes ownership, they’re probably competent.

The developer writing the cleanest code in the world is worthless if they can’t communicate, meet deadlines, or take responsibility. Conversely, a developer with excellent communication and reliability is enormously valuable even if their code isn’t perfect.

Focus on what you can evaluate: do they make your life easier or harder? Does your business benefit from their work? Can you rely on them? Those questions matter more than code quality you can’t assess directly.

Read more Decision Guides

Developer Management, Due Diligence, Quality Assessment, Technical Hiring, Vendor Selection

Previous Next

The Friday Deploy

The plain English newsletter for people who run the business, not the tech stack. No jargon. Every Friday.