View Single Post
  #137   Report Post  
Robert Bonomi
 
Posts: n/a
Default

In article ,
Norman D. Crow wrote:

"Tim Douglass" wrote in message
.. .
On Tue, 31 May 2005 11:09:59 -0000,
(Robert Bonomi) wrote:

When I moved to managing programmers I came to loathe those who wrote
"clever" algorithms. My ability to read and understand code was well
above average and anything I couldn't figure out in a reasonable
length of time with the included comments was rejected. Those who
persisted in producing those things found employment elsewhere. My
experience has been that the more clever the algorithm the more likely
it is to cause problems a couple years down the road. A good example
is undocumented truth-table algorithms - which were a favorite with
*my* boss when he wrote code (which I inherited). It wasn't hard at
all to lose a week or more just trying to add one option. As hardware
speeds increased I dumped the elegant in favor of brute force that
could be easily understood and maintained.


I wasn't in the software end of the business, but 27yr. with NCR Corp. as
large scale system tech. produced a lot of funnies. First one was an
insurance company, program running solid for about 3yr. suddenly starts
blowing up, always at the same address. Turned out it was a situation which
original programmer knew could occur, but had never debugged!


I released a program with a 'known bug' in it. Once. The boss made me
do it. I'd spent two solid weeks trying to chase it down, _without_ any
luck. A memory corruption problem. Brute-force tracking. scatter a
bunch of output statements through the program and see where the thing
gets clobbered. then scatter more output between where the last point it
wasn't clobbered, and where the first place it _was_ clobbered. Only to
find that *now* that the crime is happening "somewhere else". This was
a 'bug' with *legs* -- it MOVED!

In desperation, played with the order in which the modules were linked,
found a sequence where (presumably *still* happening) memory corruption
did not affect the answers coming out, and released it that way. Put a
*LOUD* note in the source, documenting the existence of the problem; that
if the existing code was linked in _this_ order, the problem was 'harmless',
and that _any_ modification of any component was "highly risky".

This was documentation that *literally* started off:
"Warning, Will Robinson. WARNING!!"

and ended with "All hope abandon, ye who press 'enter' here."

It seemed appropriate.