Phrases in computer science that may need to be deleted

The next issue of the SICPers newsletter is about expressions that were introduced into computing to mean one thing, but seem to be used in practice to mean another. It annoys purists, pedants and historians: it also annoys the kind of software engineer who delves into the literature to see how ideas were discussed and used and finds that the discussions and uses were about something completely different .

So should we just drop all technical IT terminology? Maybe. Here is an irreverent guide.

object-oriented programming

Fortunately, the industry doesn't really use this term anymore, so we can ignore the change in meaning. The small club of people who care can use it properly, everyone else can continue not to use it. Just be aware, when diving into the history books, that it can mean "extremely late binding of all things" or it can mean "modules, but using the word class" depending on the age of the text. Agile

No, this one's in the trash, I'm afraid. It used to mean "no stunt" and now means "cascade with a status meeting every day and an in-house demo every two weeks." We need to find a new way to discuss the idea that perhaps we're focused on work software and not organizational bureaucracy, and that way doesn't involve the word…

DevOps

While you can hire a "DevOps engineer" to fill a specific role on a software team, we've all lost using the phrase DevOps.

Artificial intelligence

This used to mean "psychologist/neuroscientist developing computer models to understand how intelligence works" and now means "an algorithm put into production by a programmer who doesn't understand it". But there is a risk of confusion with the minor but common usage "actually a collection of if statements but last time I checked AI was not a protected term" that you should be aware of. Probably OK, in fact you should use it more in your next grant offer.

Technical debt

Previously, something very specific was used in the context of fintech development. Now that means everything anyone needs it to mean if they want their product owner to let them do some hobbyist programming on their business software, or whatever. Can definitely be retired.

Behaviour-based development

It was originally the idea that maybe what your software does should depend on what customers want it to do. This now means automated tests with a particular syntax. We need a different term to suggest that maybe what your software does should depend on what customers want it to do, but I think we can continue to use BDD in the "I wrote some tests at some point!" meaning.

Software reasoning

Certainly another for the trash. If Tony Hoare weren't alive today, he would be turning in his grave.

Like? Take a second to support Graham on Patreon!

The next issue of the SICPers newsletter is about expressions that were introduced into computing to mean one thing, but seem to be used in practice to mean another. It annoys purists, pedants and historians: it also annoys the kind of software engineer who delves into the literature to see how ideas were discussed and used and finds that the discussions and uses were about something completely different .

So should we just drop all technical IT terminology? Maybe. Here is an irreverent guide.

object-oriented programming

Fortunately, the industry doesn't really use this term anymore, so we can ignore the change in meaning. The small club of people who care can use it properly, everyone else can continue not to use it. Just be aware, when diving into the history books, that it can mean "extremely late binding of all things" or it can mean "modules, but using the word class" depending on the age of the text. Agile

No, this one's in the trash, I'm afraid. It used to mean "no stunt" and now means "cascade with a status meeting every day and an in-house demo every two weeks." We need to find a new way to discuss the idea that perhaps we're focused on work software and not organizational bureaucracy, and that way doesn't involve the word…

DevOps

While you can hire a "DevOps engineer" to fill a specific role on a software team, we've all lost using the phrase DevOps.

Artificial intelligence

This used to mean "psychologist/neuroscientist developing computer models to understand how intelligence works" and now means "an algorithm put into production by a programmer who doesn't understand it". But there is a risk of confusion with the minor but common usage "actually a collection of if statements but last time I checked AI was not a protected term" that you should be aware of. Probably OK, in fact you should use it more in your next grant offer.

Technical debt

Previously, something very specific was used in the context of fintech development. Now that means everything anyone needs it to mean if they want their product owner to let them do some hobbyist programming on their business software, or whatever. Can definitely be retired.

Behaviour-based development

It was originally the idea that maybe what your software does should depend on what customers want it to do. This now means automated tests with a particular syntax. We need a different term to suggest that maybe what your software does should depend on what customers want it to do, but I think we can continue to use BDD in the "I wrote some tests at some point!" meaning.

Software reasoning

Certainly another for the trash. If Tony Hoare weren't alive today, he would be turning in his grave.

Like? Take a second to support Graham on Patreon!

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow