A specialist broadens his skills
A specialist broadens his skills into related disciplines in order to be able to communicate better with people in those disciplines, and to be able to undertake tasks in those disciplines.
It is not reasonable to expect a single person to maintain expert level in all the skills involved in software development, as these require constant practice and research. However, concentrating on a single skill to the exclusion of all else is not the best approach. To achieve the highest useful ability in a single specialization, it is necessary to be able to relate this specialization to those disciplines that supply or consume the information respectively used and created by this specialization. In practice, an individual can, with time, attain expert level in several related disciplines. Used in conjunction with the DeployAlongTheGrain approach, TooMuchCommunication can be ameliorated. Used in conjunction with DevelopingInPairs, an extremely flexible workforce can be brought into existence.
An alternate route toward GeneralizingSpecialist is where a generalist specializes in one or more areas.