You can't have it both ways. Upfront price means the per hour is purposely inflated to deal with the changes the client is going to demand, or an argument about what is and isn't covered by the initial agreement. This happened weekly at my previous company.
Of course there are people that take advantage of an hourly rate, particularly at the bottom of the barrel pricing. If I was on contract and thought that X tech would make the project better, I wouldn't be charging for research time (call it my education bucket). I've saved weeks by using something I'm not as familiar with, but more suited to the problem at hand.
Duh. Though it doesn't really work like that; there are enough ethical programmers who work their asses off and give you high quality despite hourly pay.
Of course there are people that take advantage of an hourly rate, particularly at the bottom of the barrel pricing. If I was on contract and thought that X tech would make the project better, I wouldn't be charging for research time (call it my education bucket). I've saved weeks by using something I'm not as familiar with, but more suited to the problem at hand.