July 2, 2006
I only recently ran across this rant on poor CS education. While getting my PhD, I had a side job teaching IT drones how to program. It has been enormously helpful to me to learn what IT departments actually do and how IT workers actually work. I think the difference between IT and CS is analogous to the difference between auto mechanics and automotive engineers. A good mechanic knows enough about how cars work to diagnose and repair almost any problem. However, a mechanic doesn’t have a deep understand of the underlying technology. They see a car as a collection of black-box parts. Their job is to locate and replace the failed parts. An engineer, on the other hand, has a much deeper understanding of the underlying technology. Engineers invent hybrid engines, aerodynamic shapes, airbags, anti-lock brakes, etc. They can do this because they understand how those “black-box” parts actually work.
Companies need vastly more people with IT backgrounds than CS training. CS people like me, however, are developing technologies to automate large swaths of IT work. IT workers are literally drones who follow scripts (complex, but still scripts) to get work done. The sad thing, which I see in my students, is that they can’t even understand how simple and rote most of their work truly is. In fact, their vision is so impoverished by their poor education that they can’t grasp even simple CS concepts that would make their jobs easier and their software better. It’s like missionaries explaining to primitive tribes how airplanes are superior to wagons. They can’t even imagine the concept, so they just write it off as another wacky idea. I believe this is why there are so many rants against that article, and so many of them fail to understand Spolsky’s point.
To summarize: IT vs. CS are two distinctly different career paths, like mechanics vs. engineers. CS departments should teach CS or change their department to IT, but they shouldn’t fool their students into believing that computer science is simply about setting up web pages and databases. They are doing them a disservice and confusing potential employers.