Fog Creek Software
Discussion Board

Vocational, not academic?

> Computer Science departments in the most prestigious institutions just won’t teach you this stuff because they consider it “vocational,” not academic; the kind of thing that high school dropouts learn at the local technical institute so they can have a career as an auto mechanic, or an air-conditioner repairman, or a (holding nose between thumb and forefinger) “software developer.”

Joel, I'm not sure this is a fair criticism.  I think part of the problem is due to computer science historically being an outgrowth or step-child of mathematics.  I don't think mathematics departments have the history or the culture needed to teach people how to develop good software.

Much of what we do, or at least many of us do in creating commercial software products, needs to draw on work from several disciplines to be done well.  Even though I've always done my computing in the Gatesian universe, I really think Steve Job's did a much better job of realizing this, giving an ear to Industrial Design and recognizing the importance of other disciplines. 

I believe you've cited Henry Petroski, Edward Tufte, Christopher Alexander and others yourself.  Men such as these are highly respected inside and outside of academia.  Developing good software involves engineering issues, design issues, psychological issues, etc. and there are serious academics pursuing such issues seriously in his or her own discipline.

Given how the disciplines are structured back at the academy, it seems the practice of developing good software winds up being a cross-disciplinary challenge.  In the development of other non-software products, the project involves electrical engineers, industrial design engineers, mechnical engineers, etc. all working in his or her area of expertise on the same product. 

For better or worse, left to his or her own devices, one software engineer can do, or at least attempt to do, the software equivalent of all of those roles.  To Donald Norman's consternation<g>, you don't need a degree in Design to design a user interface.

Tsk tsk.<g> You know this, and pointing this out has been one of your strengths.  (Overall, I think your ability to withstand cowardly anonymous criticism is pretty good too.<g>)

rube legendre
Saturday, May 8, 2004

" I don't think mathematics departments have the history or the culture needed to teach people how to develop good software."

I don't think any one single discipline can teach people how to develop good software. Math teaches people problem solving skills which are important in developing good software.

On the other hand, if you view everything in software development through the context of a math problem to be solved, then you're missing the big picture.

Mark Hoffman
Saturday, May 8, 2004

The ultimate academic argument is that their purpose is to teach pure science, and in pure science you can do everything on paper or using knots in string, or water cascading down (and then up), ramps, you don't need a specific implementation.

This is all very well and no doubt useful to the 1% of students that stay in academia and produce more papers on the computability of solids or somesuch.

But if a student leaves any kind of Computing course that includes development and hasn't acquired basic fundamental skills in using tools, such as  source control, debuggers et al; then they haven't only been shortchanged they're unemployable as anything other than tea makers (or fetchers of muffins).

Simon Lucy
Saturday, May 8, 2004

I don't know...  Perhaps there shouldn't be such a thing as CS.  Consider the opinion of most that a CS degree is a waste of time - that it has no bearing on reality.  How can a CS degree help me write .Net or VB applications?  They don't teach source control or software engineering best practices.

And nobody wants to hire a nerd who doesn't know these things.

So why bother at all?  Why even spend money on a degree or in support of a cirriculum which has no industry backing?

Ya got me.  I say send the CS degree packing.  Those inclined to math, can get a math degree.  Those inclined to machine architecutre can get a EE degree.  Those inclined to write software can just read a few books and off they go.

Saturday, May 8, 2004

"Those inclined to write software can just read a few books and off they go. "

Yes, and then perpetuate the problem that many software developers are nothing more than just a bunch of half-trained hacks.

Mark Hoffman
Saturday, May 8, 2004

Academia reminds me of Hogwarts; everything is BS, everyone knows it to some extent, yet the whole thing keeps trudging along. I'm maybe exaggerating, but that's life; we've adjusted to the insane things but are shocked when we see another community's insanity. We tell everyone to focus on the best of our communities, because that's how we've adapted; but we invariably concentrate on the worst of others.

Tayssir John Gabbour
Saturday, May 8, 2004

What the heck is all this "They don't teach source control" idiocy I am hearing for a month now on this board??

Just what the heck is there to teach about source control, dangit?

"Listen up class, you should use source control. There are many advantages to doing so. There are many packages that do it, including free ones like cvs."

Many, it's not like source control is some complicated thing that need to be "taught" as a "course" in college!!!

If we listen to you numbnuts, next we will have classes like "Text editor 101", "Advanced topics in text editing usage", 'Typing for developers", "Compiling", "IDE usage", "Visual Dialog Layout Editor Usage" and more crap like that.

Get a grip fools!

College is for hard stuff dudes
Sunday, May 9, 2004

"College is for hard stuff"

Sure, tell it to the guy with a CS degree who can't change his own computer's IP address, or who posts questions on forums that could be answered with a simple web search.

Some people don't find it hard to learn to use cvs, but others are completely at a loss when it comes to the command line in general, and many of these people are going to university and learning that computers are things that "can run java" or similar vague crap.

Sick of college elitists
Sunday, May 9, 2004

Can someone explain to me where the "science" in computer science is? What is the subject of study?
Now if the "science" part is refering to what is called the "applied sciences" aka "engineering", then I can go along with that. We can have some computational theory under the heading of applied mathematics, but for the rest it really boils down to teaching engineering practices surrounding software.

Now can you imagine a good engineering school going "oh, we are not going to teach our students anything about working with these materials that are used in 99% of all real world engineering projects. No, here we ony teach in the abstract about this theoretical "Magic Goo". All pratical training will be based on the fantastic properties of Play-Doh, in which all our students will be experts by the time they finish. We are confident the wonderfull properties of Play-Doh will give them a solid basis for working with the more limited materials like steel, glass and concrete in their future skyscraper projects. And by the way: we believe skyscrapers would be so much more elegant and mallable if only people would start building them in Play-Doh."

Doesn't seem right now, does it? So clearly if the science in CS is really engineering, CS courses seem to be doing a piss poor job of it.

Just me (Sir to you)
Monday, May 10, 2004

*  Recent Topics

*  Fog Creek Home