> There is always more work to do than there are people to do it
That's a failure at the management level, not the developer's level. Expecting developers to make up for the management failure will work for a week, maybe even a month. Then attrition will rise, overall productivity will fall, and the team is screwed anyway.
It is quite literally management's job to identify what needs to get done when, and to ensure that they have the proper resources to get it done. If they can't hire, then they need to triage between pushing their workers harder now at the consequence of loosing their productivity (or the workers themselves) later, or pushing out the timelines.
The problem is that most managers don't understand the tradeoffs involved, because we as programmers don't provide the proper feedback (or they're just bad managers and don't listen to feedback that's provided).
> [...] I will not have a very good relationship with my team. Our team philosophy is that if you finish early, then you help others out who are struggling.
It sounds like management has been able to use group dynamics to create an unhealthy working situation. These kinds of attitudes typically come from above, not below. The problem which will arise from this situation is going to manifest itself as the "early finishers" dropping their productivity (why bother working hard when all I get is to pick up after my co-workers), burning out, or they just plain leave. Have you seen any of that yourself?
Try providing feedback up the chain that you need more workers for the given workload. You'll learn a lot from their response.