I think everyone wants to move fast, isn't it? That being said, I fail to understand why we are so much hung up on terminology.
I believe in keeping things simple; and the following, IMHO is the best process to follow.
All we are doing is either building a feature, or fixing bugs. When you do the former, you are ought to have something like a design document with the tasks broken into small steps, each of which should ideally take a maximum of a day. If you for some reason don't finish your micro-task, you explain why and move on, and try to get it done the next day.
What's also important is assigning the correct priority to our issues. It's important to build just one feature at a time before jumping onto fixing something else just because it's out there or easy to fix. When you move around too much, it adds to the pressure and you end up shipping nothing.
All we are doing is either building a feature, or fixing bugs
This is not true. And this is what I don't like in the agility mindset ... You also have to refactor your code base that is neither a feature neither a bug ! You have to refactor sometimes otherwise any feature/bug coding will get painfull with the time.