There Will Always Be Subject Matter Experts
I’ve started a new project where we’re doing our best to get every developer familiar with all the parts of the system by moving people around a bit, XP style. The idea is that we want to break down the knowledge silos so there’s not just one person who knows how each system works. I think that’s a great idea. If someone wins the lottery (or gets hit by a bus), we don’t want the whole project to crumble.
That said, there’s a particular undertone to some of the moving that worries me: the notion that somehow we can get rid of subject matter experts and everyone will know everything about the system.
I don’t think that’s a realistic goal. I think it’s a great idea to get folks familiar with how the various parts of the system work, but the system itself is far too big and there are too many changes going on over the course of time for anyone to keep intimate familiarity with the entire system in their head. At some point, you’re going to have someone who has more knowledge about how one area of the system works than anyone else, and you’re back to the knowledge silo of a subject matter expert.
The topic of skill set comes up here, too. Some people are better than others at certain tasks, be it due to education, experience, or both. Good idea: peer mentoring involving these folks. Bad idea: thinking you can make everyone on the team as proficient as experienced individual just by switching people around. Not everyone is a DBA. Not everyone is an architect. It’s not realistic to expect you can swap people into those roles and hope the system comes out as coherent and high quality as if you just trusted the tasks to the folks with the relevant skill set.
From a time/savings standpoint, it also occurs to me that putting someone who is good at a task on that task will cost less and get the task done faster than if you decided to put a less familiar person on the task. And if you keep moving people around, you may never actually gain momentum - it’s hard to work fast when you’re trying to learn at the same time. Great experience for the developers, great knowledge distribution, not so great velocity.
There’s a reason the phrase “jack of all trades, master of none” came about. It’s great that folks want to be generalists, and spreading the wealth of knowledge is an admirable goal. But there will always be subject matter experts, and that’s not a bad thing. Rather than try to get rid of them, I might recommend taking advantage of their expertise and doing a little peer mentoring to spread knowledge without trying to abolish the notion entirely. You’ll educate your developers and be able to gain project momentum by targeting the specialized skill set to pertinent tasks, and that’s a Good Thing.