At the beginning of the project I’m on, I made a humbling mistake. There were two others on the team, an employee and another contractor. The mandate the other contractor and I were given was to introduce some new techniques to the employees which is all hunky-dory.

The other contractor is a young’un, over ten years my junior. I had interviewed him for another position in the company some months earlier and to his benefit, we didn’t take him on for that one. He’s a developer at heart, it would have been his first contract, and it was for a Livelink position. My rationale was that he’d have left within three months. But when I joined the new project, I was glad to hear they picked him up for it. During the interview, he said all the right things: read blogs, interested in continuous improvement, always honing his craft, etc, etc.

In short, someone with the right attitude but perhaps short on experience. Someone I could mold into a veritable hillbilly powerhouse!

(Now there are a couple of ways this story can end with this set up. First: I take him under my wing, put him on the path of righteousness, and unleash him on the world to make it a better place. That’s boring and I wouldn’t blog it. The more entertaining way is that he turns out to be a fraud and that it was actually his evil twin brother we interviewed. I’ll disappoint and say that that didn’t happen either.)

So my mindset going in was as the wizened old sagacious consultant descended from upon high to bestow his wisdom on the team. After all, the kid was barely out of diapers. He needed direction. DIRECTION, I TELL YOU!!!

I’ll paraphrase one of our early conversations:

Coding Hillbilly (preparing for a long drawn-out follow-up explanation): Let’s make sure we keep our integration tests separate from our unit tests
Assumed greenhorn: Yeah, I’m down with that fo shizzle. I don’t want to be slowing ourselves down waiting for those suckerz to runz, yo!
Coding Hillbilly: Because they take longer to r—…umm…I mean. Yeah.

Later conversations touched on testing techniques, CI product comparisons, composition vs. inheritance, and dependency injection. In a great many of them, he would disagree with me. But what I wasn’t prepared for is that in almost every case, he disagreed with me for valid and well-thought-out reasons. To the point where my argument degenerated to “oh yeah! Well you’re ugly!” And I even lost that argument because I later discovered he’s done work as a model. One argument we had was doomed from the start when I said, “why are you bothering to test on Firefox when the company has standardized on IE6?”

What made all these discussions even more humiliating is that he never shoved his superior knowledge in my face. He was always civil and respectful. But he uses an even worse tactic when I say something clearly wrong: He would always reply with “I see”, then go silent. Allowing me to ruminate on why, in the name of all that is hillbilly, I would claim that it was better to use an <asp:repeater> instead of a <%foreach%>.

This was early in the project, when I was blinded by the “knowledge” that, as the senior developer, whatever I said was always right. Before the kid started, it was clear to me that there was a lot of work to be done training the rest of the team and I was content to take things slowly and use the first project just to get the lay of the land. Then Sundance rolls into town and we’ve now integrated jQuery into the mix, introduced Moq for testing, and refactored our data access layer to use a truer definition of repository. And while not all of this is completely his doing, his perseverance has been a strong contributing factor.

Expectations have since been reset on both sides. Rather than the mentoring relationship I had expected (and tried to push), it is more of a peer relationship now. And in the name of continuous improvement, I’ve learned that you never stop learning. From anyone.

Kyle the Stagnant