"Let's get it right this sprint."
"Let's get to the finish-line."
"It's a marathon, not a sprint."How about it's not a race at all?
Races are games. They have beginnings, endings, and rules.
In order to win, you have to go fast. Because of the rules of the game and the bounds it puts in place, pushing yourself as hard as you can is a realistic option. In fact, it's a winning strategy. Figuring out exactly how hard you can push yourself is part of the game.
Software development is not a game, even though the result may be. It has a beginning and there are places you want to get to but it's light on the kind of rules you have in a game and bereft of desirable endings.
In order to succeed, you have to cover ground and claim territory for yourself. Yet, pushing yourself as hard as you can while developing software is not an option. When you don't know how far you have to go, some of your energy needs to be reserved for ensuring you can keep going indefinitely.
If we have to use a locomotive analogy, software development is a trek.
A trek is open-ended. You might not even know where you are going...just what you want. You can realize part of the value along the way. You are likely to want to break it up into several sub-journeys.
I think the racing analogies are unhelpful and we should either get rid of them entirely or replace them with analogies to long journeys.
Even that analogy breaks down when you start to have large numbers of people but that's a topic for a different day.