Reads before writing
The existing solution has reasons for what it does, some of them good. Understanding which is most of the first fortnight.
C#, ASP.NET Core and Entity Framework, plus the older Framework applications nobody wants to open. The stack that quietly runs a large share of the internal software in finance, logistics, healthcare and manufacturing.
Very little .NET work starts from an empty solution. It starts from a system that has been running for eight years, has one person who understands it, and cannot be stopped.
The existing solution has reasons for what it does, some of them good. Understanding which is most of the first fortnight.
Entity Framework is excellent until a lazy-loaded navigation property inside a loop turns one page into four hundred queries.
Async all the way down, no blocking on results, and an understanding of why the mixed version deadlocks in the worst possible way.
Some applications should be migrated, some strangled a piece at a time, and some left alone. This is a judgement, not a policy.
Not everywhere. Around the calculation the business depends on, before changing it.
Nobody on the bench knows all of this. We shortlist against what your problem actually needs, and tell you where the gaps are.
No algorithm puzzles. Every exercise below is a task this role does in a normal week, and we watch the method more than the answer.
A real controller action that issues hundreds of queries. We want the profiler or the logged SQL, not a guess.
Code that blocks on an async call. Explain why it hangs and fix it properly rather than with ConfigureAwait scattered everywhere.
A described legacy system. Migrate, strangle or leave. A candidate who always says rewrite is expensive to employ.
Given a business rule, where does it live. We are watching for anaemic models with all the logic in a service.
You interview every candidate we put forward, so these are yours to use. They separate somebody who has run this in production from somebody who interviews well.
Logs the generated SQL or attaches a profiler, and looks at query count before query duration. Knows that Include, projection and AsNoTracking each solve different problems.
Suggests caching or a bigger database server. Both hide a query pattern that will come back at the next data volume.
Async throughout, and can explain that the benefit is thread pool availability under load rather than making any single request faster.
Says async is faster. It is not, for one request, and an engineer who believes that will be surprised by their own benchmarks.
Asks what the application does and how often it changes before recommending anything. Often recommends strangling one module at a time rather than a big-bang migration.
Recommends a full rewrite in the first two minutes. Sometimes correct, never knowable that fast, and usually the most expensive available option.
In the domain or a service layer, with the controller doing routing and validation only. Can say why, in terms of testability rather than tidiness.
In the controller, because it is fewer files. It is also untestable without spinning up the whole web stack.
Yes, and we screen specifically for it because the older applications are where the business risk usually sits. Engineers who only know modern .NET Core are common; ones comfortable in both are not.
No. A lot of .NET runs on IIS on a server in a cupboard, or on Linux containers, or on AWS. We match to what you actually run rather than what the certification assumes.
For an internal application in a .NET shop, often yes, because one language across both halves is a real saving. For a public site with strict performance requirements, we would usually still reach for a JavaScript framework and say why.
Thirty minutes, and a shortlist within a day. If a .net developer is the wrong hire for what you described, you will hear that instead.
Either one reaches Umer directly. No forms sitting in a queue.