Specialist vs. Generalist: Who Wins?
sitepoint.com
sitepoint.com
Technologies on the web are changing so fast that from a specialist's perception, there's scarcely enough time to learn a technology in depth before it's outdated. There are outliers, generally those implementing the technology themselves (e.g. the people developing jQuery, the people developing RoR), but in general most of the people using those things only have a couple years experience.
Things like systems programming, where I mostly come from, it's not uncommon to spend 5-10 years learning the field in depth without the technology changing much underneath you. Web development 10 years ago was so different that it's almost difficult to call it the same "specialization".
As a result, my strategy has been to learn just enough general stuff to get myself by in a pinch, but more importantly to be able to recognize people that know their stuff in the roles that we'll eventually want to bring in people to fill.
Generalists are more expensive in the short run, but in the long run the solution is probably cheaper.
If you are a specialist, you get work quicker, but it is the same work over and over. About a decade ago I was working at BEA and one of my coworkers was a CORBA specialist. He quit when they transferred him to the WebLogic group. He wanted to continue to be a CORBA specialist. I wonder what he is doing today.
There are domains where a lot of specialist knowledge transfers over. A kernel hacker and jump into glibc with little pain. Someone developing databases can jump into real-time systems and get up to speed pretty quickly. In those sorts of fields, if you've not cut your teeth on something pretty closely related, you're basically not worth paying for.
Turning that around to the web world, if you only know Ruby on Rails, but can't do Javascript, don't know your way around an image editor and don't know a little SQL, you're less valuable. Somebody who's competent in several of those has a lot higher value.
A year and a half ago I basically wrote C++. That's it. Today, since I also do our web programming, I regularly use three or four programming languages per week. But looking down the line, it's not an especially good use of my time to have me, a systems programmer, futzing around with jQuery.
There are some specialization which are just harder than others. Systems programming is just harder than web programming. So if you take an average systems programmer and an average web programmer, statistically, the systems programmer is probably going to be smarter. That's not to say that there aren't brilliant web developers, just that there aren't many dumb systems programmers. It's kind of like saying if you took a biochemistry student and a history student, which one would you bet on for learning a new technical skill? Probably the biochemist.
Beyond that, it's easier to fake being a generalist. If I need to learn a new skill to a superficial depth, I can in a few days if need be. This doesn't mean that I'd have all of those things in my tool-belt like a true generalist would, but under appropriately lax conditions I can still get the thing done.
It's almost impossible to fake being a specialist, at least when it comes to completing a job. If you've never used an SAP system, you're not going to learn how to emulate my friend mentioned above in a few days. Hell, I worked for SAP for 4 years and I can't really understand what he does.
So, to go back to your question -- are specialists more competitive? If their specialization is in demand certainly. If not it mostly depends on how smart they are.
"Generalist" is being thrown around loosely here. A really good generalist is probably a specialist in being general. In other words, a good specialist goes really, really deep, but a good generalist goes really, really broad. Both are very difficult, and after this discussion, I think a majority of programmers won't fall into either, even if they think they do.
If you want an example of a success story for the above doctrine, do some reading about this man: http://www.beckman.illinois.edu/directory/rpowers
This seems to make sense. But these disciplines, although old and established, have spread across (diffused, if you will) a larger area, such that they become umbrella terms for many other studies which may not be specifically concerned with the formulation of ideas, and even less so in a quantitative and procedural manner.
Thus it is still not entirely clear whether these older disciplines deserve credit for providing better training in representing ideas than straight-up CS.
I agree with you that the direct benefit of these disciplines is not entirely clear; must research needs to be done in this area. One thing that is clear, however, is that the undergraduate CS curriculum is not particularly good at teaching this way of thinking. The closest you can come to achieving the effect of English and Philosophy on your thinking is a well designed CS curriculum focused on theory. I've found that the students here who find theory interesting also tend to be good programmers. Again, all of these thoughts are based simply on unscientific observation, but I believe there is a provable, related truth that might come out of them.
I raised an eyebrow on the article too. The question is a good one to spark a debate here but the article was thin IMO.