Imagine, how it would look like:
- "Well, my number one priority is to have a shelter from elements.." OK, so we build the roof first.
- "OK, now I would also like to stand in there." Uh, then, lift up the roof and build some walls around it.
- "How do I get in? The trapdoor in the roof is too high now, I know there is a ladder, but.." Let's make some door, then.
- "Right, but the floor inside is a bit dirty. Can you do something about that?" Sure, let's put some concrete inside.
Etc.
The reason why you can do something like this in programming is a) it's abstract, there is no extra cost for changing things, b) you do as much as possible modularly (OOP, FP, TDD...) anyway. But I can't really imagine any other engineering project without (at least a bit of) waterfall.