From:  smcl@speed.kiev.ua (Scott McLoughlin)
Subject: Re: Why is the Software Process NOT working
Reply-To: smcl@speed.kiev.ua
Organization: Private Scott McLoughlin
Date: Wed, 27 Jan 93 18:51:54 +0200

Howdy,

In his contribution, joshua@Veritas.COM (Joshua Levy) writes

>> 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.

I think that you are building a straw man to knock down.  If we interpret
Graham Perkins as saying that _when_ academia _does_ teach how to build and
manage a software system safely, much of the software development
community does not tune in, I think that he is absolutely correct.

The reason is that management would never stomach the costs or the restraints,
prefering instead the illusion of unrestrained creative freedom.  The same
people who realize that they cannot use a design for a home with a basement
when they want to build a house at the beach, the same people who will pay
$55/hour for a plumber to come fix a toilet -- these same people will
say, "Oh, we'll just port our ultra tensor whatcha-magit analysis system
from PrimeOS to Windows 3.X to leverage our clients' current hardware
investment in circa 1988 IBM AT systems.  Let's get the boys in the
basement out for a week of training in Windows programming in C."
What a joke.

I'm a youngin', but having worked around the Washington, D.C. beltway for a
few years, I continuously don't know whether to laugh or cry.  It's not
lucrative, but I think I have killed more potential contracts than I
have obtained or executed.  Once the ramifications are explained, users
and managers turn pale and give up.  Good thing too for the taxpayers.

You see, inexpensive hardware and software tools (as in, build your own
mailing list with dBase), have cajoled the management and user communities
into thinking that software is forthcoming quicky and on the cheap.  I
think that too much software is being built today.  According to a study
I read some 18 months ago in the NYT, more than 1/2 of the software projects
undertaken in U.S. govt. and Fortune 1000 companies is never used at all.

Now, imagine if 1/2 of the factories that we attempted to build were never
used!  This is insanity.  It is management's responsibility to allocate
resources for software development and maintenance.  Any manager who
low balled and therefore failed to successfully develop a couple of
factories would be fired.  Senior management should do this to software
managers who low ball their projects.

Software systems are easily as complicated as many factories, and from what
I have read of General Motor's football field size yards to fix cars and
components as they come off of the assembly line, I think that many
software systems that make it into production are easily as high in
quality as many factories. Come on, how many users are asked to help
"clean up" the computer system at the end of their 9 - 5 shift?

We, the software development community, are our own worst critics. While
twiddling the ivories might make us feel omnipotent over our machines,
we are only human.  Trust me, I am currently living 90 miles south
of the Chernyobl nuclear reactor.  We should give ourselves a break.

>    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.

Look, in the absence of a two track educational system, I think that it
is best that university and teaching college attendants learn the ins
and outs of graph theory and compiler optimization, rather than how to
use PVCS or SCCS. As concerns documentation, I was a philosophy student
at Harvard.  I like to write.  But do I want to write user documentation?
Hell no.  Don't waste my time.  Hire some schmuck with a masters degree
in technical writing (better universities do _not_ give undergraduate
degrees in technical writing).

Anyway, in my course of study I did _not_ take courses on philosophical
pedagogy or courses on how to write in a dry, philosophy journal style,
quoting all of the tenured staff at my university ;-)  This is
_on the job_ training.  If I were to become a philosophy professor, I
would be given a few years worth of students to practice on.  Similarly,
lawyers are given the underpriveled in "legal clinics" to practice on.
The cost to students in tuition and to the poor in misrepresentation is
!!! $100,000's OF DOLLARS !!! in on the job training for so called
"professionals".  Give a programmer a few $100,000 worth of on the
job training, and I'm sure that even a product of America's university
system can learn PVCS or Oracle.

Anyway, this idea that software engineers must be jacks of all trades
is foolish. We are foolish for telling the rest of the world that this
is so.  No one should be surprised if some software engineering guru
who can build a slick device driver or optimized compiler cannot construct
an aesthetically appealing graphical representation of the same
software system.  These are two different skills! Go hire graphic design
types!

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

Schools educate _young_ men and women in various disciplines. No one
should be educated in how one's tongue turns gray after the 15th
cup of coffee after arguing all day about what DBMS to procure or
when the bug threshold is "low enough" to release a product to the
public (because the venture capitalists are getting antsy).

Furthermore, universities are not job factories.  Given the changing
job market and a rapidly evolving SE field, a job factory would most
likely produce the GM Pacer of programmers.  I would think that even
_more_ attention should be paid to a firm grasp of fundamentals,
especially the ins and outs of system software (graphical subsystems,
memory management, assembler programming, compiler design and operation,
process synchronization issues).  _THESE_ are the issues that do not
change, the perenial issues, in a rapidly changing field.

> 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.

Yes, but your nice U. Penn education probably gave you an excellent
conceptual framework to organize all of the tidbits of SE lore that
you have obviously acquired since then.  Without this framework, it is
all just what I like to call "Tips and Tricks of the DOS <Unix, VMS, etc.>
Masters".  If your subsequent career makes you really want a firmer
grounding in the beurocracy and management that obviously accompanies
institutional and commercail software development, I believe that many
fine MBA programs offer special MIS degrees and that other software
engineering Masters programs (I have a friend who went to George
Mason, for example) pay particular attention to these topics.

>  > Joshua Levy  (joshua@veritas.com)

Live! From Kiev! Its....

        Scott "Be true to your school!" McLoughlin



Xref: sparky comp.software-eng:5464 comp.answers:26 news.answers:5479