I feel like this is the most fair way to pay programmers. There is always an infinite list of work to do, so there's always pressure to work more hours. It doesn't matter if I work less hours in a given week, since my employer just pays me less. Also as an added benefit I also get time-and-a-half if I go over 40 hours.
The downside is that I have to punch a time card, clocking out for lunch and for breaks. That doesn't bother me, but it'd be a big adjustment for salaried employees.
I've been working this way for the past ten years and it's fantastic from a work-life balance perspective. I worked an average of 34 hours per week last year.