Are you fungible? Or are you a funge?

A flamewar that I've been having with Steve (over @ SQLServerCentral.com) got me thinking about developer fungibility again. It was something that I struggled with when managing teams of developers in previous lives. (Thankfully, I don't manage anybody anymore. Not even me. Heh.)

It almost seems like humans (at least those in IT) have a natural tendency toward insectlike specialization in skills and behavior. Whether it's an aversion to continuous learning or the comfort of being an expert within a niche, I'm not sure. Maybe multiple reasons. I'll leave it to the colleges of education and organizational learning to NOT figure it out. [Please ignore the author's personal biases. -ed]

What worked for us (in one previous life) was a hybrid approach to agile development that combined XP and Scrum seemed to help keep my developers working as generalists across the entire codebase (~150M lines of code). They still had to be prodded to "volunteer" for tasks in areas of the codebase that they weren't familiar with, but... It was good to be the boss! Now, remember that this was back in 2000 and following, before "agile" became a cool buzzword... and there was both senior management and developer resistance to it, which I didn't entirely understand.

Management seems schizophrenic about developer fungibility, or perhaps just doesn't understand the learning cost of deep expertise in an individual technology. Managers want to be able to plug any developer into any task and get results; at the same time, managers want to be able to pigeonhole skill sets to make them easier to check off on an HR worksheet as needed. Seems to be orthogonal to me, but... both desires seem to be a fundamental desire for simplicity in managing developers. Since you can't have both, it would seem to behoove management to require developers to rotate around and not become insects. It's really difficult to interview for fungibility, though. Especially since it's not a word commonly taught outside of MBA school.

Developers, on the other hand, don't seem to have any ambiguity about it. They/we (in large part, not all of them/us) are averse to constantly learning new things. It takes time. It doesn't seem to have measurable value. And it's got a shelf-life. If you don't believe me, you've never dusted off code that you wrote a year ago and wonder "who was smokin' what when they wrote THAT"? Of course, check-in comments don't lie (about who did the check-in). Despite the fact that a fungible developer is more valuable to an organization long-term, the incentive to overspecialize is still strong. While the talented geek pool is still too small for the demand, it will take an individual choice not market forces to change the behavior of the developer population. Don't believe me? There are still companies hiring COBOL programmers and developers who refuse to write anything but command-line interfaces...

Not sure where I was going with this or why I started, but I guess that's normal... Hrm. Maybe it resonated because I've seen a lot of developer behavior lately that seems to be a bias toward insectlike specialization with absolutely no interest in things that aren't in a specific, narrow niche. To the degree where it even influences product direction. Things outside the "known" are apparently scary to many people. Don't look out the windows! (Take the pun any way you like.)

In Dave's perfect world, management needs to tell HR to get stuffed and figure out how to interview for general talent and the ability to learn quickly AND developers need to actively seek positions where they'll constantly be challenged with new and different work. But nobody asked for my opinion. You get what you paid for it!

I personally don't want to go the way of the typewriter repairman, which is why I'm always trying to be at the leading edge; and I actually happen to enjoy learning new stuff and plumbing the depths of other peoples' code, but I wish that more prospective employees did -- because someday I'll probably start another technology company and be looking to hire some fungible developers and I hope by then that the colleges and universities are turning out lots and lots more flexible-thinking coders.

Yes, they're both words. It's called a vocabulary. Look it up! :-P fungible | funge