From: joshua@Veritas.COM (Joshua Levy)
Newsgroups: comp.software-eng
Subject: Re: Why is the Software Process NOT working
Date: 26 Jan 93 18:59:01 GMT
Organization: VERITAS Software

Graham Perkins argues that the software process is not working for
several reasons including:
>1) Education not respected
>2) Prejudice against academic methods

I think the reason the software process does not work is much simpler.
Colleges and Universities are expected to teach people the background
knowledge need to be a good software engineer, and they do not.
It is that simple.

Using myself as an example: I graduated in the 1980s from a top 20
(in the USA) Engineering school, having completed the hardest
undergraduate software engineering degree available.  This degree 
program was part of the engineering school.  As part of that degree:

    I never took a class in testing (of any kind).  None was offered.
    I never took a class in version control or configuration management,
       or took any class which discussed these issues.   None was offered.
    One class required writing or helping to write documentation.
    One class required writing or developing requirements or specifications.
    I never took a class which discussed the release process.  None was
       offered.
    I never took a class which discussed data base systems in any way.
       None was offered at the undergraduate level.
    I never took a class which discussed adding features to an already
       exiting program.  None was offered.
    I never took a class which discussed porting code or writing portable
       code.  None was offered.

How long are schools going to graduate people while pretending that
testing, version control, release process, data bases, and program 
modifications don't exist?

My degree program had lots of physics, calculas, and math.  It was
obviously designed by a bunch of PhDs to produce PhDs, but in terms
of software engineering, it was a total disaster.  I could take
a course in every professor's trendy research subject, but I could
not take a course in how to test a program.  Just discusting.

It is almost funny, in retrospect:  I was forced to take 5 math classes
and more than 3 science classes, but I was not offered a class which
required me to write a program which would run on more than one machine,
and I never had to write a test suite, or modify an already existing
program.  

I don't know if all software engineering degrees are a poorly designed
as the University of Pennsylvania's program in the late 1980s.  I hope
not, but I suspect so.

If you are a prof, and reading this, I hope you will look at your
degree requirements, and ask yourself two questions:
 1. Is my department teaching people how to be graduate students,
    or engineers?  Remember, most of your studies will become 
    engineers, not grad students.
 2. Is it possible to graduate from my department without writing a
    test suite, modifing existing code, porting code between machines,
    writing requirements, or undestanding version and release control?
    These are the things that software engineers spend most of their
    time doing in the real world.  If you do not teach (or try to teach)
    these things, your engineering degree is a fraud.

Joshua Levy  (joshua@veritas.com)
Newsgroups: comp.software-eng