Imagine one day you notice a leak in your bathroom. Water is dripping from the ceiling. Naturally you grab a bucket. The drip is slow enough you only need to empty the bucket once or twice a week. You live in a high rise, so who knows what might be happening. In the rush of your own day to day responsibilities, the bucket seems sufficient. Fast forward several weeks later and you find out several other residents have started experiencing leaks as well. They too have resorted to a bucket.
Everyone knows the condo association is slow to act on anything, so nobody individually wants to bother them with finding the real cause of the problem. But, now that so many people are affected, you seek help to get to the bottom of things. A plumber is brought in and discovers that the unit above yours has a small crack in a pipe. It’s been dripping water, slowly, for a long time now. The leak is plugged and repairs are done for the damage.
The longer we wait to get to the root of problems, the greater their impact on everyone. Fortunately at the first sign of a leak, most of us are on the phone with a plumber.
Unfortunately, this is not the case in many software systems. In the rush to cram in feature after feature, many simply try to patch up leaks with buckets. Leaks that are often on the scale of a monsoon. This is especially the case when the problem is likely to have originated somewhere else, in a system we depend upon. In an upstream system. For whatever reason, instead of reaching out to the plumbers of the upstream system and asking them to have a look, we’ll grab another bucket. Or, even worse, we’ve reached out and the plumbers upstream don’t feel they have the time or don’t think it’s that big of a problem. Eventually, we’ve got someone on our own team, full time dumping buckets.
If we don’t reach out when there’s an upstream problem, that problem will quickly fan out to every other system that depends on it. Much like the delta of a river. Before we know it, new people that subscribe to that upstream service will be greeted with a pile of welcoming buckets, par for the course when working with said system. The cost to fix the upstream leak exponentially manifests in buckets for everyone downstream.