Generalists, or specialists?

I heard recently that for a software company, an important part of getting its code to be of world-class quality is to have its developers be specialists rather than generalists.

Related to yesterday’s post, I am concerned that such specialization could lead to getting stale at your craft, dulling the developer’s innovative power.

I am curious and interested in a wide range of technologies, and I want to keep learning and growing.  I don’t see how I could do that if I concentrated on one small set of technologies to the exclusion of all others.

On the other hand, having to do a bunch of different things at the same time might diffuse my energy.  Perhaps the specialization we’re talking about is specialization during a snapshot of time — sort of a “serial specialization” (or I guess you could also see this as “single-threaded generalization”) — so that right now I’m only working on set-of-technologies A and getting good expertise with that; but six months to a year from now I may be working on technology set B… rather than meaning “you work on set-of-technolgies A forever”.

Which, then, is really best for the individual developer who wants to master his craft: generalization, specialization, or “serial specialization”?

Which is better for his company?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s