Verification-First Development
Published on: 2025-06-11 07:26:51
March 18, 2025
Verification-First Development
Or: why test-first development is not the same as test-driven development
A while back I argued on the Blue Site that "test-first development" (TFD) was different than "test-driven development" (TDD). The former is "write tests before you write code", the latter is a paradigm, culture, and collection of norms that's based on TFD. More broadly, TFD is a special case of Verification-First Development and TDD is not.
VFD: before writing code, put in place some means of verifying that the code is correct, or at least have an idea of what you'll do.
"Verifying" could mean writing tests, or figuring out how to encode invariants in types, or adding contracts, or making a formal model, or writing a separate script that checks the output of the program. Just have something appropriate in place that you can run as you go building the code. Ideally, we'd have verification in place for every interesting property, but that's rarely possible in prac
... Read full article.