How to hire .NET developers: a practical guide for U.S. engineering and HR leaders.
Most companies hiring .NET developers are not starting from zero. They have a C# codebase that runs the business, often ten or twenty years old, and a list of things it needs: new features, a move to the cloud, a frontend that is not a Windows form, and now a version deadline. Microsoft ends support for .NET 8 and .NET 9 on November 10, 2026 (Microsoft .NET Blog), and many teams still run parts of their platform on .NET Framework 4.x. This guide covers how to hire for the system you actually have.
What .NET developers do
.NET is Microsoft's application platform, and C# is the language almost all of it is written in. A .NET developer builds web APIs and services with ASP.NET Core, reads and writes data through Entity Framework Core or Dapper, usually on SQL Server, and deploys to Azure, AWS, containers or Windows servers running IIS. Many also work on the frontend, in Angular, React or Blazor.
The part job descriptions leave out: in most U.S. companies a senior .NET developer's real job is to change a large, old system safely. The code carries years of business rules, some of them in stored procedures nobody has read in a while. Adding a feature without breaking an invoice run is the skill you are paying for.
.NET Framework vs modern .NET: know which one you run
This is the first question to answer, because it changes who you should hire.
- .NET Framework (4.x) is the original, Windows-only platform. Version 4.8.1 is the last one: it still receives security fixes as a component of Windows, but no new features (Microsoft .NET Framework support policy). ASP.NET Web Forms, WCF services and classic ASP.NET MVC live here.
- Modern .NET (formerly .NET Core, now just .NET 5 and later) is cross-platform, open source and where all new work happens. It runs on Linux containers as well as Windows. Even-numbered releases are LTS with three years of support; odd-numbered releases now get 24 months (Microsoft .NET Blog). .NET 10, released in November 2025, is the current LTS, supported through November 2028.
If your system is on modern .NET, you need strong C# and ASP.NET Core engineers. If it is on .NET Framework, you need engineers who can work in both and have moved code from one to the other. Migration is rarely a straight port: Web Forms has no direct successor, and server-side WCF needs CoreWCF, gRPC or a REST rewrite. Microsoft's recommended path for large ASP.NET apps is incremental, with a YARP proxy routing traffic between the old and new applications while routes move over one at a time (Microsoft Learn).
The five profiles
| Profile | Owns | Typical stack | Hire when |
|---|---|---|---|
| Backend / API | Services, data access, integrations, messaging | ASP.NET Core, EF Core, SQL Server, Azure Service Bus or RabbitMQ | Your product runs on C# services and needs more capacity. If your backend is mixed, see our guide to hiring backend engineers. |
| Full stack .NET | A feature from the database to the screen | ASP.NET Core with Angular, React or Blazor | A small team ships features end to end. |
| Modernization specialist | Moving .NET Framework code to modern .NET | .NET Framework 4.x, .NET 10, YARP, .NET Standard, test harnesses | You have Web Forms, WCF or classic MVC in production. |
| Cloud-focused .NET | Hosting, deployment and Azure services for .NET apps | Azure App Service, Functions, AKS, Azure DevOps, Bicep | You are leaving IIS and Windows VMs. For pure infrastructure work, look at Azure cloud engineers instead. |
| Desktop and mobile | Windows and cross-platform clients | WPF, WinForms, .NET MAUI | You ship a desktop app or a Xamarin app that needs to move to .NET MAUI. |
Seniority you need
- Mid-level developers deliver well-scoped features in an established ASP.NET Core codebase. Good when patterns are set and someone senior reviews.
- Senior developers own a service or module, make data access decisions, and can upgrade a project from one .NET version to the next without supervision. Most teams mean this level when they say ".NET developer."
- Lead or staff engineers plan migrations, decide what gets rewritten and what gets wrapped, and set solution structure for several teams. When the question becomes how the whole platform should be split, that is software architecture work.
Years of experience are a weak signal in .NET specifically. Twelve years on .NET Framework 4.x maintaining one application is a different profile from twelve years that include two migrations and a move to Azure. Ask which versions, which hosting, and what they changed.
One developer or a team
One senior .NET developer can take on a .NET 8 to .NET 10 upgrade, a set of new APIs or a well-bounded module. A .NET Framework migration of a large application is usually team work: someone keeps the old system stable, someone builds the new side, and someone owns the tests that prove both behave the same. A common shape is two senior backend engineers, one full stack engineer for the new UI, and a lead who owns the migration plan.
Job description essentials
A useful .NET job description answers what candidates filter on:
- Versions: which .NET versions are in production today, and where you are going (for example, ".NET Framework 4.8 and .NET 8, moving to .NET 10").
- Application types: ASP.NET Core APIs, MVC, Web Forms, WCF, Blazor, worker services, desktop.
- Data: SQL Server or PostgreSQL, EF Core, Dapper, and how much logic lives in stored procedures.
- Hosting: IIS on Windows servers, Azure App Service, AKS, AWS, containers.
- Frontend: Angular, React, Blazor or none, and the split between backend and frontend work.
- Tooling: Azure DevOps or GitHub, test frameworks (xUnit, NUnit), and which AI coding assistants the team uses.
- Team and hours: team size, who they report to, required overlap with U.S. hours.
Be honest about legacy. Senior engineers who enjoy modernization work look for it, and the ones who do not will leave after three months if you hid it.
Skills, layer by layer
C# and the runtime
- Value and reference types, and what boxing costs.
- async/await: what it does with threads, why
.Resultand.Wait()cause deadlocks, and whenValueTaskhelps. - Nullable reference types, records, pattern matching and LINQ used for clarity.
- Garbage collection basics, and
IDisposablewithusing.
ASP.NET Core
- Middleware pipeline, routing, minimal APIs versus controllers.
- Dependency injection lifetimes (singleton, scoped, transient) and the captive dependency problem.
- Authentication and authorization, configuration and the options pattern, health checks, logging with OpenTelemetry.
Data
- EF Core: tracking versus no-tracking, loading related data without N+1 queries, migrations on a live database.
- When to use Dapper or raw SQL, and how to read an execution plan in SQL Server.
- Moving logic out of stored procedures without changing results.
Hosting and delivery
- IIS and Windows services for what exists, containers and Azure App Service or AKS for what comes next.
- CI/CD in Azure DevOps or GitHub Actions, and deployment slots or blue-green releases.
Testing
- Unit tests with xUnit or NUnit, integration tests with
WebApplicationFactory, and characterization tests before touching legacy code.
AI-assisted work
- Using GitHub Copilot or other assistants for upgrades and boilerplate, and reviewing what they produce. Microsoft now points .NET upgrades to GitHub Copilot app modernization instead of the deprecated Upgrade Assistant, which makes review skill more important, not less.
How to interview
- 1Screen (30 min)Walk through a .NET system they worked on. Which versions, how it was hosted, what they changed, and what broke.
- 2Live exercise (60 to 90 min) in an existing solutionGive them a small ASP.NET Core project with established patterns and ask for a feature with a test. Watch whether they follow the architecture or start rewriting it.
- 3Code review (30 min)A pull request with a scoped service injected into a singleton, a blocking
.Resultcall, an EF Core query inside a loop, and an AI-generated helper that calls an API that does not exist. - 4Team conversationHow they would explain to a product manager why a migration step takes two sprints.
For modernization roles, add one question about a migration they did: what they moved first, what they left, and how they proved nothing changed.
Interview questions
- What is the difference between .NET Framework and modern .NET, and when would you not migrate?Best answerCross-platform versus Windows-only, support status, what has no direct equivalent (Web Forms, server WCF). A strong candidate also names cases where wrapping or isolating is cheaper than migrating now.
- What happens if you inject a scoped service into a singleton?Best answerThe scoped instance lives as long as the singleton (a captive dependency), which can leak a
DbContextacross requests. They mention scope validation in development. - Why can calling
.Resulton a task cause a deadlock?Best answerBlocking a thread that the continuation needs. They know it matters most in classic ASP.NET and UI apps, and that the fix is async all the way. - This EF Core endpoint is slow. How do you find out why?Best answerLog or inspect the generated SQL, look for N+1 and over-fetching, use projections and
AsNoTracking, check indexes and the execution plan. - How would you migrate a large ASP.NET MVC app on .NET Framework to ASP.NET Core?Best answerIncremental: shared code to .NET Standard or multi-targeting, a YARP proxy in front, routes moved one by one, tests proving parity. Not a big-bang rewrite.
- When would you use a record instead of a class?Best answerImmutable data with value equality, such as DTOs and messages. Classes for entities with identity and behavior.
- An AI assistant upgraded a project to .NET 10 and it compiles. What do you check before merging?Best answerBreaking changes in the release notes, behavior changes in serialization and configuration, package versions, tests, and anything the tool silently removed.
Red flags
- Every project they describe is on the same .NET Framework version, and they have no view on moving off it.
- They cannot explain DI lifetimes or async/await beyond "it makes it faster."
.Resultorasync voidshows up in their exercise code outside event handlers.- Their answer to legacy code is always "rewrite it."
- They trust EF Core to generate good SQL without ever looking at it.
- They accept an AI-generated upgrade because the build is green.
What it costs
The U.S. median base salary for software developers is $135,980 (BLS, May 2025), before payroll taxes, benefits, equipment and recruiting. Senior .NET engineers with migration and Azure experience usually sit above the median.
A senior LatAm .NET developer through BEON.tech costs $6,200 to $7,600 per month, all-inclusive ($74,400 to $91,200 per year), and full stack .NET + Angular or .NET + React developers are on the same rate. Use the LatAm developer cost calculator to compare by country and seniority.
Nearshore in LATAM
Latin America works in U.S. hours, 0 to 4 hours from Eastern time. For .NET teams that matters on the days that carry the most risk: a migration cutover, a release to an on-premises server, a production incident in a system with old business rules. Our network includes more than 13,000 .NET engineers, more than half of them senior or above. For a broader view of the region, see our guide to hiring Latin American developers.
Hiring model comparison
| Model | Speed | Vetting done for you | Payroll & compliance | Best for |
|---|---|---|---|---|
| In-house U.S. hire | Slowest | No | You | Roles that must be U.S.-based |
| Freelance marketplace | Fast | Partial, résumé level | Contractor | Short, well-defined tasks |
| .NET development company (project outsourcing) | Weeks to scope | The vendor's own process | Vendor | A fixed-scope project you hand off entirely |
| Staff augmentation (BEON.tech) | 24–48h shortlist, 2-week start | Yes, live interview + recording | BEON.tech | Ongoing work inside your own team and codebase |
| Contract-to-hire (BEON.tech) | Same as staff augmentation | Yes | BEON.tech, then you | A migration or upgrade you want to trial first |
| IT recruitment (BEON.tech) | Shortlist first, then your process | Yes | You | Lead roles that will own the platform |
The first 90 days
- Week 1: repository and pipeline access, the solution building and running locally, a walkthrough of the deployment path and the database. First small pull request merged.
- Weeks 2 to 4: owns a feature end to end, including its tests. Reviews other people's pull requests.
- Month 2: proposes one improvement: a slow query fixed, a blocking call removed, a test harness around a risky module, or a version upgrade plan.
- Month 3: owns an area of the system. If a migration or .NET 10 upgrade was the reason for the hire, it has a plan with milestones and the first part is in production.
Hiring with BEON.tech
Tell us which .NET versions you run, how the system is hosted, and what the next year looks like: new features, a Framework migration, a .NET 10 upgrade, or all three. Within 24 to 48 hours you get two or three senior .NET developers, each with the recording and scorecard of a live interview inside a C# solution. Most engineers start within two weeks, and 88% are still on the team after year one.






























