By the time a company gets to midsize, there will be a pool of people to perform ad hoc, automatable tasks. Most of these tasks involve manually generating reports for someone else. To someone who writes software, this can seem infuriatingly inefficient and wasteful. A sign of tech debt and bad software!
Counterintuitively, it is extremely difficult to automate reports and actually save the company time or money.
Imagine Alice, the CEO, has Bob, in accounting, make a weekly report by hand pulling numbers from 3 different systems and plugging the data into a spreadsheet. Alice doesn’t care how Bob generates the report, so Carol, a developer, decides to help Bob by automating the report.
To keep the numbers simple, Bob earns 75k/year (~$36/hr) and Carol earns 150k/yr (~$72/hr). Let’s say it takes Bob 1 hour/week to generate the report, making it cost $1,872/year.
All the data is in databases, and Bob is doing specific steps in a specific order. He’s miserable because making the report is dull, error prone, repetitive and endless. Worst of all, the report is meaningless to Bob! He’s generating it for Alice, because he’s capable, understands what the numbers mean, and has access. Carol is Bob’s friend and wants to help!
Carol’s time is more valuable than Bob’s, so she can only spend 3 days automating the report for the company to break even. That includes testing, formatting, and deployment.
Let’s assume Carol is able to automate the report on time. The report shows up in Alice’s inbox every week, same as before, but Bob is able to work on other things. Break out the champagne!
Except, Alice needs changes to the report twice a year. When Bob was generating the report she could just tell him and it would take maybe 30 minutes to change the process because Bob works in accounting and understands all of the numbers. There was no lag between the ask and the update, Bob would make the updated report next time.
Now that Carol has automated the report, Alice will have to talk to Bob, and Bob will have to talk to Carol. Alice can’t ask Carol directly because Carol doesn’t work in accounting and doesn’t know what the numbers mean. Additionally, Carol doesn’t spend her days working on reports so she’ll have to get up to speed, talk to Bob and make the change. Let’s say it takes one full 8hr work day.
As the CEO, Alice’s changes are important, but probably not important enough to pull Carol out of her current work. It usually takes 2 report cycles to get to the top of her list.
Now the automated report costs $1,152/yr to maintain, and it’s not the exact report that the CEO wants 4 weeks, or 7% of the time. 4 out of date reports easily outweighs the $720 in savings and Alice will probably have Bob manually generate the report when the code is out of date. Finally, the sunk cost of building the software will result in Carol having to maintain the software going forward, even though the software generates no real value.
The conflict between “can be automated” and “can’t be done profitably” often results in DBAs become a report generation team. It’s also the impetus behind business intelligence tools; find a way to get developer style automation, without using a developer.
I’ll go over a developer’s “should I automate this task” framework next time.