I get your point and I can’t speak for everyone but it works well for me and I recommend giving it a try.
Here are two things that help make it work for me:
1. You still execute your code through unit tests locally
2. You don’t stop programing while you wait for the deploy, you work in parallel
I have found working this way decreases the feedback loop size dramatically. In a more traditional flow, code tends to go through a lot of “process” before it runs in a production like environment at which point it is pretty late in the game to find environment related issues.