Charge to fix bugs
The following is edited from an email exchange with a client:
> Do we get charged for bug fixes (since the app is supposed to be functional after development)?
Short answer: Yes, you are charged for time spent on your projects, which includes bug fixes.
Longer answer: I charge by the hour for time spent on the project.
One of the reasons I dislike doing fixed-bid work is because it sets up an antagonistic relationship between client & developer whereby it's in the client's best interest to squeeze as much work as possible out of the developer for a fixed price, and it's in the developer's interest to do as little as possible for a fixed price. This leads to an unsatisfactory situation for all involved.
One of the reasons why I'm big on sending frequent preview applications and transparent communication is because, as long as you're paying me by the hour, it's in your best interest to follow how things are going along and point out if you think I'm taking a wrong turn. Also, if you feel my work is sloppy, buggy or otherwise sub-standard, we can discuss what can be done about it, and you have the opportunity to "fire" me if you are not happy with the resolution.
Obviously, it's in MY best interest to provide you with good, solid code that does what you want so that I can build my business on your exuberant referrals. In fact, my entire business model is based on the idea of not-just-satisfied, but ecstatic customers who give enthusiastic positive referrals to my next clients and who come back for repeat business, themselves.
Because I'm doing "stepwise development" whereby I add the GUI for a feature to let you see how it's going to look & feel on the device and then, when you are happy with that, I add the features, there will naturally be a time during development when the product seems fairly buggy. However, I assure you that, before it is finished, neither of us will be able to find any bugs in the product.
Because customers have a way of finding things that product-owners can miss, for the first few weeks after your app is in the store, I will set aside additional time for fast-response to any emergencies that arise and require an immediate fix. However, it is my experience that such things rarely happen, especially if we've both been diligent in our share of the testing.
It has never come up but, as a policy, if it ever happens that I completely botch something in a way that never should have happened, of course I will not charge you to set it right. You don't see it, but you get small versions of this when I have to look something up; I don't bill you for the time spent researching things I ought to already know. I view all billable hours through a critical "is this the sort of work one would expect from a senior developer?" lens.
If you want, we could work out some sort of "warrantee retainer" or similar but, again, I think that kind of thing creates an unhealthy business relationship between us.
I guess I'm proposing that you just trust me to do a professional job, to keep mistakes to a minimum and to fix them quickly when they are found. If there is anything I can do to help ease your feeling about this, or if you are unsatisfied with my work IN ANY WAY, please do not hesitate to let me know, immediately. If you like, I can provide contact information for satisfied repeat clients; you can talk to them about my delivery, my estimates, my bug-handling, my code-quality, or anything you like. I am quite proud of my reputation, and stand by it. It is my hope that, when this project is complete, I will be sending YOUR contact information to the next person for referral. :)
Again, if you have any specific concerns, or are unhappy with my work IN ANY WAY, please let me know.