[lug] software engineering

Bear Giles bgiles at coyotesong.com
Mon Nov 13 17:32:43 MST 2006

Evelyn Mitchell wrote:
> * On 2006-11-13 16:23 dio2002 at indra.com <dio2002 at indra.com> wrote:
>> Engineers are humans, and humans are infallible.  doesn't matter whether
> I guess this is an example of the point you're trying to make. :)
> You mean humans are fallible.
But are we flammable or inflammable?

On a more serious note, 'fallible' is one of those concepts that's 
really dangerous when you think about it. There are different types of 
errors with different profiles for how they're created, how they're 
identified, how they're resolved, etc.

Software development is a simple example.

First level are syntax errors. Real ***** on punch cards and 8-hour 
turnarounds (and people invested a lot of effort into making sure their 
cards were correct), today we let compilers take care of it.

Second level is code that compiles but doesn't work like the coder 
intended. A classic example is

if (a = b) { ... }

intstead of

if (a == b) { ... }

A person with < 2 years of experience or so is probably here.

Third level is code that does what the coder intended, but it solves the 
wrong problem because of a communication problem with the architect.

Or because the analyst didn't fully understand the problem.

At the top of the stack you start getting into the question of whether 
doing something at all is wise.

Several of these levels -are- solvable. Compilers ensure that code is, 
uh, compiler. Compiler warnings, code reviews, and formal methods can 
ensure the code does what it is supposed to do.

The levels where it starts getting difficult?... they're management, not 
engineering. Don't get me wrong, it's usually still people on the 
engineering side of the house, but when you're trying to make sure 14 
teams are all working on the same problem that's a management issue, not 
something you solve with your grandfather's slide rule.

More information about the LUG mailing list