Part of this job is learning how to think like a computer. Or worse, like a stack of computers, communicating with each other faster than you can possibly comprehend on a variety of channels and protocols, each with its own quirks. You need to be able to place yourself, mentally, in a stream of data as it’s being processed and understand the interactions taking place. Minor details can cause big changes in interactivity.
At the same time, you need to be able to model users, model your coworkers, anticipate their usage patterns, desires, constraints. You need to understand these touchpoints, because they’re how the quirks get introduced in the first place.
Anyhow. We accidentally fixed the image problem with a system upgrade, which immediately caused 45 tests to fail. Because over the years, lots of devs had copied and pasted the broken code. And, assuming it worked, lots of operations had been inserted into that hook. When they didn’t fire, some people just left them in there as they thrashed about trying to hack the system into a working state.
This made no sense whatsoever. Here we’ve got two systems with identical HTML, one is all kinds of broken, the other works fine. It made no sense that this would be possible. I pulled half the office over to my desk to illustrate this and people agreed. It wasn’t possible, but it was happening.
Cop shows have a trope about thinking like a criminal to catch a criminal. Sometimes, in this job, you have to think like a poorly programmed system to fix that system. It can make you crazy. It can make you giddy. And damn it feels good to figure these things out.