Generalizing Specialists and Transactive Memory

In the last decade I’ve been fortunate, or unfortunate depending on your view, in going through multiple company transitions from Waterfall to Agile practices for organizing software development work.  Most…no, all the transitions didn’t go very well.

What they all had in common was that they hired a “certified” scrum master to lay down the rules for the new Agile practice. (yes, that is ironic)

All the scrum masters that I worked with preached an idea that I always took issue with: all developers are to be treated as generalists.  Any developer in the team should be able to pick up the top user story in the backlog and do it.

This never worked for any of the companies I was at. Developers are good at different things. Some developers are really good in front-end code, others are CSS gurus, and some were strictly database developers which only knew SQL.  Software is so complex and diverse, that there is no way that developers are going to be awesome at all the different domains needed to create great software.  Imagine telling the SQL guy that he has to do CSS development.  Ha!

Transactive Memory

It is inefficient to have every module within a system store and retrieve the same information.  Evolution figured this out a long time ago.  One way it figured this out, is through the concept of Transactive Memory.

It is inefficient to have every module within a system store and retrieve the same information.

Transactive Memory (Wiki) is a memory system of collection, storing and retrieving knowledge throughout a group.  This is a form of specialized division of labor.  Instead of retaining a piece of complex information, like say, how to create indexes within a stored procedure in a SQL database, I know that Bob over in the corner desk is really good at it.  When I need to get that information, I talk to Bob.

Separating domains of knowledge within different parts of the memory system allows the system to build a more complex and potentially effective knowledge base.

This is one reason why the generalists approach to development never worked within the dogmatic Agile approaches sited above.  Not everybody can be great at everything and transactive memory develops naturally within a group of individuals, such as a development team.

Generalizing Specialists

The latest buzz word in the tech industry is Generalizing Specialist. The term generalizing specialists has come to mean an individual who has a particular area of deep expertise, but also has experience in a large number of other areas that may not be directly related to their core area. (AgileAdvice) Gaining more generalized knowledge outside your particular career path, is very advantageous.

In his book Range: Why Generalists Triumph in a Specialized WorldDavid Epstein argues that generalized knowledge is a requirement for solving complex problems or creating complex solutions. “The more contexts in which something is learned, the more the learner creates abstract models, and the less they rely on any particular example,” writes Epstein.

Epstein sites many examples of Generalizing Specialists outperforming Specialists.  One was that of a team of E. coli specialists vs a team of  “scientists with chemistry, physics, biology, and genetics backgrounds, plus medical students”.  Both teams were tasked at creating general solutions for E.coli research.  At one point both teams encountered the same experimental problem with regards to protein measurements getting stuck in filters. The generalists team was able to solve the problem the same day, due to one of the team members drawing on knowledge from their medical degree.  The specialists took weeks to solve the same problem, even though this was their area of expertise.

Overview

Expecting a software developer to be a generalist, that is good at developing in all software domains isn’t realistic.  Through the concepts of Transactive Memory, teams naturally segregate knowledge to individuals within the group.

High powered software teams consists of “generalizing specialists” that have a high knowledge of a particular domain, but a breadth of broad generalized knowledge.

Leave a comment