Yes and no. Replacing someone who can't possibly be happy with the work you have available is cheaper than keeping them on. It depends critically on the details of D and Q. If you get hired by, say, Facebook and refuse to do web development you're going to be a bad fit. The goof here may have been hiring him in the first place.
It's important for both sides to accomodate. But sometimes fits just don't work. If what someone wants to do isn't something you need, or if they aren't as good at it as the other people you have on staff, then the correct fix is just to part amiably. It's no more Google's "fault" than it is varelse's.
If you hire lots of, I don't know, compiler specialists but you allocate them to write web apps we're all possibly worse off. The issue is, and what you're not cottoning on to, is that in a company the size of Google there's probably a team working on x for all values of x that could maybe use another member.
They're only tolerant of their resource allocation scheme because they probably don't worry about their employee acquisition cost.
With a company the size of Google, it'd be really interesting to deregulate their internal labour market (i.e. what Valve does). Let people switch all the time! If you need to prioritize one boring, yet necessary team allocate higher salaries to it.
If you hire lots of [...] compiler specialists but you allocate them to write web apps we're all possibly worse off.
Speaking from direct experience, faced with the job of developing a framework for web data entry apps, what I ended up doing was writing a dataflow language for data binding. Another ex-Delphi compiler developer, Danny Thorpe, ended up co-creating Google Gears. IMO compiler development is a great basis for a certain kind of thinking about solving problems; but I'm also biased.
Speaking as another compiler guy (ok, more into PL), there is a reason many of the top engineers at Google are PL/compiler guys (e.g., Jeff Dean, Sanjay Ghemawat)...think of MapReduce. However, we are also sort of dangerous as we see many problems as PL problems, and if the problems require specialized domain expertise beyond grunt programming, we really aren't that effective (e.g., machine learning) without being paired with those domain experts.
PL man to PL man, what would you say the prospects are for taking a brain soaked in PL, compilers and software-engineering research expertise outside academia? You know, for when they boot me out of grad-school with a so-called "degree" in a bunch of years ;-).
You have a lot of choices, basically look for anyone with big iron requirements (big data systems/infrastructure). Microsoft, Google, Facebook love PL people. Many startups would be happy to have you also.
Oh wow. Given that my university (Technion) has strong ties to Intel and Marvell, and substantial ties to the local branches of Microsoft and Google too, it sounds like life should someday be good. That'll be nice :-).
Actually, I was at a presentation today for new grad-students, and one of the older grad-student mentors helping to present mentioned that the coursework phase of grad-school is a good time to get a bit of industrial experience in the summers. Once I actually have real grad-level PL experience under my belt I'd quite like to go and see what it's all about.
Sorry for the novice question, but what does PL stand for/refer to? My best guess is programming languages [creating them] but I have zero confidence in it.
Because programming languages is so tedious to write. Actually, what you are referring to is PLT, which is a bit different from PL implementation and/or design. Implementation is usually associated with compiler, although these days it could be garbage collection, palatalization optimizations, or something else. PL design are the people who design programming languages, like say Hinkley, Mats, Pike, ...and tons of lesser known people.