I am a 1099 contract developer and I definitely bill for non-coding time. If there is a bug and I have to read stackoverflow for an hour to fix it, I bill for that hour. You want me to do a code review on your in-house developers' tickets and it takes an hour, I bill for that too. I build for time spent running tests, submitting PRs, merging code, deploying, and updating Jira. I bill for meetings and phone calls, I bill for emails, I even bill for time I spend billing you. 30 hours of coding can easily be 50 hours billed.
I pretty much figured that. Problem is how we manage our internal work flow is based on tickets with an amount of hours allocated to each one. Some have 4 or 8, others have 40+. Many times I am given 3 or 4 four hour tickets to tide me over for a couple of days (while some bigger tickets are negotiated), but trying to get those 4 four hour tickets done takes all week (or sometimes more). I've stopped really caring if I overrun the times, but the main issue is these smaller tickets branch out across many different apps, all with their own quirks and there is a 3+ hour ramp up time just to get familiar with what the ticket even wants me to do. Then you end up with the dreaded "Why did it take 8 hours just to add a button to a page?" scenario.
As any experienced coder will tell you (and you've just told me), time estimates for tasks are nonsense. You should never run a team by relying on time estimates because they will always be wrong and people will be unhappy (both clients and employees).
This is just one case of many (where I loose hours/money), but to elaborate; say I get a ticket for 2 hours, "Just add a delete button for an order item on a form". Sounds sane, and I even agree that it should only take 2 hours. But of course once you get into the code you find some snags. After two hours of digging through the code you realize why the delete button was never added in the first place (was not a simple task).
But either way, I just spent 2 hours reading code, and still have another 2-3 hours of coding left to do. Might take a break at that point and collect my thoughts, get something to eat, might get side tracked then and not get back to actually working for another hour or 2. Then code up the feature. So that's 7 hours+ right there. Then I bill 2 or 3 hours for that, but it took all day.
Boss is normally understanding of going a little bit over (though not really for going 150% over). But really the end customer that pays for the work is worse to deal with. Half the time if they think something (even if it is a "fix") is going to take longer than a couple of hours, they just won't bother with authorizing the work. Then we end up with a big wart in the code base that we have to work around constantly (which in many cases, refusing to pay for an 8 hour fix has caused 100's of hours of other issues.. but another issue)
So I guess I feel guilty about working 7 hours on a 2 hour ticket when I know the end customer will just throw a fit. I guess I should just start billing for those hours in this case. But it feels like it is my fault. If I could just remember the internals of the code base, I wouldn't have had to spend two hours just reading code. Seems reasonable.. but maybe not.
Based on managing contractors for years now, I think you might be the most honest contractor I've ever heard of. Most of them bill for more hours than they're actually coding. I don't think this is malicious -- it's simply replicating the salaried structure, where goofing off and Facebooking are still part of a work day.
If you feel like you're pretty efficient, I think fixed-fee projects are good for both parties. Hourly tracking is pretty miserable. My clients are usually excited that I offer only fixed-fee engagements.
If you do continue time-based billing, you should try to switch to weekly or monthly instead of hourly. This allows you to build in a little variability.
Somewhat unrelated: someone posted on HN that s/he only codes 4 hours a day at the most, because most people's brains only have a certain amount of cycles to devote to something truly thought-intensive. Many, many people chimed in with their agreement.
That's an anecdote, sure, but there's lots of research to suggest that much more than 30 hours of productivity per week is a fantasy.