Re: software with surprising depths of superficiality

[prev] [thread] [next] [lurker] [Date index for 2003/08/28]

From: Ann Barcomb
Subject: Re: software with surprising depths of superficiality
Date: 11:34 on 28 Aug 2003
We've probably all had to maintain horrible software, so even if I
haven't met your particular burden, you have my sympathy.

I think I'll avoid listing which jobs and places of employment were
responsible for these disasters, but I have at one time or another,
had to maintain all of the following:

* poor directory structure (modules, logs and cgi in the same directory)
* variables shared between scripts and modules without ever being explicitly
  passed
* the same sort of data (such as translations) stored in multiple
  locations--sometimes in a file, sometimes in a database
* credit card numbers stored unencrypted in databases
* code littered with exceptions for projects or features which have since
  expired or faded away
* unused code which hasn't been deleted
* unused database fields
* modules which export all 200 functions by default
* hardcoded deployment information scattered across dozens of files
* no revision control in sight
* no tests
* no documentation
* multiple versions of the same application which differ just enough to
  make maintaining each a seperate nightmare
* no development environment; everything is done on the live server
* multiple HTML pages embeded in a single script
* thousands of lines of code without a subroutine
* subroutines which neither accept arguments nor return values, but set
  global variables
* dry run code which shares nothing whatsoever with the real run code
* code which avoided nested data structures by having hash values which
  were in fact the names of the other hashes
  (NOT: $hash{foo} = \%bar, BUT: $hash{foo} = 'bar')
* subroutines which can take dozens of optional arguments, with each specifying
  a slightly different result in the routine (without using named
  arguments)
* OO modules that did nothing which required OO, but instead exported a
  bunch of 'methods'
* passwords in plain text in cookies, databases and URLs
* really odd home-grown templating/cgi syntax
* error messages with creative values like 'ERROR 2'
* single letter variable names (when variables > alphabet, use 2-character
  names)

I think I have to stop.  I'm getting depressed.

Generated at 14:02 on 01 Jul 2004 by mariachi 0.52