Software Engineering Terms: A Lexicon

Software engineering is a scientific discipline, as well as an art. Like many such fields, it has developed specific terminology and jargon, whose meaning may be subtly different or even completely opposite to what one would guess. In the interests of spreading enlightenment among budding software engineers, we have prepared this brief lexicon that covers some of the more important terms you may encounter in your career in software development:

Meaning: “If I hadn’t spent all afternoon talking to my friends on AIM I might have some idea what is causing the problem.”

Meaning: “Compiling the source did not catch the bug. Please file a bug and I’ll triage it later.”

Meaning: “This compiled OK on one platform.”

Meaning: “I will file a bug on this problem and assign it to some component I am not responsible for.”

Meaning: “I ran the test five times, and four of them failed with bizarre non-reproducible errors, but one of them succeeded.”

Meaning: “I know I’ll never get any of these things so why not add a pony to the list just to make myself feel better?”

Meaning: “We’ll bend over backwards to add any feature you want.” Opposite of ‘stable’.

Meaning: “We have absolutely no idea how this feature should work, but we don’t want to think about it, so you should just implement it over and over again until we think it’s right.”

Meaning: “Someone should waste time setting up a bizzare web server with a stupid user interface so that for two weeks people write a series of bad web pages that are hard to read and navigate which then fall into complete disrepair as they tire of the shiny new tool.”

Meaning: “I’ll create an empty wiki page for that issue and give people the URL whenever they pester me via e-mail.”

If you found this lexicon useful, you might be interested in yesterday’s profile of the different types of software engineers.