A Software Engineering Theory of Mind

1 minute read

Jul 2017: In developmental psychology – i.e. how we as children develop – there’s a thing: a Theory of Mind. A stage kids go through, very early on, where they can first figure out in an experimental setting “Aha – Daddy wasn’t in the room when that sciency guy moved the little ball from his right hand to his left – so now Daddy has come back in, he will still think it’s in the sciency guy’s right hand!”.

In other words they can grasp that there’s a distinct mental process going on with Daddy. Daddy doesn’t know what Junior does.

It’s staggering to find, then, that basically toddlers have mastered a cognitive process which still eludes a bunch of experienced engineers.

Day 1 at, I don’t know, “Weasels Inc”: some guy tells you to check out the codebase, make this one simple change, and then just run “WeaselFlip” to put it on one of the Europe test servers. And the same guy is slightly puzzled and annoyed when you don’t yet know what version control is in use at WeaselInc, never mind what the source structure is, how to fetch it, what IDE to use for the changes – and heaven forbid admitting to zero prior knowledge of the mighty (and entirely proprietary) WeaselFlip tooling. Or where one might find the Europe servers, test or otherwise (in Europe, most likely, but y’know: big place…).

This is, let’s acknowledge it, a genuinely simple request when given to an experienced colleague. But not to a brand new hire.

It really does happen. I have seen it, and in varying degrees.

There are some people who are fantastic at being aware that Alice, Bob and Carol all joined last week, and then display a corresponding talent for bringing those colleagues tactfully and politely up to speed with helpful background – “Yeah this is WeaselFlip it’s a custom symlink handling tool if you’re familiar with UNIX at all, it handles a lot of the complexity of our enterprise permissions stuff, and here’s the Wiki link for reference – and I’ll send you some examples once we’re done”.

And then there are people that just seem oblivious: they don’t, or – surely not? – can’t, account for the fact that colleagues don’t have their particular depth of expertise.

Being judgmental for a moment, and why not, it’s my blog: while naming no names, I do tend to see a link between “explains stuff appropriately” and “is a capable engineer/manager”. Take from that what you will and do feel free to consider your own track record at this time…!

Obvious take away point: be nice, explain things properly whether someone is new to your organisation or has simply moved from Weasel Skeletal Assembly into your Weasel Wetware AI division, and always take into account the possibility that your “simple” is someone else’s “this means nothing to me”.