A transcript from a deeply insightful @strangeloop_stl 2018 talk: comparing software design to programs that generate programs.
Deductive synthesis can give us insights on choosing abstractions, and counter-example guided synthesis is much like TDD!
https://www.pathsensitive.com/2018/12/my-strange-loop-talk-you-are-program.html