May 11, 2009

Changing your approach

Last weekend during my ride I found I couldn't clip into my pedals. After I pulled over I figured out why: the cleat had come unscrewed from my shoe.[1] After screwing around with it for 10 minutes with the only tool I had on me (multi-hex wrench), I turned around and rode back to the car.[2]

I meant to take it to a shop during the week, but something always came up. And whenever I thought of taking it I made a mental checklist of the things I figured they might try:

  • hold pedal still and whack one edge of it with mallet + something hard,
  • try and seat the screws into my shoe enough to turn the cleat out,
  • grab the sides with pliers/vice grip and twist.

IMO this is a pretty limited list, and it gives you an idea of how clumsy I am in the physical world. Faced with a similar situation in code I'd have a half-dozen options at the ready and have a pretty good ranking of their effectiveness vs time to complete the task. Pretty much all by instinct.

'Instinct' isn't exactly the right word. The difference between the two is that with one I have very little practice, with the other I have loads. So it's not 'instinct' like a bird who knows how to build a nest. Instead it's an internalization of the space that the problem fits into and the associated solutions. So someone who works often with his hands, even if none of that experience is on bicycles, would have a very different result.

So Saturday I finally tried to fix it myself. I went through my checklist, quickly, with no results. Frustration grew. I then tried varying my earlier options, and the first step was to set the cleat toward one end of the clip so I could bang on it some more and hopefully pop it out. To do this I figured I could shove the cleat over with some leverage, and slid the edge of the large flathead screwdriver between the cleat and pedal, and twisted.

To my utter amazement, the back part of the cleat came loose! A few more twists and the cleat was free. I couldn't believe how easy the solution turned out to be, and how dumb I felt for not seeing it.

Looking back, I knew that I didn't know what I was doing, and compensated by trying to recreate how the cleat gets freed when it's screwed to a shoe. But I didn't know enough to take that lack of knowledge and readjust my approach. What I should have done is look at the stuck cleat in terms of the forces holding it in (the clips), and my options for exterting opposing forces for getting it out. I wasn't thinking of a general problem, but instead tryng to recreate a specific solution.

Generalizing, I think one of the reasons we tend to get stuck on a problem is that we cannot look at it in a sufficiently general way to compare it to other problems. So we focus on one aspect of the problem that looks like another problem we have -- oh, this use of localization in column headers reminds me of the time I used this cool AJAX live editable grid widget, so I'll do that again. And we don't really think about the problem and consider it on its own merits, so it remains unsolved.

[1] Of course, the first thing I did was grab my G1 and search for people who had the same problem. Nothing turned up. Hopefully future sufferers will find this reference to a cleat getting stuck in Time Atac pedals and be able to execute the simple solution (wedge something betweeen the cleat and pedal, and twist).

[2] Fortunately most of the return was downhill, so not being able to clip in and exert more pedal pressure didn't hurt me as much. It still took a little longer to get home, but that's a pretty small price to pay.

Next: Consuming big resultsets with JDBC
Previous: Java validation framework in JavaScript?