Implications of Specialization
The most obvious benefit of specialization is the potential of becoming an expert in the technology. If you become an expert, you can command higher pay and possibly get cooler projects to work on. It does take some time to get to the expert level, but even internal to your company you can become the “resident expert”. The “resident expert” is the person who knows the most about the technology and most likely to answer any questions. Specialization is also very helpful in the consulting field. When looking for consultants, many companies want to get the most experience for their dollar. So, they look for experts in specific technologies to fill roles on their projects. You also tend to learn things that some people will never need to know. If you like knowing the more esoteric aspects of a technology, then definitely become an expert.
Interviewing as a specialist is typically fairly easy. You are an expert in a technology, so you will not be asked questions on technologies that are not your focus. This is mostly a benefit, but in some environments especially more corporate environments, it can be a disadvantage. Product companies need specialists as they have very specific needs. Corporate environments need people who are good at multiple things. Even if you are mostly a JEE developer, you will still need to write some web pages because you are writing a web application. One major issue with specialization is knowing that one day your skills will be outdated. At that point you need to become an expert in some other technology.
Implications of Generalization
Depending on the position being pursued, interviewing is a mixed experience. Many companies will be looking for a JEE specialist, and you will flounder with some of the questions asked. In a company that is writing web applications, you might look like a rock star because there are not any technically detailed questions. The other major benefit to being a generalist is that you are already always learning. You need to constantly evaluate a technology to see if it fits with the technologies you are already using. This is extremely helpful if you ever change jobs.
Generalize or Specialize?
The question is really a personal preference. In my case, I need to generalize as I do not care as much about some of the detail needed to become a JEE expert. I would rather be able to write an entire web application in a short amount of time. Some people love the details, and I have some consulting friends who are becoming experts in a technology. When I need this level of knowledge they will be getting a call. One caveat to all of this is that the “benefits” depend on the environment you are currently in. I mentioned consulting in the specialization section, as many consultants do become specialists. There are many consulting firms that use more generalists because of the benefits to broad knowledge. Again, it is a matter of preference. More importantly, find out what you want to do and pursue it.