---
title: Difficult Problems and Hard Work
date: 2022-06-25
tags: [code, design]
description: I found that distinction interesting to reflect about my work, so I will try to add some of my thoughts to the discussion.
---

In ["Difficult Problems and Hard
Work"](https://drmaciver.substack.com/p/difficult-problems-and-hard-weeks),
David R. MacIver writes:

> The distinction is roughly that something is hard work if you have to put a
> lot of time and effort into it and a difficult problems if you have to put a
> lot of skill or thinking into it. You can generally always succeed at
> something that is “merely” hard work if you can put in the time and effort,
> while your ability to solve a difficult problem is at least somewhat
> unpredictable.

I found that distinction interesting to reflect about my work, so I will try to
add some of my thoughts to the discussion.

## The problem with automation

My job consists mostly of identifying areas where people in the organisation
have to do hard work and finding better ways to do that.

The first approach that most people will probably think about is automation.
For example, instead of copying numbers from a piece of paper into a digital
table, you could have an OCR pipeline that does that automatically. OCR of
course is complicated technology. So in the context of this article, automation
can be defined as "the process of replacing hard work with difficult problems".
And I am not entirely convinced that doing this conversion improves anything.

First, the [automation needs maintenance](https://xkcd.com/1319/), and that is still hard work. It may be
less work than before, but you can not get rid of it 100%.

Second, you put the burden of dealing with complexity on the users. They were
used to copying the numbers manually. Out of the blue, you come along with your
fancy software and expect them to be thankful. But now they have to learn a new
system where they have to scan the papers a certain way, trigger the pipeline
somehow, and maybe deal with weird bugs or edge cases. This is all new to them
and depending on how
[leaky](https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/)
your automation is you are asking a lot from your users.

Third, there is this weird encoding and decoding going on. First you transform
hard work to a difficult problem. And how do you solve a difficult problem? By
decomposing it into small steps -- in other words, by turning it back to hard
work. This mental gymnastics is easy for some people who are used to doing it,
but I don't think we should assume that everyone can follow along.

Fourth, hard work can trivially be split across a team. If there are 50 pages
of numbers you can give 10 pages each to 5 people and get the work done 5x as
fast. With difficult problems that is not as simple by a long shot.

Of course, none of that means that automation is bad. But it might not be the
best choice in every case. While reflecting on this, I realize that I sometimes
focus too much on eliminating hard work and do not actually consider the
downsides of the alternatives.

## A better option

Now you may be asking: "Why are there even numbers on paper?" And I think that
is exactly the right question to ask here. Maybe we can just talk to the other
department and ask them to send those tables by email instead of sending over
printed pages. This would solve the issue without introducing any new
automation!

In the beginning I wrote that my job mostly consists of identifying hard work
and *finding better ways to do that*. The people who come to me mostly think
about automation and are confused when I get back to them with a proposal to
change their processes. And that is understandable. Having to see your work
from a new perspective is not an easy thing to do.

In the end *finding* a better way is one thing, but communicating and
implementing it is a difficult problem all by itself.
