What should people going into “Computer Science” learn in college? I’ve thought about this post for like 10 years, but never wrote it. Might as well get it out of my system.
Mostly I’m impressed with the energy out of new graduates, but observing some things, I think I’m not positive that is directly correlated to what colleges are teaching them. There are also a lot of things in industry that I see people lack experience in, and while it’s not the fault of a college program to teach people things, nor even should it be a requirement that someone have a CS degree, these are things that are most easily fixed if they were addressed at this level.
Well, first off, there is little “Computer Science” in much of anything any of us in the computer industry do. So I think, really, we should just admit that what universities are teaching is “software engineering”. That’s ok. Call it that if it lets you rewrite the curriculum. Even that’s a euphemism though? Should we maybe first admit that too?
Software engineering in the work environment has none of the rigor of an “engineering”, but is a weird mix of an art – where we are not given the time to practice or refine or art (damn you “agile”!!!), and craftsmanship/labor. It’s a skilled trade, much like finished carpentry, plumbing, or dentistry. (Sidenote: I once had a dentist who moonlighted as a plumber). Does this change what we teach also? I think it maybe should.