the reason why many of us charge by the hour is that it requires less negotiation. When is the project 'done'? a flat rate contract requires a lot of work up front to define things that might be better defined after you are most of the way done. Hourly rates make last minute changes simple, and mean that you don't have to argue if it's a last minute change or not.
it also means that the employer bears more of the risk if the work is harder than originally imagined.
(Now, I also agree with your points about why charging a flat rate is better; I'm just pointing out that there are also reasons why charging an hourly rate is better.)
it also means that the employer bears more of the risk if the work is harder than originally imagined.
(Now, I also agree with your points about why charging a flat rate is better; I'm just pointing out that there are also reasons why charging an hourly rate is better.)