You’ve heard it said many time that “No one who takes a high school programming course is qualified for a software development job.” Sounds reasonable. But how about people graduating from universities not being qualified? That is the question that shows up in a number of posts and news articles lately. Keith Ward asks the “Over-Educated, Yet Under-Qualified?” question in a recent editorial post in MSDN Magazine. He references an article from InfoWorld Web’s site, “The sad standards of computer-related college degrees”. Is it that bad? Well I hear mixed reviews on recent graduates.
One VP at a major software company said that it takes an average of a year and a half for a recent college graduate to become a fully productive member of a development team. On the other hand I do know high school students who have gotten software development or testing jobs while still in high school. Some of my students were in that category. Hélène Martin reports that she has “I’ve got 5 students doing technical internships this summer” as an aside in a great post she has reviewing a Teach SCHEME workshop she is attending. (The post is TeachScheme Workshop at Brown University and brings up a lot of important points that are very worth reading and considering. )
As usual the truth is really between extremes. Some high school students do get technical internships and some of them even involve programming or at least software testing. And some university graduates are not as prepared as many employers would like. Part of the problem though may be expectations. One expects a lot more from a university graduate than from a high school student. Entry level positions, rather than just internships, usually want more experience with larger teams and larger projects. A large university project may include 3-5 students working for a couple of months. A small commercial project may involved 20 people working for a year. Vastly different scales.
I’m not convinced that the problem is a dumbing down of university curriculum though. I don’t think that is happening. Yes many programs are trying to make their programs more interesting by adding robotics or game development and similar creative areas of case study. But they are working hard not to do so in a way that waters down the curriculum. Fun and dumb are not synonyms. The XNA Game Curriculum resources that Microsoft has are serious and often complex materials for example. (XNA Resources and Teaching Tools for your Classroom) No I think that the problem is that professional development has gotten more complex at a faster rate than education programs have adapted.
When I was an undergraduate the sort of projects I worked on as a student were much closer to the much smaller projects that were common in the early to mid 70s. Those days are gone but have universities adapted? Maybe not enough. Some have. As an industry advisor to Taylor University's computer science program I have been pleased to see them make real world projects a key part of the department’s programs. (Challenging, Real-World Projects) Obviously I’m biased as a graduate but I think they have been doing a great job of connecting to the real world for a long time. I do think there are models that could be replicated in other schools.
Other universities have great co-op and similar programs that place students in the work force while they are still in school. These are great ways to learn the “real world” at the same time that students build theoretical knowledge in school. Having the chance to move from theory to practice and back again can be an outstanding opportunity to prepare for post graduate careers. Students can and should also try hard to get internships during their summers. There are probably not enough of those opportunities and they can be hard to find and get. But you know if someone works hard to find and get hired for internships they are going to be better prepared for careers later.
So I am not convinced that university computer science education programs are really in tough shape. I think most of them are even very good. But some could be better. Well, when push comes to shove everyone could be better.