Standing in front of a whiteboard and discussing design, creating and running tests, just staring out the window and thinking, are all necessary parts of the development process; but if you don't get that software into your customers hands, you've accomplished nothing. 2/5
Using working software (the result of the process) as your measure of progress, puts natural limits on the entire process, including the staring-out-the-window parts. It forces you to work small (thus the "constraint") enough to deliver frequently. 3/5
I'll add that sometimes, progress does have to slow down so that you can think things through. That's fine. That's natural overhead in the process. Incorporate it into your planning. 4/5
But, if the overhead overtakes valuable work (creating "working software"), then you need to take a long hard look at how you're doing things. 5/5
I'll add: The underlying assumption is that "software" is *valuable* software. You need to take the phrase in the context of the rest of the Agile Manifesto. There's no value in just pushing random junk out the door. That's not progress.