Generalize or Specialize

The question is, do you generalize or specialize?

Do you learn surface level stuff about everything.  Or do you go deep on specific technologies and become an expert.

In today's day and age, things are changing so fast nobody can learn everything there is to know about everything.  So, you can take the approach where you learn enough to talk about any subject.  Or you pick a technology that interest you and learn everything there is to know.

So with Hadoop, there's a lot to learn.  Hadoop version 1 is already legacy, now there's version 2.  And there must be 20 individual projects associated with it now.  And there's the installation, administration, support, loading data, getting the data, security, graph databases, machine learning, SQL like actions, ETL languages, ingesting data tools, streaming data, and so on.

Plus there's dozens of third party tools which integrate with Hadoop.

How can one become an expert on everything and stay current?  So do you generalize or specialize?  That is the question.