The CRUD Problem

Writing CRUD should be really fast; that should bring no loss of flexibility; the work required should be close to proportional to the business complexity; expertize and competency should have a measurable impact on developer productivity all the way through.

Nowadays you can get one of those, and not more than one, some you can't get at all. This is the problem.

CRUD is supposed to be the simplest and most straight-forward kind of software one could write. All of the complexity should come from the requirements, and should be immediately visible from the outside.

Yet on practice those systems famously get very complex very quickly and all of that stops being true. Not to say about what pass around as modern practice, that makes software this way from the bare start.

That's a problem that has been bugging me for a long time. But if I try to do something about it, I actually don't know how to solve it. So I believe I'll gain something from cristalizing my understand of it first.

So, what is CRUD again?

Most software written around the world share this property that it's a data viewer/editor, and its value comes from having the data organized and accessible for all involved parties.

The name remains from a time when people created graphical interfaces where people would see a single database table and could create, read, update or delete its records. But software evolved, those interfaces got used less and less, and the name now is applied to all of a kind of software.

Anyway, decades ago people settled on a particular architecture, where a relational database management system holds the data, a web server intermediates it, and a browser presents the data to the users. Alternatively, the servers can talk to each other as if one of them is the user, and share data with each other.

Overall, that's a fine organization. It creates some issues, sure, while solving others, but neither are important enough to explain all of the CRUD problem by themselves.

Instead the complexity creeps in, bit by bit, from every kind of issue. It's not a simple problem, it doesn't have a simple solution, and will take a few posts to come through.