Terms you will meet when buying software, explained without the jargon that usually surrounds them. If a supplier uses one of these to make something sound harder than it is, that is worth noticing.
A defined way for one system to ask another system for something, or tell it something, without a person in the middle. When a supplier says a system "has an API", ask what it actually exposes: some do very little.
Shortcuts taken to ship sooner, which make every later change more expensive. Some is deliberate and sensible. The problem is the kind nobody wrote down, because you only discover it when a small change turns out to take three weeks.
Not simply an old system. A system is legacy when the people who built it have gone, nobody fully understands it, and changing it feels risky. Plenty of old software is not legacy, and some quite new software already is.
Making two systems work together, usually so data stops being copied by hand. Most businesses discover they need this at the point where a person's whole job has quietly become moving information between screens.
Moving data or a system from one place to another. The word makes it sound mechanical. In practice most of the effort goes into the mismatch between how the old system stored things and how the new one wants them.
The Protection of Personal Information Act, South Africa's data protection law. In practice it means knowing what personal information you hold, why you hold it, who can see it, and being able to delete it on request. That is an architecture question more than a policy one.
Continuous integration and continuous deployment. Automation that builds your software, runs its tests and puts it live without a person performing steps by hand. Its real value is that releasing stops being an event.
Minimum viable product. The smallest version that genuinely tests whether the idea works. It is often misused to mean "the cheap version", which is a different thing and usually a worse one.
The steady growth of what a project is supposed to include, usually without the budget or timeline growing with it. It is rarely one big change. It is thirty small ones nobody wanted to be difficult about.
Service level agreement. A written commitment about response and resolution times. An SLA without stated hours, a defined severity scale and a consequence is decoration.
The proportion of time a system is available. Be careful with impressive-looking figures: 99.9% still allows around 43 minutes of downtime a month, and the number means nothing without saying what was measured and by whom.
Someone else's computers, rented by the hour. It is not automatically cheaper. It is usually more flexible, and it removes the problem of owning hardware you have to replace.
Software running on servers you own, in your building or a data centre you rent space in. Still the right answer for some workloads, and sometimes required by a client or regulator.
Software built for one organisation rather than sold to many. Worth it when how you operate is part of your advantage. Not worth it when a package already does the job, and a good supplier will tell you which situation you are in.
Packaged software you configure rather than build. Cheaper and faster when it fits. The cost shows up later, in the workarounds people invent when it does not quite fit.
Improving the internal structure of code without changing what it does. It looks like nothing happened, which is why it is chronically underfunded and why systems get hard to change.
A copy of the live system used to test changes before customers see them. Its value depends entirely on how closely it resembles production. A staging environment that differs meaningfully gives false confidence.
Deliberately putting a system under the traffic you expect, before your customers do. Usually reveals that the bottleneck is somewhere nobody predicted.
The human-readable instructions your software is built from. If you paid for custom software, you should own this and have a copy. If a supplier will not hand it over, understand exactly why before you sign anything.
Being unable to leave a supplier or platform without unreasonable cost. Some is unavoidable. The kind to avoid is the sort created deliberately through undocumented systems and withheld access.
Something here explained badly, or a term you met and could not find? Tell us and we will add it.