Jason Gorman wrote a post titled Let’s Not Call It “Computer Science” If We Really Mean “Computer Programming”. Good read.
A few notes:
The feedback I get from CS graduates who’ve been working in software (and from their employers) is overwhelmingly that their degree didn’t prepare them at all for software development. Time spent learning the UML meta-meta-model and Object Z is, for 99.9% of developers, time completely wasted - time that could have been spent learning something useful like how to write good automated tests or how to write an efficient and robust build script.
Are there really CS programs out there that focus on UML and Obj Z? I mean, we covered UML, but it was a couple of days as part of another course.
I should also probably mention that software developers, unlike computer scientists to some degree, need to have very well-rounded general educations, too. Their ability to communicate - and not just through code - as well as their ability to reason and quickly learn in a wide range of problem domains requires more than just coding skills. It is possible to be a successful computer scientist and not know how the futures market works or how gas propogates through pipelines or what the tax laws are pertaining to international online sales. As a freelance developer, I worked in everything from engineering to corporate law, via retail, TV and banking. Without a good general “classical” education, I think I might have struggled to wrap my mind around some of the domains I’ve been parachuted in to fast enough to get anything useful done.
A-freaking-men. Being a programmer is like being a writer - the more “real-world experience” you have, the better your craft is.
Developers will need some theory, and I’m painfully aware, too, of the degree snobbery that most employers harbour. So I propose that the right course would be a 5+ year apprenticeship with part-time degree study - CS in the classroom 1 day a week, software development in the office the other 4.
Apprenticing as a developer isn’t exactly a new idea, but… what are the chances that our higher education system actually implements that?
Oh, and sorry about the title. I couldn’t resist.