Core jargon for software architecture, delivery, and engineering culture.
A function that captures and 'remembers' variables from the scope it was defined in, even after that scope has finished executing.
Same input, same output — every single time, with no variation between runs.
New functionality can be added without rewriting or breaking the code that already works.
A system can be adjusted to meet new or changed requirements without a large rewrite.
A value or data structure that cannot be changed after it's created — any 'modification' produces a new value rather than altering the original.
How easily developers can read, understand, and safely change a codebase over time — driven by clarity, structure, and test coverage.
A function that always returns the same output for the same input and has no side effects.
The system keeps producing correct results consistently over time, without unexpected failures.
When something fails, the system detects it and recovers automatically — continuing to operate, possibly in a degraded state — instead of going down entirely.
The system keeps working correctly even when it receives invalid input or hits unexpected conditions.
The system can handle growth in users, data, or traffic by adding resources — not by needing a redesign.
Any observable change a function causes beyond returning its output value — writing to a database, modifying global state, logging, making a network request.
Is a situational choice where you give up some amount of one quality, value, or thing to gain more of another