Re: My rant about the "throw out delphi and re-write it in C#" crowd.



David Clegg <dclegg@xxxxxxxxx> wrote in message
<xn0ei5nj01bhp7001@xxxxxxxxxxxxxxxxxxxxxx>
The system was also lacking
much of the key functionality of the Delphi version, which was
overlooked when the system was ported.

In other words, they replaced a fragile system with crap. That tends to be the
way almost all rewrites go in the real world. In the business world where most
software is produced, it is nearly inevitable that this will happen, in fact it
is very difficult perhaps even impossible for the first version of a re-write
to be as good as what it is replacing, no matter how good the programmers are,
and no matter how productive the IDE, and no matter how good the manager is.
The reason is very simple. Over time an application comes to be the sole
embodiment, the sole manifestation, of the knowledge, the business rules, that
satisfy the end user. In addition, iterative repairs and adaptation have slowly
perfected the application relative to the end users' needs, much like the
process of natural selection perfects a species relative to a given
environment. This knowledge, these business rules, almost never exist anywhere
else, except perhaps in the heads of the original programmers and project
managers who are usually thrown out in favor of the team that will rewrite the
application. Thus, even if the new team is a bunch of superstar coders on a par
with Anders Heljsberg, they are not going to know the most important pieces of
knowledge required to produce an application that is as good as they one they
are replacing (unless they slavishly reproduce the existing code's
functionality verbatim, without knowing or asking why it does what it does, in
which case they are simply acting like the modern equivalent of monks carefully
copying a sacred text).

I've been on several projects that looked from the software developers' side to
be successful. It is possible for software developers to actually produce
something useful, in an efficient manner, judging from those. However, I have
frequently seen software rewrites from the consumers' point of view, and I have
never seen the first one or two versions of a rewrite looking better to the end
users than the software it was replacing. Over and over again I have seen cases
where working software was replaced with even worse crap. Out there in the real
world the average person cringes when they are told by their boss that the
software they use for their job is going to be replaced by a new system,
because the know from past experience that this means that all the careful
honing of the prior software is now going to be lost, and they have to start
that process all over again, with a system that will almost certainly not do
what they need it to do for a while.

Now I know that Borland would like us all to believe that this problem can be
solved with proper requirements gathering tools, but I think such tools could
at best only help slightly ameliorate the problem. The source of the problem is
that the knowledge which is embedded in the design and structure of the
software and in programmers' heads is lost when the programmers or the software
are thrown out; and recreating an embodiment of that knowledge takes a lot of
time and resources, even if you don't lose the knowledge itself.

There is a very severe problem in I.T. and that is that companies aren't
usually intelligent enough to know how important it is to retain their software
developers, project managers and software over the long haul. They contract the
development of the software to consultants, off shore programming shops, or
short-term employees and then have all the knowledge and human capital
associated with the product disappear when the consultants walk out the door,
or the off shore contract is ended, or the employee takes off because of
uninspiring treatment or compensation. All they're left with is a piece of
software that nobody knows anything about, which therefore fossilizes in short
order into the scapegoat that I mentioned in another post.

Warning: if you see a software project where scads of C#, VB.NET or Java
contractors or consultants are being brought in, you are probably witnessing
the birth of a future scapegoat. Once the contractors are gone, the knowledge
will be gone with them.

--
***Free Your Mind***

Posted with JSNewsreader Preview 1.0.4.2047


.



Relevant Pages

  • Re: Stack growth direction to thwart buffer overflow attacks
    ... How could writing your own checking code be easier ... If you are writing decent code, you are replacing: ... >>bugs to be easy, but 90% of the problems to be caused by hard bugs, ... >We're talking about programmers who aren't even getting the easy cases ...
    (comp.security.misc)
  • Re: Stack growth direction to thwart buffer overflow attacks
    ... How could writing your own checking code be easier ... If you are writing decent code, you are replacing: ... >>bugs to be easy, but 90% of the problems to be caused by hard bugs, ... >We're talking about programmers who aren't even getting the easy cases ...
    (comp.security.unix)
  • Re: Why a class when there will only be one instance?
    ... Peter Hickman wrote: ... >> but Python programmers regularly use a class when there will only be one ... I see the value of replacing many lines of code by a function ... pursuit of the goal." ...
    (comp.lang.python)
  • Re: Is it possible to rebuild boats and come out ahead?
    ... MFJ's get all their stuff at contract "bargian basement" pricing. ... And replacing a complete final drive could require a major sized check. ...
    (rec.boats.building)
  • Re: Cheeky
    ... replacing it with a 0844 number ... January when VAT returns to 17.5%) at all times from a BT residential line. ... T-Mobile charge both contract and PAYG customers 40ppm for calls to 0843 ...
    (uk.transport.london)