The manifesto in full
Why we build the way we build.
Six declarations sit on the landing page. This is the reasoning underneath them: what each one costs, what it buys, and how we hold ourselves to it when a deadline makes the opposite tempting.
01 The problem we are answering
Software has never been cheaper to produce or faster to discard. A working system can be generated in an afternoon and abandoned within two years, and most of the industry has quietly accepted that as normal.
The cost of that acceptance is rarely counted honestly. Every rebuild repurchases features the business already paid for, and throws away the accumulated understanding that made them work correctly. The second version is rarely better. It is usually the same idea, implemented by people who no longer remember why the first one made the decisions it did.
IDEALS exists to make the other choice practical. Not slower work, and not precious work. Work that is still useful in year five, because it was built by people who assumed year five would arrive.
02 Reliability is a feature
Reliability is usually treated as a quality that appears on its own if everyone is careful. It does not. It appears when someone scopes it, builds it, and tests it like any other requirement.
So we write it down. What must never fail, what may degrade, how quickly it must recover, and how we will know. Those answers shape the architecture before a line of code exists, because reliability chosen at the end is only ever a patch over a decision made at the beginning.
The practical result is unglamorous: fewer moving parts, boundaries where failure can be contained, and monitoring that tells us before it tells your customers.
03 Clarity beats cleverness
Code is read far more often than it is written. Most of that reading is done under pressure, by someone who did not write it, trying to understand it well enough to change it safely.
Cleverness optimises for the moment of writing. Clarity optimises for every moment after. When the two conflict we choose the boring construction, the longer name, and the explicit step, because the cost of an unclear system is paid repeatedly and by people who never got to enjoy the trick.
This is the principle most often mistaken for a lack of skill. It is the opposite. Writing something complicated is easy. Writing something a stranger can safely modify at 2am is the harder discipline.
04 Software should age well
A system's real quality is not visible at launch. At launch everything is new, everyone remembers how it works, and nothing has drifted. The measure that matters is how it behaves in year three, when the original team has changed and the requirements have moved.
Ageing well means the structure still matches the business it serves, the documentation still describes reality, and a change that sounds small still is small. Ageing badly means every request now carries a warning about what else it might break.
We design for the second reading. That means writing down why, not only what, and keeping those notes current as a delivery requirement rather than a good intention.
05 Systems must outlive trends
Frameworks rotate on a cycle of a few years. Businesses do not. Tying the core of a company's operations to whatever is currently fashionable means signing up for a rewrite on someone else's schedule.
So technology selection is a durability decision for us, not a preference. We choose languages with deep talent pools and long track records, relational databases for data that will outlive every interface built on it, plain documented HTTP for anything we expose, and as few dependencies as we can manage. Every dependency is a promise somebody else has to keep.
Nothing we build is welded to a single vendor. If a provider disappears, your system moves. That is a design requirement, and it is tested rather than assumed.
06 Good code is readable code
If a competent engineer who has never seen the system cannot follow it, the work is not finished. That is the standard, and it is checkable, which is what makes it useful.
In practice this means reviewed changes, consistent structure across a codebase, names that say what things are, and tests that read as a description of intended behaviour. It also means deleting code that no longer earns its place, because unread code is where misunderstandings accumulate.
The test we apply is simple. Could another team take this over without us? If the honest answer is no, we have built something fragile, however well it currently runs.
07 Stability is speed over time
Teams that move fastest in month one are frequently the slowest by month twelve. Speed borrowed early is repaid with interest, in debugging, in coordination, and eventually in a rebuild.
Stability compounds in the other direction. A system with clear boundaries and honest tests is one where a change can be made confidently, which means it can be made quickly. The pace looks similar at the start. It diverges sharply after that.
This is why we resist the framing of speed against quality. Over any horizon a business actually cares about, they are the same axis.
08 What this costs, and what it saves
Building this way costs very little extra at the start. Discipline is not overhead, and the first release lands on a comparable schedule. The difference shows up afterwards, in the shape of the curve rather than the first point on it.
A system that runs for ten years without a rewrite costs a fraction of one rebuilt every two or three. It also keeps something that never appears on an invoice: the accumulated understanding of how your business actually works, encoded somewhere durable instead of walking out with whoever leaves next.
09 How we hold ourselves to it
Principles are easy to publish and easy to abandon quietly when a date is at risk. These are the arrangements that make ours checkable from the outside:
- Every system has a named engineer who answers for it, not a ticket queue
- Documentation ships with every release and is expected to match reality
- Progress arrives in short, visible increments against a written definition of done
- Systems under our care are reviewed quarterly, in writing, against the numbers
- You own the source, the infrastructure, the accounts, and the data from day one
- Any competent team can take over, and that is tested by the documentation rather than promised
If this is the way you want your software built, the next step is a conversation with the people who would build it.