There’s No Excuse
If you have a long, error-prone process, automate it. This is the essential underpinning of what we all do for a living and informs our day to day routines. Whether we’re making innovative new consumer applications, games, line of business applications, or anything else, we look at other people’s lives and say, “we can make that automatic.” “Don’t use a pen and paper for your todo list when there’s GTasks.” “Don’t play risk with a board and dice when you can do it online (or play an Elder Scrolls game instead).” “Don’t key all that nonsense in by hand.”
And yet, far too often we fail to automate our own lives and work. I wonder if there’s some kind of cognitive blindspot we have. When other people mindlessly perform laborious tasks, we jump in and point out how dumb what they’re doing is and how we can sell them something that will rock their world. But when we mindlessly perform laborious tasks (data entry, copy and paste programming, etc) we don’t think twice or, if we do, we assure ourselves that it’s too complicated or not worth automating or something.
I was going through some old documentation the other day to look up what was needed to add another instance of a feature to a legacy application. What it boiled to was something along the lines of “we have an application that sells computers and we want to add a new kind of PCI card to the configurable options.” Remarkably, this involved hand-adding things to all sorts of different meta data tables in a database, along with updating some stored procedures. The application, generally speaking, was smart enough to do the rest without code changes, even including GUI updates, so that was a win. But hand-adding things to tables was… annoying.
If only there were something that would let people add things to the database without using the query explorer tool and doing it by hand… something where you could write instructions in some kind of “language,” if you will, and translate these instructions into something visual and easy to understand so that people could add meta-data more simply. Hmmm.
Wait, I’ve got it! How about instead of a document explaining how to add a bunch of records to the database, you write an administrative function into your GUI that automates it? What a victory! You get the meta-data added and your new PCI option, and you also remove the possibility that you’ll mangle or forget one of the entries and leave the system in a poor state. This is really the only option. It’s not an either-or kind of situation. Hand-adding things to your database is facepalm.
What’s the moral of this story? To me, it’s this: if you have a giant document detailing manual steps for programmers to follow to get something done, what you really have is a spec/user story for your next development cycle. Automate all the things, and then burn those documents at a cathartic, gleeful camp fire. You can turn your onerous processes into roasted marshmallows.
Heh heh, as we speak, during my lunch break. 🙂 I just hope it proves effective. (https://xkcd.com/1319/ )
Good article, thanks.
The comic brings up a good point that I didn’t really address in the scope of what I talked about, which is that not all tasks are worth automating. I’ve actually written about that before ( https://www.daedtech.com/beware-of-mindless-automation and it also had a comment with an xkcd comic), and I agree with the message. I suppose it’s a bit of a nuanced subject that needs to account for cost of errors with manual process and cost of automation.
And if you need to sell it to the business, just work out how many manual adds equals the time to create the admin function – then explain that the cost of a single bad add can outweigh it all depending on the risk involved.
That’s pretty much the exact route I go when it comes to seeing what businesses want to do. Something like, “we’re going to spend 1 day of developer hours at, say, $500, so if we knock out 10 hours per week of data entry at $10 per hour, we realize ROI after 5 weeks. But if that data entry gets messed up and costs us an account, the ROI is immediate and enormous.”
Only automate what you don’t like doing 😉
I’m trying to think of anything repetitive and straightforward to automate that I like doing. Nothing really comes to mind, though there’s probably something I’m missing.
I think one of the selling points for myself in the interview for my present job included the sentence “I’m lazy.”
As in, “I’m lazy. If you ask me to do it once, I do it. If you ask twice, I grumble and do it. If you ask three times, I’m figuring out how to automate it.”
It was a little dogmatic, but I got a smile and a nod.
I think it’s more pragmatic than dogmatic, personally. Describing it as “lazy” is sort of pleasantly self-deprecating, but I think of it as falling under the “work smarter, not harder” umbrella, and when hiring, I’d prefer this philosophy 7 days a week and twice on Sundays. The alternative is what I called “Brute Force” in this post: https://www.daedtech.com/the-code-warriors
Agreed. I was working the “pleasantly self-deprecating” angle on that, no doubt.
What I meant by “dogmatic” was merely that it wasn’t a hard and fast rule: There are things I do manually more than three times.
Ah, gotcha. That makes sense. I find that I tend to get in trouble with absolutes as well, so I’m pretty sparing with that flavor of dogmatism myself. Easy to paint yourself into a corner that way.