Joel on Software: Undergraduate programming - Wrong Again
I think the solution would be to create a programming-intensive BFA in Software Development--a Julliard for programmers. [...] It would be a huge magnet to the talented high school kids who love programming, but can't get excited about proving theorums. [...] You might be able to major in Game Development and work on a significant game title, for example, and that's how you spend most of your time, just like a film student spends a lot of time actually making films and the dance students spends most of their time dancing.
There's a lot wrong with the way "Computer Science" is taught, and this would be a great start to fixing it.
-- marco
Wrong. (Sorry for being blunt)
I used to think this would be a great idea for ‘fixing’ computer science, until I attended a top-notch CS school (Carnegie Mellon). For the record, I was a gifted programmer in highschool, and wanted nothing to do with college, and nearly dropped out my first two years.
That was before I completed the most relevant classes of my life, during my junior and senior year.
Learning industrially popular programming languages, software engineering practices, and current trends is great knowledge, and any smart person is going to learn this stuff anyway.
What you won’t pick up with anywhere near the same speed, is how to think about abstraction. I’m not ashamed to say it: all my deep studies into & around Lambda Calculus, type theory, blew my mind wide open, and fundamentally altered how I approach problems. As a highschool student, how could I have possibly guessed that would happen? It’s silly to only expose people to what they already know they’ll like.
So while there is a massive difference between “Software Engineering” and “Computer Science”, Joel is too quick to dismiss the power of learning how to learn. Also, while he knocks top CS schools for not engineering software he’s aware of, I could somehow fill this blog with incredibley important software, mathematical models, and algorithms that have flowed out of those schools for the last 20 years.
The individuals that are at a premium are the ones who can think, and pick up the details as they need to. They need not have even gone to college, but let’s not sell computer science colleges short so quickly. Learning how to learn is more important than what you learn.