Language, discrimination and software development

I recently noticed myself using gendered language to talk about computer things where gender was irrelevant.  This got me thinking about language, and prejudice and discrimination, more broadly.  Beyond the obvious, decency-related reasons, being more open to how people are different from you could help you do your job in IT.

Gendered magic

The trigger for this article was listening to an episode of the Software Engineering Radio podcast about Cockroach DB.  It’s a database that somehow lets you have both the correctness of a traditional SQL database and the speed and distributed-ness of a NoSQL database.  When I heard this, I thought “That’s witchcraft!”.

I then wondered when was the last time I’d used that expression in that way, and the last time I could remember was several years ago, when I saw VMWare move a virtual machine from one physical machine to another, while the virtual machine was still running.  (As if your house is moved down the street while you’re still inside it, playing table tennis, and you don’t notice anything beyond your table tennis game.)

A hotel in Chicago is raised up on jacks while people are still inside it.
A hotel being raised up on jacks while people are still inside it – Image via Wikimedia Commons, inspired by an episode of the podcast 99% Invisible

I then wondered a bit more, about why I’d use the word witchcraft and not similar words such as wizardry or magic*.  I realised that I do use all of them in an IT-related context, but they have slightly different meanings.  They might mean different things to you, but to me they are:

  • Magic = routine work that gets done automatically for you, which saves you from doing it yourself.  For instance: “This is mapped to that by magic.”
  • Wizardry = impressive amounts of skill and competence at something.  I might not be like this myself, but I can imagine how I’d get there with enough time and hard work.  For instance: “Steve has done his usual front-end wizardry, so this is all lovely.”
  • Witchcraft = something so technically impressive that I find it hard to even imagine how it’s done.  This is the meaning that’s closest to Arthur C. Clarke’s statement: Any sufficiently advanced technology is indistinguishable from magic.

I hadn’t realised before I thought about it, but there’s an order to these terms: smallest to biggest in terms of how impressive something is.  Then I wondered about this – do I feel OK about it, now I’ve noticed it?  In this case, I’m not sure but I think so.

It is sticking gender where it doesn’t belong (such as assigning it to ships or cars), which is often a bad idea.  But I think that any value judgement brought along for the ride goes the right way in this case – the group that historically has done worst out of this kind of judgement (i.e. women) is linked to the word with the best meaning.

I might be wrong.  If you think it’s all nonsense and I’m worrying over nothing, I hope that the rest of this article gives you some food for thought (but please let me know what you think after you’ve read all of it).  If you think that using gendered terms like this is unhelpful, please let me know why, and what you think I should use instead.

Taking off the blinkers at least a bit

The magic / wizardry / witchcraft thing made me remember to watch my language, because not only does it reflect who I am, but it affects other people.  Something that helped me with this in the past was a bit of satire by Douglas Hofstadter called A Person Paper on Purity in Language.  It is deliberately shocking and provocative – it helped me to see the arbitrariness of much of language, and how it can convey meanings and values that we might not realise or want to convey.

The language we speak evolved from earlier things to get to its current form – we (probably) don’t speak Norman French or Medieval English.  Its current form is a complicated and continuous negotiation rather than being a sacred thing carved in stone.  It will keep changing and as it does I hope that it changes in a way that excludes people less, particularly people who’ve not had a fair deal in the past.

The thing is, it’s not just about words.  Words are often a symptom of, and give shape to, thought.  Thought is often what motivates action (or inaction).  It’s also not just about sexism.  It’s about racism, and other discrimination such as that based on sexual orientation, physical ability, neurodiversity, age and other things.  Do certain accents sound more intelligent to you than others, or more trustworthy?  If so, why?  What difference does it make to how you think of people or how you treat them?

This can be uncomfortable stuff, particularly for someone who, like me, ticks most, if not all, privilege boxes.  When someone points out where you’ve been falling short, it’s tempting to get defensive in order to protect your self-image.

Jon Skeet has, quite rightly, been talking about the lack of diversity in IT for a while.  (In case you don’t know him, Jon is the Chuck Norris of Stack Overflow – the premiere source of IT answers, an author of top-notch books and also a very good speaker.)  In one of his many excellent videos he wore a Code Like a Girl T-shirt and prefixed the technical part of his talk with a short rant about diversity.  (He then, as usual, delivered useful technical knowledge in an accessible way.)  I know YouTube comments can turn into a cesspit, but even in that context I found it sad and informative to read people commenting that they no longer have respect for him due “all this diversity nonsense”.  This is Jon Skeet they’re talking about.

I don’t want to be “that guy” and, yes, it’s too often a guy i.e. a man.  That guy who lacks the courage to grow, to be less of an arse, and who hides that lack with aggression or sour wit.

Why bother?

There are at least two groups of reasons why I think you should bother.

The first is summed up with: Duh!  If I need to remind you why it’s important to care about other people, then I fear either this article is going to have to be even longer than it already will be, or we’re both wasting our time.  Sorry if this comes across as snarky or ranty (as this isn’t my intention), but as far as I’m concerned it’s what dignity means if you take it seriously.

If you’re not persuaded by some random person on the Internet, then maybe you’ll listen to e.g. the US Declaration of Independence, or to people like Jesus or Muhammad.  This group of reasons has benefits like a fairer version of who gets hired / promoted / listened to, how much people get paid etc.

The second is summed up with: Because it can help you to do your IT job, particularly jobs or parts of jobs relating to testing and UX / product management.


