The topic of specialization vs generalization in the software development world seems to come up more and more nowadays. On .NET Rocks a few weeks ago I remember the guys talking about the fact that you can even specialize within .NET development nowadays - you can be a WCF guru, for example, or an ADO.NET specialist.

In a typical week at my job, I have to have a decent handle on the .NET framework (including ADO.NET, web services, Windows Forms and Compact Framework), SharePoint administration, SQL Server (both T-SQL development and administration), SQL Reporting Services, Lotus Notes (both administration and development) ... the list goes on.

Would my job be more boring if I were just a database administrator and only had to worry about SQL Server? Probably. Would I be better at it? Definitely.

That's not to say that I want to specialize. I just wonder sometimes whether my life would be easier if I could focus on one aspect of the job, and delegate responsibility for, say, our SQL Server merge replication infrastructure, to a dedicated database administrator.

What do you think? For those who don't work with me (I already know that you guys are in the same boat), do you generalize or specialize? Would you prefer one over the other?