Resourcefulness. It rants right up there with “Be prepared.” What the hell are you talkin’ about? While I’m talking about programming, it can apply to most anything that we do. There’s entire web sites devoted to kludges out there.

Most of us are pretty resourceful folks when it comes to getting things done. If there’s something that needs to get done we want to fo it. The problem occurs when something gets in the way. It could be as simple as not understanding the technology that you are using to as complex as not understanding the system’s design.

When people hit upon a problem that causes them to slow down there’s a continuum of reactions I’ve seen. On one end you have people that at the drop of a hat raise their hand and ask for help. On the other are folks that never ask for help. Those are both defective behaviors.

The question-askers, by never forcing themselves to think a bit, don’t want to grow what they can do. Not only that but they wind up annoying and slowing down the work of everyone around them. Learning something new requires a bit of work — abstract work — that a lot of people find uncomfortable. It’s rewiring your brain and twisting it in ways it’s not used to. It also requires practice — once you get out of the habit of learning, it’s frickin’ hard to get back to it.

The never-askers take things to the other extreme. They will find a way around the problem, dammit. All they have is what’s in front of them. If a hammer is the only thing in their mental tool-belt then the hammer will have to do; even if the job really needs a screwdriver. Because asking around to see if anyone has a screwdriver is bad. Why? I don’t know. I hypothesize that some people just don’t like to bother anyone, and some folks don’t want to come off as “weak.”

You have to deal with the problems caused by both anyway, the only difference is when you have to deal with it. The askers bug you right now. They don’t get out of your hair. They interrupt you when you’re working on.

But I’ll take that over the never-askers any day of the week.

The never-askers just put time-bombs in the code. Not intentionally of course. But they are still there none-the-less. Just because a question wasn’t asked, something new had to be invented. The perfectly good solution that might have been sitting under their nose was ignored. Strange solutions are devised. Hacks on top of hacks are written out of frustration. More insidious than that, a new pattern now exists in the code — someone might look at it and think “well, that’s the way it’s been done before, I’ll just go ahead and do the same thing.” And it multiplies!

The key, of course, is to try to manage programmers to the middle ground. First try to get something working. Then, if things aren’t coming together or it just doesn’t smell good, ask someone else. The same advice applies to both extremes — just different parts of it.

All of us have strengths and weaknesses in how we attach to problems. We all have different strengths and weaknesses though. We need to find a way for us as a team to use all of our strengths.