Sometimes I fail a sprint because estimations weren't correct. Sometimes I fail a task technically because the task can't be done with the tools I have or the time I'm given, or would produce code too brittle or rotten to justify doing.
When I have more of a free hand I usually can get something working though. But it's not like I'm creating new algorithms or anything.