Kludge Index

I've been chatting with Bob Lewis about the nature of kludges, and he suggests a kludge index. I began thinking about how you might score such an index...

Kludge Base Score
How many standalone programs are used in the system which performs the task? (If the task is to convert data from one format to another, exclude the program which generates the initial data, and/or the program which views the result.)

Score each program as follows:

  • +1 for a simple utility, eg. sort, diff, grep.
  • +2 for an application program or script that can be run from a command-line.
  • +3 for using automation features of a running application, eg. VBA.
  • +5 for triggering program actions by using keystuffing or mouse-click capture.

Kludge Modifiers (if yes, add or subtract the relevant score)

  • Would the system break if a field in the data inputs or outputs got changed or removed?
    (Score: +1)
  • How many people could fix the system if it breaks?
    (Score: 0 people = +10; 1 or 2 people = +3; 3-4 people = 0; 4+ people = -2)
  • Would you allow an untrained user to use your system?
    (Score: -1)
  • Could your system handle 10x the data it does now?
    (Score: -2)
  • Does your boss know the system exists?
    (Score -1)
  • Is the system documented on more than "the back of an envelope"?
    (Score -2)

Then we just need to work out the kludge thresholds. I'd suggest the following:

    < 1 = Not a kludge
    1-5 = Probably OK if documented
    6-9 = Minor kludge, suitable only as a short term fix
    10+ = Kludge! Should be replaced immediately.

As an example, let's say we need to convert IIS log data to an Excel chart:

    +2 : Use Microsoft LogParser to convert to CSV
    +3 : VBA AutoExec macro which opens the CSV file, formats headings and inserts the chart
    +2 : Scheduled Task batch file which executes LogParser and opens the Excel file.
    +7 : Kludge base score

If this is undocumented and done by a "cowboy" IT support:

    +3 : Only fixable by one person
    -1 : Boss knows it exists
    +8 : Adjusted Kludge score

Therefore, this system is a kludge and should only be seen as a short-term fix. Note that the act of documenting this system and training support staff in its use the "kludge factor" can be reduced to a manageable level.