This is great, another rant from Joel, this time on the state of CS Degrees.
I didn't grow up in the punch card days, though I heard about it from my oldest step-brother, who did. Instead, I grew up with early PCs (TRS-80s) in school where time was limited, you could see the compiler work through the lines of code, and you needed to be prepared before you typed. I went to Syracuse in 1985 as a CS major and my first class was a lecture hall of 120 or so.
And in LISP.
That was a weedout course because while many of us had computers or had worked on them in high school, we'd done procedural, BASIC, PASCAL, maybe some C programming. But LISP really changes the way you look at problems and while I enjoyed it, I also "tutored" a few people that didn't. I even did some coursework for people with the understanding that they'd drop out the next semester. Didn't see the sense of ruining their GPA because they'd gotten in over their heads.
The second semester wasn't much better. We moved in APL (yikes, right to left processing) and Fortran. So on top of learning concepts and new ideas, we also had to grasp strange languages. I think half the class in CS bailed during that year. Add to that the interactive terminals running OS/360 or some other archaic setup and a centralized print room in the CS building where you'd hike through a foot or so of snow to get your printout. No personal printers in that place.
I switched majors my second year because I became somewhat disenchanted with computers as well as saw business as the better place to be. I went on to get an Economics degree, only to move back to computer engineering in grad school 6 years later. Now we had PCs, Solaris boxes at school and I had a 486 at work and home. I upgraded SunOS ro Solaris, learned C, software engineering, and many other more modern practices.
But we still have to learn pointers and recursion. We had to understand the basics of computer science.
I see Joel's point. I've worked with many people that have graduated in the last 10 years that I don't think have a fundamental grasp of programming and the development of algorithms. They just don't know how to think.
Anything that is really worth having and valuable takes an effort to achieve. I think the future architects, software designers, and engineers should struggle and learn the basics as a foundation. While I don't think I'd do great on Joel's test, I do understand the concepts. To me, a language is just that, a language. There's nothing different about programming in C, VB, Java, C++, or anything else. It's mostly syntax and an OOP-Procedural style.
Even T-SQL uses many of the same programming skills I learned with Pascal. It's slightly different in that I deal with sets, but I think the mental flexibility I learned early in programming helped me to deal with that.
Steve Jones is the editor of SQLServerCentral.com and visits a wide variety of data related topics in his daily editorial. Steve has spent years working as a DBA and general purpose Windows administrator, primarily working with SQL Server since it was ported from Sybase in 1990. You can follow Steve on Twitter at twitter.com/way0utwest