TechEarl

55 Back-End Developer Jokes Every Backend Dev Will Get

Back-end humor on N+1 queries, deadlocks, 504 Gateway Timeout, the cron that doubled on DST, connection pool exhaustion, and the migration that ran for four hours.

Ishan Karunaratne⏱️ 2 min readUpdated
Share thisCopied

55 Back-End Developer Jokes

It's fast in dev. Dev has twelve rows.

The ORM generated a query. The ORM generated forty more queries. That was one page load.

I added a database index. The ORM ignored it and did a sequential scan anyway.

Two transactions walk into a bar. Neither one leaves.

The API returns 200 OK with an error message in the body. The front end thinks everything is fine.

We don't have a cache. We have a Redis instance we call a cache.

The migration ran for four hours. It was an ALTER TABLE on a table with one row.

Production threw a 504. The load balancer threw a 504. The CDN threw a 504. Somewhere, a Postgres query is still running.

I caught the exception. I logged it. I have no idea what it means.

The cron job ran twice last Sunday at 2:30am. Daylight savings remembered us even when we forgot it.

Connection pool exhausted. The pool was set to ten. We have eleven users.

It works on my machine. My machine has 64 gigs of RAM and no other tenants.

I rewrote the monolith as microservices. Now I have fourteen monoliths and a distributed deadlock.

The queue backed up overnight. By morning we had three million messages and a really patient consumer.

EXPLAIN ANALYZE returned 800 lines. I read four of them and ordered lunch.

We decided to denormalize for performance. We are now denormalizing for performance, three years later, forever.

The auth token expired mid-request. The request finished. The audit log disagrees with itself.

The foreign key was dropped during a hotfix in 2021. Nobody added it back. The data has opinions about that.

I asked GraphQL for three fields. It went and asked the database for three hundred.

REST is dead. GraphQL is dead. gRPC is dead. JSON over HTTP is somehow still alive and paying our salaries.

There is a service in production that hasn't been deployed in two years. It is the only thing that still works.

Eventual consistency is the promise that your data will be correct, eventually, for some definition of eventually that the on-call engineer no longer accepts.

I tuned the query. It went from 12 seconds to 11 seconds. Stand-up was a triumph.

Race condition reproduced once in three thousand requests. Fixed it. It now reproduces once in three thousand and one.

The new junior asked why the table is called usr_acct_v2_final_new. I told her it was a long story and we don't have time.

The retry logic is exponential backoff. The bug is also exponential.

I added a TODO in 2018 to remove the workaround. The workaround is now load-bearing.

The microservice is one endpoint, two files, and a 400 line Helm chart.

Idempotency was a great idea right up until two clients sent the same idempotency key for two different orders.

We use Kafka for everything. Including sending one email to one user once a month.

The DBA looked at the schema, said nothing, and quit on Friday.

Soft deletes preserve history. They also preserve the row that's been breaking the report for six years.

We have ninety-eight unit tests and one integration test. The integration test is the only one we trust.

The cache invalidation strategy is to deploy.

I refactored the function into ten smaller functions. Now the bug is spread evenly across all ten.

Stack trace says it died in node_modules at line 4837. I close the laptop and go for a walk.

The system is event-driven. The events are driving the on-call engineer.

Postgres said the query plan looked good. The query took 47 seconds. Both statements are true.

There's a JOIN somewhere in this codebase that touches eight tables. Nobody has read it since the person who wrote it left in 2019.

I rolled back the deploy. The data did not roll back. We now have a feature in the database that no code knows about.

Senior back-end engineer: someone who has been paged by every service they have ever built, in chronological order.

The status page says all systems operational. The status page is hosted on the system that is not operational.

Disk hit 100 percent at 3:14 a.m. The audit log table was 80 percent of the database. We had been logging the logs.

Autovacuum has not run on this table since 2022. The table knows. The query planner knows. I am the last to find out.

The read replica is four hours behind primary. Marketing keeps asking why their dashboard shows yesterday.

Eventually consistent, the docs said. Eventually, the customer called support.

User created with id 4827. Next user is id 4831. Three transactions rolled back and took the sequence numbers with them. Now I have to explain gaps to finance.

We stored it as JSON because the schema might change. The schema did not change. The query is still unsearchable.

Half the team wants UUID v7 for the index locality. The other half wrote the migration in v4 last week. Standup is going to be quiet.

The 7 a.m. cron now finishes at 1 p.m. Nobody noticed until someone scheduled an 8 a.m. cron that depends on it.

The queue worker processed the same message twice. The idempotency key is a TODO from 2023.

The rate limiter has never been tested in production because nothing has ever hit the rate limit. We are about to find out together.

Refresh token rotation is implemented. Refresh token rotation is also the reason every mobile user got logged out at 9 a.m.

We had a meeting about API versioning. Path, header, or subdomain. The meeting is now a recurring meeting.

The search box uses LIKE percent foo percent. The full-text index sits next to it, unused, like a gym membership.

Why back-end humor is the quietest genre in tech

Back-end humor doesn't translate to a screenshot. There's no funny CSS, no console error in a bright color, no obvious visual gag. The joke is a 4am page, a query plan nobody understood, a cron that fired twice, an integer that should have been a bigint. You either lived through it and laugh, or you read it once and move on. That's the genre.

See also

Sources

Authoritative references this article was fact-checked against.

TagsHumorJokesBack-End DeveloperSoftware EngineeringDatabasesAPIsMicroservicesTech Humor

Found this useful? Pass it on.

Copied

Ishan Karunaratne

Tech Architect · Software Engineer · AI/DevOps

Tech architect and software engineer with 20+ years building software, Linux systems, and DevOps infrastructure, and lately working AI into the stack. Currently Chief Technology Officer at a healthcare tech startup, which is where most of these field notes come from.

Keep reading

Related posts