From time to time, I share certain terms that I find useful in my space-age-au-go-go career as a software developer. This is one of those times.
Idimpotent – An operation is “idempotent” if it can be safely attempted multiple times. An operation is “idimpotent” if it should be idempotent, but instead it brings your system to a crashing halt if you try it twice. (Variation: idemimpotent).
Implementation detail – This term is usually used to describe the requirements of any given project.
Trivial – Any piece of software (“We need a library with a simple API that solves the halting problem”) that must be implemented by some other team.
System tests – A term used to describe the delivery of product to users.
Frozen – As the ship date of a product approaches, it enters the “feature freeze” period. This means that new features are added to the product only if they are really, really cool.
Reproducible – If a bug does not occur every time the unit tests are run, it is not reproducible, and may be closed.
Unit tests – Pieces of software that thoroughly exercise, at a bare minimum, at least 5% of a given software component.
Regression tests – Comprehensive tests that you expect other people to run when they make changes to the codebase.
Sophisticated – Hard to use.
Simple – Doesn’t do anything useful.
Efficient – Does not do anything useful, but it not does it very quickly.
Debugger – A crutch for the weak programmer who is not sufficiently 3l33t.
Comments – See “Debugger”
Other useful software engineering terms can be found here. Thanks to Stewart Clamen, Benoît Hudson, and psu for helpful suggestions and editing.