One of the many things I have learned from testing expert Michael Bolton is the context-dependent (or user-centric) definition of a bug.

Instead of saying that:

Bug = the difference between the product manager’s / programmer’s intention and the software’s behaviour

You say that:

Bug = anything about the product that threatens its value to some person who matters

This is a double-edged sword.  On the one hand, you might interpret it in a “if a tree falls in the forest…” kind of way, i.e. that a coding error isn’t a bug if a user doesn’t notice it or doesn’t really care about it.  I.e. you can get sloppy. (The unobserved error is actually still a bug by this definition, because it still threatens user value.)

The problem is it also means that if the user thinks a bug’s important but you don’t (or thinks it’s a bug but you don’t) then you can’t simply dismiss it with statements like “that’s an edge case” or “works for me”. To quote Michael, after the style of Karl Wiegers “They might not always be right, but they always have a point.” So tread this path with your eyes open as to what it means for how you develop software.

Who are the people who matter?  Do you know enough about them and how they interact with your software that you know all their expectations of the software?  Or will you have to imagine what they’re like?  Are you aware of how they might be different from you?  Are you aware of those differences but you think they’re not important, or that people different from you are wrong when they think differently from you?

Note that “people who matter” includes, but isn’t limited to, users. If, as I’ve done in a previous job, you write code that processes personal data about people that’s come to you via e.g. a survey, they might not be users of the system. However, if you leak their personal data, they will understandably feel this threatens things that matter to them. I.e. these people are data subjects in GDPR terms.

Similarly, operations and support people might not be users, but are likely to be people who matter. How can they install / upgrade / monitor / etc. the software? How can they help users diagnose and possibly fix problems with using it?

Given that there’s never enough time to do all possible testing of software of any decent size, time on testing will have to be rationed.  I’ve written about risk as a way to guide testing time, but risks to whom? (Or risks to whose successful use of the software?)  To people like me, who use the software like I do?

UX / product management

You are (probably) not your user, at least you’re probably not like all your users.  Just as testing time needs to be rationed, so does building time.  Whose needs are you aware of?  Which kinds of user are you trying to talk to?  For whom are you building the product?

Too often people hear the term accessibility and they think of a dull and tedious compliance-motivated exercise.  Things like making sure there’s alt text for each image on a website – not the stuff that rock-and-roll developers should be spending their time on.  UX expert Paul Boag prefers the term inclusive design and expresses things much better than I can.

Thinking of users not identical to yourself shouldn’t be a chore – it’s how you: a) show you give a monkey’s about other people, b) are more likely to make more money via being able to sell to more people and /or  have more people enjoy using your product.

Work in progress

A tenet of things like Kanban approaches to software development is to limit the amount of work that’s started but not finished, i.e. work-in-progress or WIP.  The idea is that work is only valuable to the customer when it’s finished and in the customer’s hands, so putting effort into starting lots of tasks while finishing none of them is wasting that effort.  It’s better (as far as Kanban’s concerned) to finish one thing before starting another.

Unfortunately, I think that this is an area where we must always be works in progress.  This work is never finished.  As I said before, I speak from a position of privilege.  I know I’ve messed up, and unfortunately will do so in the future.  If you feel you’ve been affected by this (by me) please let me know if you’re able.

I don’t have any magic answers, other than to keep working at it.  The work involves listening, learning (in my case, I’m soon going to read Invisible Women and Why I’m no longer talking to white people about race and then who knows?), saying sorry where you should, and having the courage and strength to try to be better.

UPDATE 20th September: Michael Bolton kindly pointed out where I’d got the RST view of bugs wrong. I hope it’s less wrong now.

* I think that it would be wrong to be talking about gender and magic and not mention Equal Rites by Terry Pratchett.  So I’m doing so, appropriately I think, in a footnote.

2 thoughts on “Language, discrimination and software development

  1. I had been going to make a comment along the lines of not assuming that ‘wizardry’ is always positive, and ‘witchcraft’ always negative, but then you cited Terry Pratchett, which is where I was going with that. There has been a movement over the past twenty/thirty years, both in genre literature and in Wiccan circles, for ‘witchcraft’ to be reclaimed and repurposed in a positive way.

    As for words: one word in common IT use that I’m looking out for is “whitelist”, because if we as testers don’t challenge that, our clients may well. Call me “snowflake” or “PC” if you want, but our clients take notice of these things and as an employee, let alone a tester, one of my jobs is to spot reasons why a potential client would choose someone else’s product instead of ours. Any avoidable reason not to choose our product is something that needs addressing.

    Liked by 2 people

  2. I completely agree with black/white list, because things like bad/good list are not racially charged and also make the relevance and meaning 100% clear. Similarly master/slave -> primary/secondary.

    I still use whiteboard (and would use blackboard) for IRL things to write on, rather than pen/chalk board, because they’re boards that are white or black. (I know that some things called blackboards are actually e.g. green, but they’re not common in my experience as I’m not e.g. a university lecturer.)

    I think that the habit of pruning out avoidable objections is a generally useful skill, and transfers into things like talking one-to-one with people, or writing comments in online discussions. If you’re trying to argue against someone’s position and you give them something in your words to object to, that can give them an excuse to avoid your point by diverting the discussion onto your objectionable words. So, pruning out the avoidable stuff reduces the attack surface for debate to as close as possible to just your point.

    Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s