Software Development as a Caretaking Profession
Inspired by Ed Yong's talk where he proposes the ways in which journalism can be viewed as a caretaking profession, I've been thinking about the way that software development can be a caretaking profession.
Some software, like medical device firmware or public services delivery, has a pretty clear caretaking dimension. There's software that's clearly in the opposite pole as well, like addictive gambling games or surveillance tools.
But there's lots of software in the middle: enterprise apps, networking and communication infrastructure, games, online stores for essential or niche goods. How can we look at that from a caretaking standpoint?
When you're building software, someone is going to be spending time and attention on it. These things should be precious. I think this is the most important caretaking angle.
Someone will also probably have to make changes to the software in the future, and it will consume power, compute, storage, and networking. I think these aren't quite as important as being gentle on the human users, but they also matter.
So when you're making software, care is:
Being mindful of the user's time, attention, and frustration tolerance
Never losing a user's work; letting them go back to previous states
Avoiding long waits, intrusive notifications, loading spinners, etc.
Making things easy to navigate or search
Being mindful of the resources that you're consuming
Admitting that you don't know what to build, what to store, what to log, and figuring out how to do a good job anyways
Learning a little more than you need to, writing more than the bare minimum operational docs, and putting in a little extra polish to make development easier in the future
Telling the boss “no” (as scary as that is) when you're told to build something haphazard or sketchy