The Two Moods of a Programmer: Empathy and Unholy Rage
Description
A two-panel meme format based on stock photos, illustrating a programmer's conflicting attitudes toward third-party software. The header text for the entire meme reads: 'Programmers have two moods when using other people's software:'. The top panel shows a man sitting calmly at his desk, looking thoughtfully at a computer monitor with his chin resting on his hand. The text overlay reads, 'This is a complicated domain, I'm sure the devs are doing their best'. This represents the initial, empathetic, and professional mindset. The bottom panel depicts the same man, now wearing glasses and visibly enraged, shouting at the screen. The overlay text on this panel is much more aggressive: 'What the actual fuck is wrong with these fucking donkeys? This is absolute horseshit and whoever wrote this code should be burned at the stake!'. This meme perfectly captures the Jekyll and Hyde transformation developers undergo when a tool or library, which they initially respect, turns out to be buggy, poorly documented, or maddeningly counter-intuitive, causing their professional patience to evaporate instantly
Comments
7Comment deleted
The transition from 'They probably had good reasons for this design' to 'This API was designed by a committee of squirrels on meth' usually takes about one failed API call
My emotional state machine for third-party libraries has two states - CompassionateExceptionHandling and RethrowWithProfanity - and any semver-minor release is an epsilon transition between them
The real bug here is thinking we'd maintain the same energy level of empathy after discovering the third-party library stores all data in a single VARCHAR(MAX) column with pipe-delimited JSON strings nested inside XML tags
Every senior engineer knows this progression intimately: you start with 'Chesterton's Fence' reasoning - surely there's a good architectural reason for this seemingly bizarre abstraction layer. Three hours later, after discovering the 'abstraction' is just nested switch statements wrapped in a factory pattern that instantiates singletons, you realize the only fence here is the one preventing you from reaching through time to stop the original commit. The real kicker? The git blame reveals it was written by someone who's now a Distinguished Engineer at a FAANG company, and suddenly you understand why they left
The two moods map to two designs: import it directly, or wrap it behind a circuit breaker, idempotent retries, feature flags, and a plan to strangle it in Q3
Using other people’s software oscillates between 'they had brutal constraints' and 'ah, the constraint was a static initializer that does network I/O and spins up a thread pool on import.'
Empathy overflows into rage faster than a third-party lib's unhandled promise rejection in prod