Brilliantly solving the wrong problem:
“You solve the problem. And you solve it the best way it can be solved. And you solve the right problem. And the easiest mistake is you brilliantly solve a problem, but it’s not the right problem”
—Richard Buckland
This sounds like utter nonsense - how can you brilliant solve a problem, and end up solving the wrong problem?
Well I recently refactored a bit of my role playing system’s code, which I posted on this blog. The reason I refactored it is because I solved the wrong problem.
You see nested attributes, a beautiful, expressing, terse way of dealing with multiple models, weren’t working for me. So I decided to solve the problem by writing my own code which assigned a player all possible skills, assigned the values set in the form to these skills, and then deleted whatever skills were still empty.
I solved the problem. But I solved the wrong problem.
I got skill assignment working. But I never learned how to use the wonderfully expressive nested attributes helpers!
I’m inclined to think that anti-virus software exists for two reasons:
- There is a lot of money to be had in solving the wrong problem
- Microsoft (& anti-viral friends) are too lazy to solve the right problem.
The problem is: lots of malicious code exists for our platform.
The solution is: make software which detects, prevents, and [attempts to] clean up after the malicious code on this platform.
The solution should be: prevent malicious code from running on our platform.
Why, if it is necessary, is anti-virus not an integral part of the Windows system?
Seriously? Why should another piece of software exist to protect the platform? Shouldn’t the platform defend itself?
The answer is painfully obvious, I’m sure Norton is slipping some bones Microsoft’s way. MSE works surprisingly well, and Microsoft has released some impressive stuff, they clearly have the talent to defend their platform. So why haven’t they?
This goes beyond scrapping the codebase that is Windows, I’m asking why Microsoft Security Essentials is not a required component of the operating system!
I feel proud that I decided to go back and solve the right problem in my codebase.
I encourage you to find a problem that you’ve recently solved “the wrong way” and do it “the right way.”
Not even that, just start by doing it “a better way(TM).”