[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