This morning I was writing a test plan document. It contained lots of technical nitty-gritty and detail, but a lot of it was the same stuff repeated over and over again. It was very tedious to write (and hence undoubtedly error-prone), but necessary. I kept thinking how useful it would be if I could automate the process. I knew it was just a little too complex, and contained a few too many exceptions, though, that writing a program to do it would be more trouble than it would be worth.
This led me to thinking about ‘near-human’ tasks. Perhaps we can classify tasks into three board areas:
Automatable. These are tasks that can easily be programmed, and where it makes sense to do so once you have a computer. For example, figuring out the prime numbers between 1 and 1 million is far faster on computer than by hand (including the time to write the program).
Non-automatable. These are tasks that almost certainly cannot be programmed, even with the current state of AI, and are often open questions: ‘How do I prevent wars?’, ‘Is global warming real?’, ‘Which way should I design my new product?’, ‘What’s the best colour for a car?’, etc.
Near-human, or semi-automatable. These are tasks (such as mine above), that feel like they should be automatable, but anyone who has any software engineering experience knows that they will spend more time writing the program to do it than doing the task (although only by a factor of up to 10, say).
It wouldn’t surprise me to discover that near-human tasks are an already-understood concept, probably in the field of AI or some other computer science theoretical field (possibly something I should already know!), and that I’m reinventing terms here. But maybe they an area that we can focus on more in order to overcome some frustration with the menial tasks that annoy us?
One possible example, although more automatable than my original one, is that of detecting spam. Relatively good spam filters now exist for email, with ~1% false negative rate and next-to-no false positives. These spam filters have been probably been technically possible for some time (although they still eat a fair amount of compute resources), but have only risen to prominence in the past few years because the rising tide of spam has made them necessary. They are still not perfect, which in my mind is what keeps them out of the fully-automatable category (the writers are always one step behind the spammers, and would have to do more work than is worthwhile, or maybe even possible, to get a 0% false negative rate), but they are getting closer.
What other examples of near-human tasks exist? What should the bright software engineers of tomorrow be working on to make our lives easier?