13 March 2007
So here’s a good question:
is computer science dead?
I have a degree in computer science, but a large number of people (probably a majority) I’ve worked with over the years have not had such a degree. Instead, they’ve had certificates from tech schools or they migrated to computing from other disciplines like astrophysics, literature, theatre, etc.
Our industry really attracts an eclectic group of people. Personally I think this is because some people “get it” and some don’t. Education is incredibly helpful, but that ephemeral mental twist that allows some people to grok programming can’t be taught, and without that mental twist a person can only go so far – no matter how much education they have. At the same time, people with that mental twist often find their progress slowed by a lack of education, because they waste time rediscovering solutions to problems solved long ago.
Still, the question is interesting: is CS dead? Certainly it is in trouble. Enrollment in university CS programs is down across the board.
But I think the bigger question is whether CS has remained relevant. And if not, can it become relevant again?
Computer Science, as a discipline, is really only useful if it pushes the boundaries and advances our understanding of the science. I was recently privileged to attend Microsoft’s annual TechFest event. This is an event where Microsoft Research shows off their stuff to mainstream Microsoft – to the product groups. Because this is their 15th anniversary, they invited some media and other special guests as well.
Before going further here, it is important to realize that Microsoft Research is the single largest provider of CS research funding, and they fund groups in several locations and universities around the planet. While there are obviously many smart people not funded by MSR, some of the smartest researchers out there are funded by MSR.
Some of what they showed was really cool. Some of it, however, was barely at the level of what you’ll find from vendors in industry. (I’m bound by NDA, so I can’t give specifics – sorry)
In other words, the top academic minds are, in many cases, barely keeping up with the top industry minds who are building salable products. And to be fair, some of the top academic minds are exploring things that are barely even on the radar in the mainstream industry.
To me, this is the crux of the matter though: CS can’t be relevant if it is merely keeping up with industry. If product teams at component vendors or product groups in Microsoft are at or ahead of the researchers, then the researchers are wasting their time.
Consider the idea that a Microsoft product team could be working on a very cool set of functionality. This functionality involves a set of new language features, some runtime capabilities and directly addresses a very important pain point we all face today, and one that will get rapidly more painful over the next 2-5 years. Suppose, for grins, that they even have a working prototype that demonstrates the basic viability of this solution. One that’s robust enough for serious experimentation in development scenarios you or I might be involved with.
Then consider a bunch of researchers, who are working on basically the same issue. They’ve undoubtedly got a lot of thinking and formalization going on that’s hard to quantify. As a result of that analysis they have a prototype that demonstrates some of their thinking. One that can only be run by one of the researchers, and which is too incomplete for broad experimentation.
In other words, these researchers are behind a non-research group.
Now for all I know, the researchers will ultimately come up with a better, more complete solution to the problem. But if they come up with that solution after the product group ships the product then it is rather too little, too late.
My point is this: I think CS is in trouble because academia has lost track of where the industry has gone and is going. As I noted in my last post, the rate of change in our industry is incredible, and it is accelerating. While this may have some negative side-effects, there’s no doubt that it has a lot of positive side-effects as well, and that we certainly live in exciting times!
I do think, like the author of the original article, that one of the negative side-effects at the moment is that Computer Science is struggling to remain relevant in the face of this rate of change. Too many of them are teaching outdated material, and are researching problems that have already been solved.
However, I don’t see a collapse of CS as a foregone conclusion. Nor do I see it as a good thing. The author of the original article appears to suggest that it is a good thing for CS departments to stop focusing on programming, and rather to become focused on “interdisciplinary studies” to better promote the needs of IT organizations. You know, the remnants of what’s left after all the fun work moves to India, then China and then wherever-is-cheapest-next.
But I see it differently. If the technology we have today is the best mankind can achieve, then that is really depressing. And let’s face it, industry-based research is pragmatic. In my example earlier, the industry-based team is solving a very real problem we face today, and they are doing it in response to a market need.
Effective research however, must address problems we don’t even know we have. Problems industry won’t solve because there’s no market need – at least not yet.
I absolutely reject the idea that computer scientists can abdicate the responsibility to move the science forward. Or that we’ve somehow reached the pinnacle of human achievement in computing.
Worse, from an American nationalistic perspective, this sort of attitude is very dangerous (fortunately the author is British, not American J ). Why? Because our economists tell us that it is a good thing that the fun work is being outsourced, because it gives us more time and energy to “innovate” (and allows us to buy super-cheap tube socks and plastic toys). Well, in computing that “innovation” comes through research.
In other words, for the US itself to remain relevant, we must ensure that we have a vibrant Computer Science focus, and that our researchers really are pushing the envelope. Because if innovation is all we have left, then we’d damn well better do a great job with it!
The bar has been raised. For CS to remain relevant they need to recognize this fact and step up to meet the new expectations.