Justin James recently wrote about his quest for a senior developer. One of his requirements is excellent debugging skills, which is a topic that is near-and-dear to me because I'm currently working with somebody who has bad debugging skills. So bad, in fact, that I think it's ingrained, a genetic trait, because no matter how much time I spend with him he never seems to get any better at debugging.
The weird thing is when he has a clearly defined job, like "fix the bug by changing the way this package executes this loop," he can get it done without too much drama. In isolation, his technical skills seem to be okay, but it's finding that bug and identifying the fix where he seems to fall down. He spins his wheels grasping in all the wrong directions and eventually ends up asking one of the other engineers to help out.
I thought anybody could learn how to think about all the pieces of the system and know what might be broken and where to look. If you can program, you can learn how to think beyond just the one page of code to the whole system. But working with this guy has made me think that perhaps there are some people who just aren't wired for debugging.
He's not some junior programmer either — he's been in this industry working as a software engineer at least a decade. Plenty long enough you would think that he would have picked up solid debugging skills.
And it's not like he doesn't want to learn. I can tell he's trying, and I know he wants to get better because he wants to impress the boss to get promoted. At least he spends time looking for the source of the bug whenever one comes up. But, inevitably, I hear him asking me over the cubicle wall if I have time to help him understand why his code isn't working the way he thinks it should.
Again, there's nothing wrong with the code he does end up producing. It's just that he spends an inordinate amount of time whenever some bug comes up because he doesn't seem to quite grok how all the pieces fit. When an Oracle package fails, is it the PL/SQL, something in the table data, or maybe the table structure itself? A trigger that's incorrectly updating a sequence? He knows about all those things, but he doesn't seem to be able to string them together into a plan for tracking down the bug. The little picture, the unit of code, he gets okay. It's the big picture, how his code interacts with everything else, that he isn't quite grasping.
I'm not going to give up — I can't afford to. I need him to get better at this so I don't spend so much time helping him out. But I am honestly starting to think that maybe some people just aren't wired to learn this stuff.