A core part of software engineering is the “development loop”: write some code, run it and see some output, modify the code, and repeat. Perhaps the most well-known development loop is test-driven development (TDD), where the output that drives the loop is the success or failure of a pre-written suite of unit tests. I’d like to describe a lesser-known methodology called error-driven development (EDD), where the content of error messages is the driver.