What Is a Property?

Not real estate: rules your code must never break — and the comments are on fire

TLDR: The article argues good tests need smart, linked generators so code rules are checked with meaningful data, not random junk. Comments split between “stop the jargon” and “it’s just insert-then-read,” with a surprise philosophy joke keeping things spicy — a reminder that clear language makes better testing.

The headline “What Is a Property?” had readers doing a double take — and not just because one commenter joked they expected philosophy class. The article digs into “property-based testing,” a way to check that code follows rules every time, for any input. The hot take? The author says the simple version (just throw random stuff at it) breaks down fast. You need smarter, linked generators that build valid test data — like creating a database first, then picking a real table name — so the test means something.

The comments? Absolutely buzzing. One camp is tired of capital-N Nouns and squishy jargon. As one top comment put it, learning tech is half figuring out which words are “official” and which are just vibes. Another camp says: calm down, it’s simple — the rule here is basically “insert a row, read it back,” and of course the test data has to match the database. It’s the classic internet showdown: language pedants vs. practical explainers.

Meanwhile, the meme crowd popped in with a banger: someone misread the title and expected a debate about philosopher Proudhon (“property is theft”), not code tests. Between the clarity crusaders, the plain-English breakdown, and the philosophy punsters, the community turned a dry testing topic into a punchy debate over words, rigor, and why everything in programming sounds like a proper noun.

Key Points

  • A property in PBT is a universally quantified computation modeled as a function returning Bool.
  • Preconditions can restrict when a property applies, often represented with an implication operator returning Maybe Bool.
  • Naive random generators (e.g., Arbitrary instances) can yield many invalid test cases in realistic scenarios (like databases).
  • Dependent generators construct coherent inputs (e.g., generating tables before selecting a valid table name and compatible values).
  • A conceptual API couples generators with properties to run structured property checks effectively.

Hottest takes

“90% of the effort that goes into learning anything in tech is spent on identifying which nouns are Nouns” — happytoexplain
“I missed the “a” in the title and expected something about Proudhon” — cristoperb
“after inserting a row into a database table, the same row can be read back again.” — skybrian
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.