[prog] State of software engineering profession
Robert J. Hansen
rjh at sixdemonbag.org
Sat Apr 12 21:42:15 EST 2003
> that our profession isn't perfect. My point is that we can't seem to get
> beyond our mistakes. I think you two kind of proved my point. You guys
Again, I don't accept the premise. :) We _are_ moving beyond our
mistakes. The first generation of programming languages--FORTRAN, COBOL
and C--weren't designed for crossplatform portability. They were meant
to be expert systems to help with the task of generating assembly
language, which is inherently machine-specific and nonportable.
In the '50s, we had the first dawn of crossplatform code in the LISP 1.5
environment. Once you ported the environment to another machine, your
code would work with zero tweaking whatsoever. Of course, the operating
requirements of the LISP environment were so steep that programming in
LISP was totally impractical. UCSD Pascal had the same problem--all the
baggage of Pascal, all the bad performance of first-generation VM
Recently, VMed languages have become fashionable once again. A
combination of cheap insanely powerful hardware plus some pretty good VM
designs have made the VM penalty affordable. As near as I can see, this
is the first time in history it's been practical to run large-scale
software inside a VM.
Python, Perl, Java, Common LISP, C#/.NET... we're slowly making our way
towards a crossplatform future. All I can say is, it's about time.
> profession. This is not the point, my 'real' point is that we seem to
> accept _excuses_ for every problem we have.
If we were accepting excuses, would we really be investing so much
(economically and intellectually) in solving the portability problem?
> P.S. I don't accept the idea that software applications are broken
> because the industry is not mature enough. It is broken because of poor
> design, poor implementation, or poor testing, or all three.
Poor design, implementation and testing processes are strong indicators
that the industrial process is immature. Sure, software's lousy because
we have lousy design, implementation and testing. The fact we don't
have any good, commonly-held best practices for design, implementation
and testing is evidence that the field's immature. We're still at the
level of "skilled artisans putting together automobiles one at a time",
not the software assembly line. There's been a _lot_ of effort at
creating software assembly lines, but so far they've all failed. That
doesn't mean we, as practitioners in the field, are failures. That just
means we've got a hell of a long way to go.
Robert J. Hansen <rjh at sixdemonbag.org>
More information about the Programming