If you have a big problem and a small problem, and you solve the small problem in a way that makes the big problem worse, that’s a bad solution.

Imagine “solving” a squeaky air conditioner fan by breaking the AC completely!

In the US, people voting who shouldn’t is a much smaller problem than people who should be allowed to vote not being able to, or mishandling of ballots after the vote. Voter ID laws and roll purges “solve” the smaller problem by making the bigger problem worse.

(You might already have an acceptable ID, or the documentation needed to get it — and the time and money to handle it. But what if it’s hard to get the time off? What if you can’t cover the fee without skipping meals? What if you need to cross two states to get the docs and can’t afford the car/gas/motels?)

If you assume good faith? Pushing to block people from voting, while simultaneously refusing to protect registration rolls or polling machines from mishandling or cyberattacks that we know are ongoing, is bad problem solving at best.

But it’s hard to assume good faith. Because those ID requirements and purges are more likely to unfairly disenfranchise people who might vote Democratic. And the ongoing Russian attacks that Mitch McConnell doesn’t want to guard against have favored the Republicans.

So it’s really easy to conclude that GOP politicians don’t want fair elections. They want elections tilted in their favor. Even if it means leaving the door open for a hostile foreign government to attack.

And anyone else who finds those vulnerabilities.

Sometimes it’s worth stepping back and asking yourself, “Is the problem I’m trying to solve really the problem I want solved?”

For example, “I can’t connect to this coffee shop’s wifi” may be worth trying to fix for a couple of minutes, but the real goal is connecting to the internet. The coffee shop just happens to be the most convenient/obvious means of doing so. If you have another way of connecting — say, by tethering to your phone connection — you’re better off switching methods instead of continuing to chase what may be a dead end.

Similarly, with software design, whenever you begin with a set of parameters and start off down a path that seems to be getting more and more complicated, it’s worth taking a step back and asking: what am I really trying to solve here? Are the constraints real, or can I drop some of them and take a different, more effective approach?

If the problem is presented as: How do I use these tools to accomplish this task, sometimes you’ve got to use those tools — but sometimes another set of tools will do the job better.

ยปAll pages site-wide with this tag