What do you find is a common weakness
of new hires and/or new grad students?
In undergraduate students, a lack of mastery. They know a little bit about a lot of things, but in industry, that simply doesn't cut it. This lack of defined expertise is common to most undergraduate students, not just computer scientists.
In grad students, a lack of real-world experience. Some grad students do get internships, which helps them transition to the employer/employee world. But the majority of grad students are stuck from 1-5+ years doing research (or worse, doing class-related projects) and writing technical papers. This is great for when you develop a product or idea and want to document it, but it isn't always good for the process of interacting on a team or within a work environment. Also, more mathematical graduates may have a significant lack of programming experience, depending on their graduate focus. However, grad students tend to have a specific mastery, which is always helpful at the top tech companies.
Is it entirely variable dependent on
the student and his or her university?
Is there a particular skill or
skillset that you wish new
hires/researchers had expertise in and
how can we remedey this deficiency?
Yes. But more to the point, this depends largely on the student. Where I did my undergraduate studies there were ample opportunities for both academic (research) pursuits as well as industry options. These had to be sought out, however, and most undergraduate students simply want to party (this is in the U.S.)
I realize that this question is
general and really encapsulates two
questions, one more about the
weaknesses of new software engineers
and one about the weaknesses of new
researchers. However, both types of
people tend to come from similar
courses of study so I'm wondering if
there is any overlap.
Carl Norum answered this one well. Computer scientists aren't necessarily software engineers, even though upon graduation that's exactly the position they apply for. Then they get to the company and everything is new, unfamiliar. Well what do you expect? They didn't spend four years learning software development.
I am a computer scientist, and engineer. I graduated from one of these programs and I've seen my fair share of how things are. A few of the answers given here trouble me, and I'll explain why.
IMHO, the main weakness is the lack of
project management skills. Computer
science students get many technical
disciplines but few or none knowledge
on management.
In my experience, you can't be taught management. Good management comes with experience. At both the undergraduate and graduate levels (at least where I went to school) students are often loaded with 3-4 projects each week and they have to complete these while balancing work, family, and friends. Some manage better than others, but to say CS students have no knowledge on management is a very general, very imprecise statement. Most undergraduates have poor decision making skills when it comes to management, it isn't something specific to computer science students. And if I had to take a position here, I'd argue that CS students tend to have better management skills than most other students, sometimes even better management than the engineering students (but only sometimes).
I would have to say one weakness is
being able to pull requirements for a
given task. In the academic world,
your requirements are typically given
to you in the form of a project that
says it must do x,y,z. (This is geared
more toward SW Engineers than
Researchers)
Definitely a drawback to weak computer science programs. Most classes are fairly structured in a "spoon-fed" kind of manner. Unfortunately it is true that many many students fall into the trap of thinking that this is how things work all the time. However, there are classes that are not like that at all. They require taking initiative towards not only developing steps to a goal, but also defining the goal itself. Additionally, completion or lack of completion of these goals must be formally presented, as if to a working group, which is how industry tends to do things.
1 - Presentation/Communication skills
totally absent.
2 - The woeful lack of teamwork
experience. In that, they don't have a
grasp on how important it is that
their work has to fit in with the
other team members work.
Only in some programs. The one I was at presentation and communication were very important (if not essential) in most classes. Also, we were almost forced to work in teams. Of course, this ties into management that many students simply couldn't work in teams (they did little to no work). This is more a generational/youth problem rather than a problem specific to the computer scientist world.
In summary I guess my point is that the OP question would have been better worded towards people who go for software engineering jobs. To generalize CS degrees in this manner is a gross simplification. On one hand what you're saying is true, but it's not specific to CS degrees. On the other hand people who go for SWE jobs (in my experience) do exhibit these sort of deficiencies.