Software

Edward Glowacki glowack2@msu.edu
Mon, 12 Mar 2001 15:02:40 -0500


I will now make a blanket statement to which there are exceptions,
but for the most part is entirely true.  There are some important
points in here, plus my usual style of humor, but I *am* entering
rant mode here.  Forgive me...

Software sucks.

And now the justification for that statement (aka, "The Rant")

In a day where we have 1.5Ghz processors, software development
travels at the speed of a dead tortise.  Take for example the
saviour of all web browsers, Mozilla.  Granted, it's still "beta"
(and has been for how many years now?).  Netscape was a released
product and had the same problem too.  It crashes.  *KABOOM*  No
warning, no catching itself on the way down, one wrong move and
your dozen important browsing windows all disappear, leaving
you staring at your desktop wallpaper.

Now, the only conclusion I can draw from this information is the
following:  Every software ever written has the following code loop
embedded in it (written in psuedocode for simplicity):

#define haha_how_long_should_the_pathetic_user_last? 10000
start
    starting_clock_cycle = fetch_current_clock_cycle()
    offset = random(haha_how_long_should_the_pathetic_user_last?)
    while(starting_clock_cycle + offset > fetch_current_clock_cycle() ) {
        function_normally()
    }
    crash()
end

As you can see from this example, every program will crash, it's
just a matter of how lucky you get with your random number offset.
Now keep in mind, it doesn't matter if your program is doing anything
or not, as other programs will increment the CPU's current_clock_cycle
counter.  Thus, the faster computers go through cycles, the bigger
programmers have to set their offset in order for any work to get
done.  Programmers aren't keeping up.  Therefore, when I start
Mozilla, I hardly have any time to browse before I pass that
threshold and make it to the crash() line...  Ahhh, now you can
see my frustration!

I'm back, just returned from a quick jaunt to another window, and
I'll be damned if Mozilla didn't crash again when I clicked on the
little X in the corner of the window to close it.

Software sucks.

A funny story, I was flipping through channels the other night,
and I think it was the MSU channel (channel 17 on Lansing AT&T
cable) that was proudly displaying a blue screen of death!!!  Now
I can't imagine a program that does something simple like a slide
show (with some cheesy fades between slides) behaving in an unstable
manner, one would think it would be pretty easy to debug.  Of
course, I'm not blaming the slide show, it could have been anything,
it's Windows after all.  But the point is, here I was at home
looking at someone's crashed software on TV.  Now I realize they
put a lot of worthless shit on television these days, but I really
don't need to go home after a long day of dealing with worthless
software and sit down on my couch to stare at the output of more
worthless software.

Software sucks.

I think I might know why software sucks so bad.  It's a couple of
things really.

First is that not everyone that writes the software I end up using
is a professional.  Part of that is due to the open source philosophy,
where anyone is able to submit a patch, and if it works, cool, a
problem has been fixed.  But the code base is so diverse that not
everything gets tested properly, and so bad things start to happen.
This is not to say that all non-professionals can't write good
software, just that I think a lot of software is written by
self-taught hobbiests scratching an itch.

Second is that professionals can't code either. (By professionals,
I'm referring to "has graduated college with a CSE/CPS/equivalent
degree.).  You don't learn much about software development in
college computer science classes.  Yeah, you have projects to code,
but they are generally small and are designed to teach you a subset
of some larger concept.  Write a program that sorts numbers, write
a cheesy shell that accepts 3 commands.  Oh, and if it crashes when
you pass it more than 10 arguments, that's 1 point off your grade.
Don't bother fixing it though, because we don't have a development
cycle, we just write-once-and-throw-away our code here.  I could
rant on this a while longer, but I think what I've already said
will suffice.

Third is that users don't seem to give a shit that their software
sucks.  Even I, who seems to know better, have been trained to use
shotty software and "just deal with" the crashes.

Fourth is that there is no accountability in the software industry.
If a car manufacturer sells cars and a problem is discovered, they
issue a recall to fix it, "Such and such a car explodes when hit
in the left rear quarterpanel by the gas tank, bring it in if you
want to live."  If a software company sells software and a problem
is discovered, fuck the clients!  They signed away their souls when
they busted the shrink wrap and threw the EULA on the floor.  If
software in someone's pacemaker bluescreens, that's too bad.

Fifth is that software is written by geeks for geeks.  Very few
products (be it an OS, a piece of software, a web site, whatever)
are designed with any significant user testing, other than testing
on other geeks.  You end up using stuff that's cryptic and has
plenty of "cool stuff" instead of stuff that's easy to use and has
the stuff you need.

Sixth is that software is written for the management.  "Hey, that
flash animation and JAVA on your home page rocks!  Fuck the user
if he/she can't get to any useful 'content' or get any work done!"

Seventh is that users don't give any feedback.  How many times have
you personally written to a software author and said, "Hey, when
I do this and this, your program produces funny output."?  I've
done it a few times, but not enough.  I've more often suggested
enhancements or ways to do things differently to make them work
better, but even then, I could have done more.

Eigth is that software writers prefer to copy rather than innovate.
When was the last time you saw some really innovative software?
A good counterexample to this statement are Zope, which I think
is pretty cool.  But take web browsers.  Mozilla looks and acts
almost exactly the same as NCSA Mosaic did when it first came
out.  Sure, it can read email and news now, and it can WYSIWYG
edit some HTML, oh, and you can use different skins on it so that
it looks perty, but it's still a web browser, and it still is the
same as it used to be.  And basically all the other browsers
use the same format, the same button bar, the same everything.
Also look at the way Windows copied the Mac interface (poorly),
and now GNOME and KDE are copying stuff from Windows.

Ninth is legacy software.  I'll be damned if your 20 year old
program, written for MS-DOS 3.3, won't still run on your Windows
2000 box.  Which means there is *how much* code being dedicated
to that compatability?  X windows, which draws everything as
if it were over the network, which is really cool for remote
display but bites the big one for local machine performance.
But it's the standard, has been for 20 years, gotta use it.

Tenth is documentation.  Written by coders presumably for the
general populace, though it never seems to work out quite right.
This is of course only if they bother to write any docs in the
first place.  You can't figure out that you need to hit 
ALT-SHIFT-CONTROL-ESC-NUMLOCK-NUMLOCK-LEFTCLICK to use that
feature, why not, it was in the... oh shit, I never wrote
that down anyware... Sorry dude, fuck you, grep the source
if you want to figure it out. (actually some source code
has really good documentation in it, in addition to what's
in the manual.)

Eleventh is lack of vision.  Or more precisely, lack of
a plan containing the intermediate steps between where
one is at and the vision, which itself rests on the X axis 
at infinity.  There are some really cool things out there,
and some of them actually work, but most of the time they
fall grossly short of their expectations.  The idea comes,
the code follows, the redesign continues indefinately to
fix what should have been done right to begin with.

Software sucks.

Hmm... That was pretty long... and very crass, I usually don't
swear in email that much.  I guess Mozilla crashing so many times
in a row put me in a bad mood.  Well, if you made it this far,
thanks for reading.  And if you didn't, I feel better anyways having
written it.  I'm thinking of editing it, cleaning out the garbage,
filling out some of the ideas, and submitting it to Slashdot or
something.  Think it's worthy or think it's crap, send me some
feedback... =)

User in agony,
ED

-- 
Edward Glowacki			glowack2@msu.edu
Michigan State University