Imagine a painter having to first plan all her strokes, brushes and color mixes in an abstract list and then “execute” a batch of those moves on the canvas and see where that got her. That is obviously an inefficient way to work and would probably not yield the high quality that would be possible if feedback where given after each stroke as is in the real world. But in our craft of software development we are in the habit of creating those batches of work and then see where that get us.