Stephan said:
And without the customer having any significant clue what they actually
want. =)
Actually that is an interesting point.
You don't see jobs for "Systems Analysts" much these days, yet that is a
function that would solve a lot of problems, trouble is as a job it;s
rather transitory. Has nothing to do with computers, here's what I mean.
Company does storage / maintenance of vehicles. Huge buildings involved.
They buy a POS software package that is expensive but completely unable
to do what they want, but those in charge explain what they want a piece
at a time so it takes skill to get a full picture out of them. They want
the software modified to do what they need, and there are needs they
haven't recognized that any analyst could see a mile away. Impossible,
package has to be replaced by a decent Database.
Exmplae they have set up the "Toy" system so the only way to find a
vehicle is by location - row / column style. This goes all to sh*t right
away since when filling the buildings someone put on vehicle in the
wrong place. No history was stored and in any case it would have been
wrong, so a total of 1000 vehicles had to b reprocessed. In putting them
away again someone made the same mistake again
Each vehicle had a rather obvious registration plate front and back, did
they attempt to use this as at least an indexable identity? Nope the
only unique ID the system would allow is chassis number, which truly is
unique and unchangeable, but it's also right under the vehicle.
Anyway, you get the idea, complete screw up as far as the eye could see.
Had the system been analyzed first nobody in their right mind would have
purchased the $100,000 package they bought, it was fine for what it did
but it did the wrong things
So in my view there are two parts involved. The programmers not having
done the "Real" job not having a grasp of the less obvious needs (Not
their fault, they cannot all do every job) and those guiding the
programmers bt accurately assessing the real job and how it need to be
put together.
That is why most software, however good it is, has missing functions or
is condemned as bad. Nobody actually sits down and analyzes the
requirements, they just "Think" they do.