Spolsky: how programmers redefine their way around hard problems
I only just caught up with Joel Spolsky’s amusing and insightful Yale talk posted last December — a return-of-the-prodigal-son sort of thing for this Yale graduate. (Here’s parts one, two and three.)
These quotes were worth highlighting:
Time and time again, you’ll see programmers redefining problems so that they can be solved algorithmically. By redefining the problem, it often happens that they’re left with something that can be solved, but which is actually a trivial problem. They don’t solve the real problem, because that’s intractable.
This is a failing, in one sense — it’s why certain Big Problems in the field never seem to get solved. On the other hand, in the face of deadlines or business pressures, we can surely see the value in a programmer’s ability to take some problem that’s impossible to solve (given available resources) and redefine it as a job that can actually be accomplished.
And:
Being able to write clearly on technical topics is the difference between being a grunt individual contributor programmer and being a leader.
The hardest problems facing most programmers don’t involve communicating with the computer; they arise in the course of communicating with people — colleagues, customers, users.
February 21st, 2008 at 3:55 pm
Hmm… Apparently, Joel’s never heard of George Polya How to Solve it classic. Finding a problem easier to find is precisely a way to open up one’s mind to explore ideas and find approaches to a harder problem. Recommended reading really…
Also, on writing, I agree with Joel that writing is a skill that would be worth teaching to developers though I think that Joel’s style (flamboyant, opiniated, egocentric and light on facts) is precisely what I don’t want to see in technical writing. I happened to have written my own set of technical writing advices as I learned them in college thanks to an outstanding professor.