There is no incentive to have a good work ethic. If you are an outstanding programmer and work long hours, management will just take that into account and hire less new programmers or even fire some.
Then they will take you as an example for your colleagues and demand they will do the same or get a pay cut. The only thing you will have achieved is the anger of your co-workers.
In other words, the problem in most cases is mostly management, whose only interest is the short-term improvement of the cost/income ratio (thus lining their own pockets) and not the long-term fostering of a productive work environment.