Category
Continuous integration verifies that changes work together, continuously; continuous delivery keeps the software always in a releasable state; continuous deployment goes further and releases
Whether all of an organisation's code lives in one version-controlled repository or in many — and the trade-off is between coordination cost and isolation, with tooling determining whether either
An ORM — object-relational mapper — translates between the objects in your program and the tables in a relational database, so you write method calls instead of SQL. What it gives you: Less
Scope determines where a name is visible. A closure is what happens when a function keeps access to its scope after that scope would otherwise be gone. The second is the one that confuses people, and
A deadlock is a state in which two or more processes are each waiting for a resource held by another, so none can proceed and none will ever proceed without intervention. The classic shape. Thread A
State is any data that changes over time and affects behaviour. Managing it is hard because state creates dependencies across time — and time is the dimension our reasoning handles worst. Why it is
A stack trace is a snapshot of the chain of function calls in progress when something went wrong — read correctly it usually identifies the problem in under a minute, and read incorrectly it looks
Because Tony Hoare, who introduced the null reference into ALGOL W in 1965, later described it exactly that way — apologising publicly for a design decision that has produced an enormous quantity of
Monitoring tells you whether the things you anticipated are behaving. Observability is the property of being able to answer questions you did not anticipate, from the data the system already emits.
Not primarily for catching bugs — which is the assumption most reviewers bring and the reason so many reviews are unsatisfying for everyone involved. What the evidence and practice suggest reviews
Because documentation and the code it describes are coupled in meaning but decoupled in enforcement — nothing breaks when they diverge, so they diverge. The core mechanism. Code has a merciless
Design patterns are named, reusable solutions to recurring design problems — vocabulary for structures that experienced developers kept independently reinventing. The idea was popularised by the 1994
Symmetric encryption uses the same key to encrypt and decrypt. Asymmetric uses a pair of mathematically related keys — one public, one private — where what one encrypts only the other can decrypt.
An immutable value cannot be changed after it is created. Operations that appear to modify it return a new value instead, leaving the original intact. Why this helps, and the reasons compound: You
A message queue sits between a producer of work and a consumer of it, holding messages until they can be processed. It converts a synchronous call into an asynchronous one. What it gives you:
Eventual consistency is a guarantee that, if no new updates are made, all replicas of a piece of data will eventually converge on the same value. It does not guarantee when, and it permits reads that
A feature flag (or feature toggle) is a conditional in code allowing behaviour to be changed without deploying new code. The feature exists in the deployed application, and a configuration value
Refactoring is changing the internal structure of code without changing its external behaviour. That definition, from Martin Fowler, is precise and the constraint is what makes it refactoring rather
They differ in when the problem is discovered, and that ordering is also the order of increasing cost. Compile-time errors are found before the program runs. Syntax errors, type mismatches, undefined
A formatter changes how code looks. A linter analyses what code does and flags problems. They are complementary, and confusing them leads to teams configuring one to do the other's job badly. A
Unicode is a standard assigning a unique number — a code point — to every character across every writing system. It exists because the earlier situation was chaos: dozens of incompatible encodings,
A regular expression (regex) is a pattern describing a set of strings, used for searching, matching, extracting and replacing text. It is one of the highest-leverage tools available and one of the
The famous quip from Phil Karlton is that there are two hard things in computer science: cache invalidation and naming things. The joke endures because the problem is genuinely difficult, and the
Dependency injection means a component receives the things it depends on from outside, rather than constructing them itself. The contrast. Without it, a class creates its own collaborators: A