Every day at our stand-up, each person shares what they did the day before, what they plan to do today, and, critically, whether or not they're blocked.
Blocked is a crappy place to be. It means you're trying to get something done but can't. Current velocity: zero.
I've noticed something about programmers I admire: they're extremely good at not getting blocked.
Some time ago I spent three days trying to get a feature working. I was blocked, and bad. Finally, I took a break and went to work on something else. The next day at standup, a colleague mentioned implementing that same feature, and then then going on to do two more tasks with the other half of his day. Incredulous, I asked him how he solved the problem I'd run into. He happily admitted he hadn't. He'd run into that problem, spent a half hour on it, and then changed direction.
Me: got blocked, pounded on the barrier. Great programmer: got blocked, tried something else that worked and moved on.
Like most programmers, I have an strong desire to solve problems. Put some broken code in front of me and I'll wrestle with it 'til it works. There's lots to do but I've got to start by fixing this problem.
The best programmers I know have a different mantra: don't get blocked. They're focused on moving things forward, not getting bogged down making everything perfect. They'll duck and weave, leaping over obstacles or tunneling beneath them. They like problems too, but they like something else even more: shipping.
Don't get blocked.