See the first post in The Pragmatic Programmer 20th Anniversary Edition series for an introduction. Challenge 1 Points to ponder: If DBC is so powerful, why isn’t it used more widely? Is it hard to come up with the contract? Does it make you think about issues you’d rather ignore for now? Does it force you to THINK!? Clearly, this is a dangerous tool! Design by contract leads to similar arguments as the great dynamic vs static typing debate: