Everyone has had the displeasure of having to perform some mind-numbing repetitive task. Those of us who know how to program computers will use our expertise to figure out a way to get the machine to serve us by performing the menial task on our behalf. After all, computers were designed to serve us. The more mundane the task, the greater the urgency to automate it so we don't need to deal with the details any more.

Devan was hired to support several legacy systems that were fraught with manual processes. A large part of his job was to find the numerous manual tasks that could be automated, and figure out ways to automate them. One of the systems he inherited allows a support person to query a set of special records for the prior production date, and update a subset of them by changing a certain date field, so that they'd be considered special in the production run for today.

To this end, the system has a report to query for these records. The data is converted to fixed-width ASCII text and displayed in a simple text-area. It then lets you go through and manually update the date field of any records you want by simply typing over the relevant range of characters. It also lets you type over anything else you want, but it will only record the underlying (unchanged) record with the new date. When you tell it to save, it parses every line in the text area and compares the id and date fields. Any id with a date field that didn't match the source record would be updated with the new date in the database and application. Of course, if you overwrite id 123 with 456 and change the date field too, record 456 will be updated even though you changed the id for what was really record 123.

Every day, his boss sits there and manually overwrites the two digit (dd) date from yesterday with the two digit date for today:

   backspace-backspace-d-d-down
   backspace-backspace-d-d-down
   ...

...for more than 5,000 records. On the first business day of the month, there's more backspacing and more typing. On the first business day of the new year, there's even more backspacing and even more typing.

Devan decided that this was ridiculous and took it upon himself, as part of his job to automate stuff, to implement an export/import mechanism for the selected records. Thus, you could export the data, edit the file, do a change-all and import the data back into the application. At least it wouldn't be completely manual, and it produced a substantial time savings. Devan demonstrated this to his boss in their development environment. His boss didn't trust the export/import mechanism, and so continued to do the update manually. Devan just rolled back the changes.

Given the sheer idiocy of what his boss was doing each and every day, Devan just couldn't let it go, decided that it was not viable to allow this to continue, and implemented a function whereby you could just use a date-picker and automatically apply the changes to all the selected records. Again, Devan demonstrated this improvement to his boss. His boss didn't like the idea that you could pick a date other than <today>, refused to use it and continued to do the update manually. Devan just rolled back the changes.

Finally, Devan was determined to stop this error-prone manual task and so implemented a solution that even his Nimrod boss could handle: a single button that would automatically update the date field of all of the selected records with <today>, and save it to the database. Once again, Devan demonstrated this feature to his boss. His boss didn't like the idea that you could press a button without manually checking each and every row, refused to use it and as before, he continued to do the daily updates manually. No amount of offering to let him scan the changed records before committing the changes could change his mind. Devan gave up and just rolled back the changes.

Sadly, there were over 50 such similarly implemented processes, all involving dumping records into a simple text area, allowing the user to manually over-type data, parsing them and storing the changes in the database.

To this day, four years later, his boss still sits there, pounding on backspace and the numeric keypad, all the while complaining about the $*#&% task taking too much of his time every day.

Devan still sits there, not really automating much of anything except his own tasks. He spends much of his time simply listening to his boss typing out that familiar rhythm:

   backspace-backspace-d-d-down
   backspace-backspace-d-d-down
   ...
[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!