Problems are often more simply and better solved if dealt with earlier in the pipeline of the problem. This means examining the reasons an issue exists, moving up the causal chain to find the most fundamental cause of the issue, and solving the problem there.
Let’s say we believe eating processed foods accounts for a 20% increase in the chance of having heart disease. Then, as long as we believe reducing an individual’s processed foods consumption is < 20% as costly as curing their heart disease (which may be impossible?), then we should still be focusing on the upstream solution that is lower cost and simpler.
When we look upstream for a solution to a problem, it forces us to look at the whole system rather than at just a single symptom. This allows us to potentially bundle what would be multiple band-aids for individual symptoms into single systematic solutions.
Designing public benches such that homeless people cannot sleep on them is exactly this kind of (objectionable) band-aid to a systematic problem. Designing the benches this way is cheaper than solving the problem as a whole. But there are many symptoms of this problem, and finding an upstream solution can help us resolve more of these symptoms together.
It is worth going as far upstream as possible so that we can solve for as many symptoms as possible. The cost of an upstream solution should be compared against the cost of all the symptoms that follow.
However, solving problems downstream is often easier because the symptoms may be clearer to see, and prescriptions faster to verify in a short period of time. For example, it’s easier to see how seatbelts save lives than it is to see how lower speed limits save lives (crash tests vs large datasets).