Failing to Use the Computing Lever (2011)
tratt.net
tratt.net
> Doing tasks manually instead of automatically. Computers excel at the simple, repetitive tasks which humans are terrible at. I remember seeing someone change a document which used the American English idiom of placing a comma after e.g. (i.e. “e.g., X”) to the less stilted British English idiom without the comma (i.e. “e.g. X”). The person editing did the change by scanning the (rather large) document and manually changing each occurrence, a task which took a couple of rather dispiriting hours. Inevitably, in a large document, some occurrences were missed. I fixed the remaining occurrences with 100% accuracy by using the ‘search and replace’ function in my text editor — which took less than 5 seconds.
This is true, but it's an example where the solution is obvious to many people and the answer -RTFM, or more politely "invest in training"- is simple. A different example would have been better. Consider removing a column of information from a text document. You can kludge this using a spreadsheet or you could do repeated search and replace (depending on the data) but this example asks us to think what people should do when their hammer stops being useful.
What should people do? How does someone doing routine office work learn how to use a database instead of a spreadsheet - and what spreadsheet should they use? More importantly, how do they learn what tools are appropriate?
I agree that additional more complex examples might be interesting, though.
It seems that there's always going to be a sliding scale, depending on how complex the task is. Some software will provide fairly straight-forward mechanisms for performing some tasks (such as find and replace) and some things will end up being potentially more difficult (maybe, say, find and replace with a regex).
In an office setting I think there's a good case here for having someone that's IT/programming/automation savvy working with people to improve their day to day process.
I've actually done that before at my job, in an informal capacity. I occasionally go sit with the folks on the operations side of the business so I can learn more about what they do, and more effectively build things for them, and often times I end up telling them a lot of tricks in excel, or word, or whatever else, that make there job easier. In a few cases I've managed to create quick tools for them that substantially reduce their workload with minimal effort on my part. In a strict cost-benefit analysis, it's probably not worth my time, but it pays a lot in inter-department relations. Of course, my working environment allows for that, but I mostly mean it as an anecdotal example of what I'm talking about. ymmv.
In my experience in IT, as you are going from place to place in the office people would try to 'grab' you to help with something. I always acquiesced to this and would always see if I could share any techniques that would help the user in general based on the workflow I was seeing.
You also have to deal with people perceiving your optimizations as a threat to their job security.
I see it as a form of process improvement, but instead of analyzing inter-employee/department processes, you're analyzing the processes and individual goes through.
Ticketing systems are a pain in the ass. I get the point of them, and I think they can be really valuable, but they so quickly become bureaucracy for the sake of bureaucracy.
My team is pretty free to decide how we do things right now, and we're considering adopting some form of issue tracking so we can get a better idea internally what's going on, but we're wary of it becoming ticket hell. More than likely the ticket will only ever be referenced inside the team and we'll just try to use it as a way to make sure we're collectively not losing track of things.
We should do more of this stuff, you are correct. The proper question, and maybe after the New Year we can send out a survey asking it, is What tedious and repetitive tasks are getting in the way of your real work?
Case in point: almost all OCR software is deeply rooted in the 90's when processing power was a fraction of what it is today. Therefore, you load a scanned book into an OCR program, click "Recognize", the program spends 30 seconds doing its work and happily says "I'm done!", while you are left with 600 errors to correct manually. I'd much rather leave the program running for several hours (overnight!) and get 6 errors to correct manually. There is often a tradeoff that many fail to think of.
Of course, I'd like more complicated actions.
'Select line. Wrap in fast for loop'
'rename function'
'Open file x'
Sikuli Script lets me script almost anything that has a visual element/gui. I've been able to automate just about any task that has a gui and is repetitive, in some fashion or another, and at this point I have a backlog of scripts for working with some of the esoteric software I encounter day to day. Definitely worth checking out if you haven't before.
The multiple cursors (which are getting prominent in a lot of text editors) are awesome for small text munging and manipulation. by and large, everything I could do with multiple cursors could have been accomplished with some other tool, such as regex's or whatever else, but the multiple cursors end up being really intuitive and powerful for me. I never have to rethink how they work because they work just like my normal cursor but... with more of them. Combine them with ST2's ability to do a search and place cursors at every found location, and I can get a lot of weird stuff done quickly.
Combine this with excel (use \t and \n in sublime for row and column respectively) and you get really powerful, really fast when it comes to converting information into a useable formats.
I've also made use of excel's data validations to create drop downs in cells for making hundreds of lines of complex config for a rules engine in a few hours. Enter the configuration in excel, export to csv, use a ruby to import csv into a database table via existing orm. (Why not use the UI? The app is too slow.)
I turned what would have been a week long data entry task into an afternoon of copying and pasting out of a another spreadsheet. (Why didn't I used the other spreadsheet? It was in a non-machine readable format. I had to convert the data to the proper format using my knowledge of the system internals.)
Yeah, I've done the excel bit with \n and \t as well. I have a little text-munging javascript app I wrote for splitting and merging things in certain ways.
I also use the excel -> db route a lot, but I'm working with MS SQL Server so I'll just do the data import from excel to db.
I get dirty looks sometimes when I talk about doing things this way, but it's really handy. If I know I'm going to have to do something more than once, I'll usually write a quick script for it, but otherwise, quick ad-hoc text manipulation with ST, excel and the javascript scripts I have is pretty fast and really flexible.
Flexibility is the big thing for me. Often I won't think of every way I really need to manipulate the data right out of the gate, so being able to quickly work through and change things is handy.
Is touch typing really the only true way to control the computer "lever"? Does that mean an office secretary who touch types uses a more powerful lever than an APL programmer who does not touch type?
If what we are doing with the computer lever is ultimately just manipulating _symbols_ (not long strings of verbose text like this comment), then the question I have is whether entering these these symbols using all ten fingers really makes a difference.
Touch typing is underrated, but certainly, with the requisite knowledge, there is a lot one can do with a computer "lever" without typing more than 30 wpm.
I'm sure practicing proper touch typing (or switching to Dvorak) would speed things up even further, but there's always the option of diversifying finger acrobatics into music.
I would also argue that the touch typist is more likely to come up with names like rowIdx (row_idx), colIdx, rowLimit, colLimit, findMatchingRow(), rather than (always punting to) names like i, j, m, n, scan().
So it's not always accurate to use the XKCD comic Is It Worth the Time? (http://xkcd.com/1205/) as a metric...efficiency can't always be measured in seconds/minutes shaved * number of times action is performed...because when it's easy to do something, it's easy to explore...and also, it's easy to follow best practices.
Of course, the other side of it is...even if something does result in a large number of minutes/seconds shaved, you have to consider the opportunity cost of you spending your time implementing an automated system...and at certain early stages in a startup lifecycle, that premature optimization time can be fatal.
Not entirely unrealistic, I might add.
"Not searching for help."
And now for something completely different, I've often wondered if this is a stereotypical introvert vs extrovert thing. Google as "the coworker" for introverts. Meanwhile people who are recharged rather than tired out by interpersonal drama love to walk over and bug people "whats the regex backslash for non-whiteSpace, again?" because it recharges them. All the "google is really fast" is never going to have a negative influence compared to "hurray, I get to go socialize now".