Signs your Engineering Culture might not be Agile

If the below scenarios sound familiar to you, chances are that your company is under the “Code Ownership / Specialists / Experts” type of culture. There are many reasons why your company should steer away from this culture.

“We need Marc for this story, he is the only one who can modify that component.”

“Jeff is working on a story and suddenly realizes there is a change in the story where he does not have expertise and the “expert” is on vacation.”

“When doing sprint planning, Sarah (The product owner) has to choose a low priority story just to have enough work for Bryan because he only has knowledge on certain type of technology.”

“During your daily stand-up or planning, when talking about a specific module / technology only a few members of the team participate or challenge ideas because the rest are not familiar with the subject.”

Downfalls of a Specialist Engineering Culture:

  • Team discouragement: Experts / Specialists “titles” assigned to team members creates a culture where it becomes very difficult for other team members to challenge approaches which in the end diminishes the purpose of a having a dev team.
  • Team member growth: Experts / Specialists in time will get to a comfort zone which is a very risky place to be because the result is lower motivation, lack of personal improvement and less impact in the company.
  • Change resistance: When you have been doing the same for a long period of time, changing the status quo is really challenging. People who are used to working on certain technology / tool find it really hard to try a new technology or tool which damages innovation and the ability to adapt to disruptions.
  • Missing opportunities: If your tech company is solely based on people who are experts on a specific set of tools and are not willing to try new things, your company might stall forever. In technology, things move fast and change quickly, if your company can not adapt and pivot faster , chances are that your competitor will and that is the end of the story.

The Generalizing Specialist

So what is a “Generalizing Specialist”? There are multiple definitions that can be found on the web, but the one I like the most is the one by Scott Ambler which is:

Characteristics of a Generalizing Specialist:

  1. Has one or more technical specialties (Ex: Swift Programming, Java Programming etc)
  2. Has at least a general knowledge of software development
  3. Has at least a general knowledge of the business domain in which they work
  4. Actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.

The fourth is really powerful because it sets the tone for the culture and type of person you want to have in your dev team and overall in your company. Having dev teams built from generalizing specialists will give you several benefits such as:

  • Communication improvement: Your daily scrums will be more productive since generalizing specialist have an understanding of how everything fits together therefore they can understand and provide feedback on what their teammates are working on.
  • Flexibility: This goes back to what I mentioned in the beginning of this post where you have Marc, the Specialist always doing this type of story because he is the only one who has technical and domain knowledge about this type of story. In Scrum, dev team members should be able to take on any story as new circumstances arise allowing the team to always be its most productive.
  • Less Dependencies: If you have specialist in your company, chances are that the person will be shared by multiple dev teams which will create a bottleneck and reduce team efficiency.

At TangoCode we decided to shift to the “Generalizing Specialist” skill set and we embraced it as part of our engineering culture, we are still going through that process and we are very positive about the outcome.

Robert A. Heinlein said it best: “A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.” –