Software Terms Without Definitions

Child in red shirt scratching head while looking confusedI’m often bemused by words in the software industry aka computer science. It’s generally OK when industries just make up new words for something new, but in software we re-use words that have (or at least had) a real definition, and then use them completely differently. Or worse still, twist the definition just enough to make it not obvious that the meaning has changed. Sometimes even the words had a good software meaning, but it’s been killed over time – like artificial intelligence or AI.

With that in mind, and without a lot of blather, I just wanted to vent and list a bunch of them here. I’m not going to define them properly, because how could I? If I’ve missed your favorite, let me know in the comments, twitter, etc. If you disagree let me know and we can argue. 😉

The list is alphabetical, because I’m a human and think that way. If I was ordering it by capability to annoy, it’d be AI, Software engineer, and everything else beneath. Enjoy!

Agile – you’d think this had a good definition but ask around and see what happens.

API – used to have a good meaning but no longer. h/t to @keith_wilson.

Artificial Intelligence or “AI” – this term has lost all meaning. I have come to agree with Musk and others that real AI will be real dangerous, but nothing we currently call AI is “artificial intelligence” in that sense. I’ve seen a working definition that it means a computer doing something that would normally require human intelligence. I can agree with that, but if the software is essentially doing a big data lookup to get an answer, that wasn’t intelligence, it was data processing.

Computer science – You could argue this one is real as long as you apply it to hardware, but software? Forget about it. Software development hasn’t progressed to the science state yet. Blogs and rants on this are in the queue.

Cybersecurity – is it antivirus? firewall? software? coding?

DevOps – I thought this had a definition, but many, like my friend Theresa, disagree, so it must not.

Engine – this one is now just a noise word used to give something a fancier sounding name.

False positive – developers throw this word around in a way that usually means one of the following: 1) the tool output was actually wrong; 2) I don’t like this finding or don’t think it’s important; 3) I don’t understand this finding or why it’s important (usually a type of #2). It REALLY only means the first one, but the most common definition includes all of the above.

Framework – should be a great word. Was a great word. Now a marketing word.

Memory leak – you think this has a definition, but try to look it up. In my world we think of it as memory you can no longer access or control, including freeing it. Others think it means memory you never freed. (Note – they’re wrong.)

Mock – seems simple enough, but it’s surprisingly broad. Some even think it includes service virtualization.

Platform – again a term that had a meaning once upon a time, now it just means “some package of software we sell”.

– in short it kind of means “have developers start testing”. But depending on whom you ask, you might be surprised at the answer you get if you ask someone what this means in specific. Like “where IS left” and “what are you shifting”?

Service virtualization – this is a fair call. The original meaning of the term has been overloaded and extended and the “new” meaning has become more common in the software testing world, while the “old” meaning still holds true for hardware, deployment, and networking people.

Software engineering – please, this is one of the worst. Most people who call themselves software engineers don’t even begin to behave like engineers. If they are, what particular standards were they taught that all other with the same title were also taught? I thought so.

Standards – You think this one has a meaning, don’t you? In “engineering” standards means something. If you’re an engineer, you already know what I’m saying. If you don’t get this, you’re not an engineer.

Vulnerability – in the context of application security (appsec) or cybersecurity, this SHOULD mean that you have something that COULD be exploited somehow. But often it’s mistaken to mean that there is a known exploit, and the word “weakness” is used instead, and somehow means something different than vulnerability. Some want to think of it as a “bug” which is also a mistake.

How did this happen? Is marketing to blame? Or is it just that there is no “software science” even if there is “computer science?

Again, if you have a favorite let me know and I’ll add it to the list. If you disagree I’m always up for a good twitter argument. If we get enough I might add it as a new Hall-of-shame permanent list. I feel like I’ll come up with a bunch more myself as soon as I hit publish.

[Update – suggestions coming in already. I’m putting them in proper alphabetical place, but will reference the source.]

[Update 2017-09-19 – added “memory leak”. Should have realized that was needed, it’s an obvious one. also false positive]

[Update 2017-12-11 – added “shift left” because last week I was meeting with some people and discovered we didn’t have the same definition at all. Essentially their “shift left” was entirely to the left of my left. Also expanded a few other non-definitions that were already here.]

[Update 2018-03-29 – added “vulnerability” based on conversations with a friend]

One comment to “Software Terms Without Definitions”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.