Changes both sides of a contract at once
A new field is a migration, a serializer, a type and a form control. One commit, one review, one deploy.
An engineer who can carry a feature the whole way. Schema change, API, interface, deploy, and the log they check afterwards. Not two specialists in one body, but one person who does not need a meeting to change both sides of a contract.
Splitting a feature between a front end and a back end engineer costs two specifications, two queues and one argument about whose fault the bug is. One person skips all three.
A new field is a migration, a serializer, a type and a form control. One commit, one review, one deploy.
Because they are the one who will be awake when it runs against production data, and they know the rollback matters more than the change.
Not from a mock that always returns the happy case. Empty states, slow states and error states get built because they get seen.
Pushes it, watches it, and fixes it. Nobody is paged who has to read a handover document first.
The temptation in this role is to put logic wherever it is easiest today. A good one holds the line on where things belong.
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 repository, a real migration, a real form. We are watching the order they do it in and whether the rollback exists.
A pull request with a subtle issue in it. Most engineering time is reading, and this is the part that interviews usually skip.
Two approaches, one cheap and one right, explained without jargon so that a non-engineer can actually make the decision.
Where does this logic belong and why. We are listening for a principle rather than a habit.
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.
Says both, and explains the split. Client side for the person typing, server side because the client cannot be trusted, and names which one is the real one.
Says the front end handles it. That is an application waiting to be posted to directly, and it will be.
Talks about the backfill, the lock, the rollback and the order relative to the deploy. Knows that adding a column and using it are two releases, not one.
Describes running a migration and deploying at the same time. It works until the table is large or the deploy is slow, and then it does not.
Thinks about the consumer, over-fetching, and how the shape will change. Has an opinion about returning the whole object versus what the screen needs.
Returns the database row. Convenient today, and a breaking change the first time the schema moves.
Has an answer involving optimistic updates, a loading state that is not a spinner over the whole page, and what happens on a failed retry.
Has not thought about it, which means it was only ever tested on a fast connection next to the server.
Sometimes, and we screen for it. The honest version is that a good full stack engineer is genuinely strong on one side and competent on the other, and knows which is which. We will tell you which way round the person you meet leans.
They can build from a design and will make sensible choices without one, but they are not a designer. If the interface is the product, pair them with a designer rather than hoping.
Best under about eight engineers, where one person owning a surface is a feature rather than a bottleneck. Above that the boundaries usually want specialists.
Thirty minutes, and a shortlist within a day. If a full stack 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.