Agile Development: Specialists versus Generalists

February 15, 2011

Vikas Hazrati’s post: Do Specialists Outperform Generalists on an Agile Team? does a great job of summarizing the divided opinions about whether specialists or generalists are better for Agile teams.

As a manager in an Agile organization this issue interests me because I want my Agile teams to perform well, which means that I need to staff them so that they are set up for success. I also need to provide career guidance to people, and the choice of being a generalist versus a specialist is pertinent to the conversation.

My personal opinion on this subject can be summarized as follows:
  • You need both specialists and generalists in your organization, with a need for more generalists than specialists.
  • Specialization versus generalization is a career choice.
  • People need to avoid over-specialization.
Specialists are well-versed in specific subject matter, with deep knowledge and capabilities that is not possible for others to acquire because there simply aren’t enough hours in the day for a generalist to THAT good.

For example, I can design a user interface and I can appreciate the need for a great user experience, but I’m definitely NOT a user interface designer. The same goes for database design; I understand what a relational database is all about and I understand normalization, but I would never classify myself as an expert in database design because I don’t specialize in it.

Good generalists can perform many of the activities of specialists, but at best you will end up with something that is “good enough,” but not great. And that's the best-case scenario. Things can go bad. Like user interfaces that seem like they are deliberately designed to frustrate and discourage use of your software.

When it comes to staffing an Agile organization, my opinion is that specialists should be a definite minority relative to the generalists. Specialists should be shared resources, be utilized by Agile teams comprised of generalists in one of two ways:
  1. Temporarily assignment to a team when the team has identified a specific need for that expertise. The specialist’s role would be to perform work that the team lacks the ability to perform. The team should optimize the specialist’s time – and reduce the total time required of the specialist – by preparing in advance by creating UI prototypes or a preliminary database design, for example.

  2. Consultation to a team without performing any work. The objective in this case is to advise and guide the generalists, sharing insight and helping the generalists implement a better, more polished solution than possible without that guidance. Again, teams should prepare in advance to optimize the value received from the specialists, and to be as crystal-clear as possible about the advice that they are seeking.
Generalists, on the other hand, should be generalizing specialists in the mold of Scott Ambler’s definition of a generalizing specialist, someone who:
  1. Has one or more technical specialties (e.g. Java programming, Project Management, Database Administration, ...).
  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.
Personally, I'm OK with a solid developer who lacks business domain knowledge. Development experience comes first in my book, and it is expected that a developer will pick up on the business aspects or time even if he or she starts with zero knowledge.

I'm definitely supportive of Scott's point, "actively seeks to gain new skills..." Over a period of years, any good professional should seek to round out his or her skills; being a generalizing specialist should not be a stagnate existence. Professional growth is important if you expect your salary to continue to grow, and the added versatility gives you the advantage of greater marketability.

Career guidance ultimately comes down to the individual:
  • What does the individual enjoy?
  • What are their strengths and preferences?
As a manager I try to make what opportunities that I can available to help each person grow and develop. However, there might be times when there isn’t enough room in our organization to accommodate the desires of each and every person – at least in the time frames that they seek. But I try!


Donald Redding said...

I found it much useful, the ideas, information and regarded points have been described here are of the most importance to me, I'd also like to add it to my catalogs as well. Check for best essays.

January 4, 2015 at 9:55 AM
Estela Dupont said...

I would like to point out my love for your generosity for folks that absolutely need help on the situation. Your personal dedication to passing the message around has been quite insightful and has constantly enabled employees like me to achieve their targets. Check seder plates for best plates.

February 13, 2015 at 11:57 AM
DanielStewart said...

Existing minus the solutions to the issues you've fixed as a result of your entire article is a crucial case, as well as ones which could have in a wrong way affected my career if I hadn't discovered your blog post. Check professional phone answering for best Phone Answering.

February 14, 2015 at 2:07 PM
Devi.Angularjs said...

Yeoman Training Yeoman Training D3 Training in CHennai D3 Training ReactJS Training in CHennai ReactJS Training | Gulp Training CommonJS Training in Chennai CommonJS Training

September 6, 2016 at 12:42 AM
Devi.Angularjs said...

HTML5 Training in Chennai HTML5 Training in Chennai | Angular 2 Training in Chennai Node.js Training in CHennai Node.js Training in chennai Ecmascript 6 Training in Chennai Ecmascript 6 Training in Chennai ES6 Training in Chennai ES6 Training in Chennai

September 6, 2016 at 12:43 AM

Post a Comment