23 Feb 2026
Job Shop Scheduling: Why the Rush Job Often Finishes No Earlier
You rushed a job through the grinder and it still shipped the same day. Learn why queue time decides job shop lead times, and how to rush a job so it finishes earlier.

The urgent repair part came in on Monday. You bumped it to the front of the grinder queue, and it was ground by lunchtime. Then it sat for two days in front of the heat treatment furnace, behind a batch that had been waiting since the weekend. It shipped Thursday, the same day it would have shipped if you'd done nothing.
That isn't bad luck. It's how job shops behave. Job shop scheduling is the problem of sequencing jobs that each follow their own route through a set of shared machines, so that orders finish on time without flooding the floor with work in progress. The catch is in "their own route": a decision at one machine changes the queue at every other machine.
What makes a job shop different
In a flow line, every product visits the same machines in the same order, and the only question is sequence. In a job shop, job 1 goes mill → grinder, job 2 goes grinder → mill, job 3 goes saw → mill → heat treat → grinder. Machines are shared, routes cross, and a job spends most of its life waiting for the next machine.
That waiting is queue time, and in many job shops it makes up most of the lead time. The work itself is the small part.
Job shop scheduling example: 4 jobs, 2 machines
Two machines, a mill (M) and a grinder (G). Four jobs, all released at hour 0:
- J1: M 3 h → G 2 h
- J2: G 4 h → M 1 h
- J3: M 3 h → G 3 h
- J4 (the rush job): G 2 h → M 2 h
Each machine works first come, first served, with ties broken by job number.
Plan A: no priority. Grinder: J2 0–4, J4 4–6, J1 6–8, J3 8–11. Mill: J1 0–3, J3 3–6, J2 6–7, J4 7–9. Finish times: J1 8, J2 7, J3 11, J4 9.
Plan B: rush J4 to the front of the grinder only. Grinder: J4 0–2, J2 2–6, J1 6–8, J3 8–11. Mill: J1 0–3, J3 3–6, J4 6–8, J2 8–9. Finish times: J1 8, J2 9, J3 11, J4 8.
J4 jumped four hours ahead at the grinder and finished one hour earlier. Why? It reached the mill at hour 2 and waited until hour 6 behind J1 and J3. The wait moved; it didn't disappear. Meanwhile J2 lost two hours.
Plan C: flag J4 as a rush along its whole route. Grinder as in plan B. Mill: J1 0–3, J4 3–5, J3 5–8, J2 8–9. Finish times: J1 8, J2 9, J3 11, J4 5.
Now J4 finishes four hours earlier than in plan A. Its lead time drops from 9 hours (4 working, 5 waiting) to 5 hours (4 working, 1 waiting). J3 still finishes at 11, because its grinder slot never changed. J2 pays the same two hours as in plan B.
The lesson: expediting a job at one machine buys only as much as the next queue allows. If you rush a job, rush it along its whole route, and decide in advance which job pays for it.
Queue time, explained at the airport
Airport security is a job shop with one route. When the lanes are half busy, you walk straight through. When they're nearly full, a line forms that seems far out of proportion to the number of travelers.
The math behind it: waiting grows roughly with u ÷ (1 − u), where u is utilization. At 80% busy, the factor is 0.8 ÷ 0.2 = 4. At 95% busy, it's 0.95 ÷ 0.05 = 19. Fifteen more points of utilization, almost five times the wait.
That's why releasing more work to the floor doesn't ship more; it just waits longer. Little's law puts the same idea in one line: lead time = WIP ÷ throughput.
Myth: 100% utilization is a good sign
In the example, the grinder was busy for 11 of 11 hours: 100%. It was also the reason every rush had to be paid for by another job. There was no free hour to absorb anything.
A machine at 100% doesn't prove the plant is efficient. Usually it means that machine is the bottleneck, and every job in the shop is lined up in front of it. The mill, busy 9 of 11 hours, had slack, and slack is what makes a rush possible without breaking two other orders. How to find and protect the real constraint is covered in manufacturing optimization starts at the bottleneck.
The practical rule: keep non-bottleneck machines below full load on purpose, and don't release more work than the bottleneck can finish.
Four habits of good job shop schedulers
- Schedule operations, not orders. The due date lives on the order; the delays live on the operations.
- Look one machine ahead. Before moving a job at the grinder, check the queue at its next machine.
- Control the release. Starting a job early rarely finishes it early; it just makes the queue longer.
- Decide who pays. Every rush has a cost. Name the job that slips before you rush, not after.
The general principles behind this, like backward scheduling and the frozen zone, are in the production scheduling guide. How an operator picks the next job when several are waiting is a separate question, covered in dispatching.
How it looks in factory.online
In factory.online, each operation sits on the Gantt row of its own machine with finite capacity, so the planner sees J4's grinder bar and mill bar at the same time. Move J4 forward on the grinder, and the gap in front of its mill operation is right there on the chart. A planning scenario lets you compare plan B and plan C, including what happens to J2, before the job orders go to the floor.
kafaa.ai addresses jobshop scheduling and sequencing under production constraints. It can support the comparison of alternatives where machine availability, setup losses and delivery priorities need to be considered together.
If your rush jobs keep shipping the day they would have shipped anyway, let's look at your routes together.