I’m finally doing another blog post and as mentiond previously I have a lot of pet peeves. Today I’ll share another one with you!
This particular little source of frustration surrounds some of the terminology we use in software. (And don’t get me wrong, I do this all the time too!) There’s a set of words that we like to throw around as if they have meaning but that I’m strongly suspcious are, maybe not meaningless, but lazy placeholders that interfere with us actually getting information across to each other.
Here’s a taste of what I’m talking about:
- Heavyweight/Lightweight (what are we, moving lumber around?)
- Easy/Hard (for who? in what circumstances)
These are top my list of vacuous software words. Not that they are bad words, and they DO have meaning, but what they mean is some kind of judgement relative to the perspective of the speaker. Every time they are used they are glossing over a load of missing context.
For example: “That approach is too heavyweight.”
What does that mean? Well besides implying the visual of someone being crushed under an anvil, it might mean something along the line of “if we do that, the user is going to need to define 5 separate yaml files before they can even get started, I think they shouldn’t have to write any yaml at all,” or it might mean “I don’t want to have to fill in all those forms just to get this done, we should find a way to make it so we need only one form.” Saying one of those things could be really useful and could help advance a conversation along, but what do people say instead? “Let’s find a lightweight approach.” And everyone in the room nods, thinking “yes, lightweight is good” but having no idea if what they think of as lightweight is the same as what the speaker is thinking.
Using shorthand terms like this might work if everyone had exactly the same perspective, but a) no one really does and more importantly b) we’re learning, time and again, how valuable it is to have people at the table with a variety of perspectives - which increases the chances that “heavyweight” for you doesn’t mean the same thing as “heavyweight” for the person in the square next to yours on the zoom call.
So, should you catch one of those words slipping out of your mouth, I highly recommend trying to add just a little more context to explain what you mean by “lightweight” or “easy”.
And finally, here’s another list of similarly dangerous words … many of which I use all the time 😅:
- Highly/Loosely coupled (maybe worth just briefly saying what is being coupled to what?)
- Slow/A long time (how long exactly? relative to what?)
- (Un)maintainable (why?)
- Simple/Complicated (basically my favorite words and even if I think there’s a nice definition for simple, more context always helps)
Maybe it’s a heavyweight approach, but I think, the more context you provide, the simpler everything is :)