[Edu-sig] Software Engineering for everyone?

Greg Ward gward@cnri.reston.va.us
Mon, 27 Mar 2000 09:12:08 -0500


On 23 March 2000, Dinu C. Gherman said:
> Greg Ward wrote:
> > 
> > (Yes, it *is* something that needs to be taught to prospective
> > professional programmers as part of their undergraduate degree: the
> > ability to write solid, maintainable code is at least as essential as
> > the ability to understand quicksort.  Good coding practices are
> > certainly the first step on the road to full-scale "software
> > engineering", and good coding practices are something that CP4E should
> > emphasise.  But there's no need to go all the way -- after C++, the best
> > way to discourage people from programming is probably forcing them to do
> > requirements analysis or write test suites.  *yaawn*)
> 
> I would consider this an interesting interpretation of the
> concept of "extreme programming" ;-), but this is certainly 
> not what you mean, programming without testing, without know-
> ing what you're trying to accomplish, is it? 

I think you misunderstood, or I misspoke.  I'm *not* speaking out
against testing software (or debugging, or thinking about what you're
going to do before doing it, or other good practices); I think that
should be taught from the beginning.

And I'm not speaking out against "anal-retentive software-engineering"
practices, like rigorous, full-coverage testing, formal design and code
reviews, etc. etc.  IMHO "extreme programming" falls into this camp,
although it seems to me rather less anal retentive than most other
software methodologies.  It's still a methodology, though, and Kent Beck
(I'm in the middle of his book on XP now) says so.

I *am* speaking out against trying to teach full-blown software
engineering techniques to high-school students who are just getting
their first taste of writing code.  Yes, teach them to understand the
code before (and while) they write it, and teach them not to trust it
until they've tested it, and teach them how to fix it when it doesn't
work.  But don't go pulling in all the industrial-strength machinery
that the SEI espouses, because it just isn't necessary for writing Excel
macros or throwaway Python scripts -- which is what an awful lot of
people who come out of CP4E will probably end up doing.

> The difference is a matter of scale and formalism, it is not
> one of not doing something on one level (say, your homework 
> at school), but on another (say, a phone billing system).
> Moreover, drawing the borderline might not be always easy to 
> do.

True.  The further you get from a throwaway script to do your homework
to implementing a phone-billing system, the more SEI-style bureaucracy
you need.  However, that sort of software engineering bureaucracy
probably belongs in the undergraduate CS curriculum, not at the high
school level.

        Greg