Specialization vs Generalization in Development Shops
Why has the notion of specialization become such a taboo topic in the development world?…. I find it funny how it seems all the rave nowadays to promote jack of all trades type of workers, half the time simply because if everyone says specialization in dev shop is bad, then it must be.
The true question I ask is what is the benefit vs debt of this and have we gone too far in implementing the idea? I’m not saying I don’t support the notion of having a base of employees who are educated in alot of areas.. (generalists) my point is more around specializing in a business sense (domain), not necessarily technologies being used.
If you were in need of open heart surgery, wouldn’t you rather a specialist who was much more educated in the matter and who has years of experience perform the surgery? This is a simplistic example.. but I wonder how this relates to the business world.
If your are developing a financial application and there is potential for ‘fatal’ bugs that could seriously damage the business… wouldn’t it make sense to have the developers working within that specific area of the system focus their expertise on expanding and enhancing that domain rather then shuffling resources in and out each time taking the hit of having to educate people on changes made since they last worked in it.. or worse yet, educating them as to how the system works period… Much expertise only comes from experience… so without the opportunity for ongoing experience how can you expect to grow any experts?
I think there is a fine balance that needs to be maintained between the two approaches. Obviously pure specialization is a killer in itself as individuals get blinded by a lack of vision as to how their work is integrating with the groups around them. However.. I do feel there is room for specialization from the sense that you develop an natural urge to improve and grow the system over time. Along for the ride comes the addition of increased domain knowledge and the ability to forsee potential difficulties / enhancements as the system evolves..
So bottom line for me is I’m not sold that this mandate of ‘specialization being bad’ in a development shop… In general , pure specialization is an obvious hinderance to many organizations.. either extreme, being pure generalist or pure specialist has its pitfalls. All I’m questioning is that each shop needs to sit back and truly identify what would work best for them because in some cases I can see where a modified form of business or functional specialization makes sense.
Another post I read put it quite niceley…
“…try and define more clearly the shared concepts, skills, experiences,
and tools that make up a generalist in our unique style. We must
embrace differences too and allow people to develop along paths that
won’t be identical. We can accept that on any given day, one person
will be more specialized in one topic or another shaped by recent
experiences, interests and years on the job. No problem. Nobody should
to work in a vacuum though, specializing in things that nobody else
understands or cares to understand.“