What do you think about charging developers a monetary fee for bugs in a company?
In a word, no.
Would you charge people in other fields for making mistakes in their work?
Can they charge you a fee back for each one they fix? What if the bug is because you did something stupid?
That opens a whole can of worms which should be sealed shut…
As most developers know, fixing one bug can just as easily create another or more! As Dave rightly said - where would the liability for these, newly discover/created, bugs lie?
I can guarantee that my developers can build with virtually no bugs.
The project will cost $65,000 without bugs. Or $5,000 with.
No, that might give developers the idea to knowingly introduce bugs so can charge the client to fix them later.
Only if the developers get to charge the same amount for every answer they provide to questions that they get asked.
“So what are our options? Would A or B work better? Can you do XYZ? Are you done yet?”
Just for clarification, who’s charging whom for what?
Would the developer be charging the client for fixing a bug in work that was done previously?
Or, would a client get a refund from the developer for a bug in work that was done previously, then fix it?
Or, would the developer just fix the bug at no charge in work that was done previously?
Well lets see here.
In a time and material arrangement, so to speak, you the client, are agreeing to pay for the time, resources and materials that are required to ensure completion of your project. In this model, it’s somewhat moot to discuss where the original of the defect lies unless the project is outside of its scope or estimated duration and the contract under which the consultant and client are engaged has specific quality metrics that have not been meet and the contract outlines penalities on the consulting party.
In a fixed bid project, the consulting party agrees to complete the project within a certain duration/cost and as such absorbs the cost of fixing any defects that fall within the scope of the effort.
That aside, it’s important to realize that defects can originate as the result of many different kinds of mistakes:
- Requirements gaps or errors
- Poorly managed change control
- Innapropriate design or architecture choices
- Misunderstandings of the requirements or design
- Technology limitations or constraints
- Skill of the project team members
- and others…
Many of these causes are not under the control of the consulting party, and as such it would seem unreasonable to place all of the responsibility to redress defects arising from these issues on the developer. So it would seem unreasonable to charge for bugs.
Good answer that I came across on SO that might help you out.
edit: I accidentally voted on the “Yes, this is reasonable” please ignore that one vote and assume that I voted for the other party.
Probably the single worst idea I’ve ever seen. Bugs are an inevitable outcome of complexity and unless your project is simple with very few requirements, the potential for errors to occur is almost to the point of a certainty. Even if you exclude the points that Joe has provided above, it’s an impossible ask to determine that every conceivable and inconceivable outcome of every potential method of interaction can be accounted for. Every computer system and environment is to a certain extent different, and thereby if the developers have little control over how the project will be used in the final outcome, you can only “stress test” on the basis of what potentially may affect the running of your system. As such, blaming a developer for you finding a bug due to using the project outside what is considered reasonable use (as per the predictability) is like Insurance companies refusing to pay people money because they didn’t declare that their house might be nuked due to a volcanic eruption (even though they didn’t have the knowledge to consider that a particular risk). Any software developer worth their salt will tell you that bugs are inevitable, and usually they’ll fix them (within reason) without too much hassle - but penalising them for not being able to predict the future is downright insulting.
Here’s what I think: if developers are in a rush-to-get-things-out atmosphere and are not going to be given a lot of time to test, then it is NOT fair to hold them accountable for their bugs.
And what about rewards? Do I get rewarded when I have less bugs?
That’s a though one. Do you have less bugs, or are they harder to find than the bugs of other programmers?
This reminds of what a professor of mine once said:
We cannot prove, about any program, that it will run indefinitely, since we don’t have an infinity of time to observe it.
I don’t agree with your analysis, though.
If you are paying time and materials (materials?) then you are paying for all the time that the developers need to finish the job, including bugs.
If you are paying a fixed-big, you are paying for all the estimated time that the developers need to finish the job, including bugs. Estimates vary, but an experienced vendor will estimate very high so that they are covered if things don’t go well.
Only amateurs ‘absorb’ the cost of bug fixes, etc. It should be priced in.
Now, something I did not make clear: I work for a development company, and we make a centralized web app. My original question was more about the company charging its internal developers for their bugs.
The answers given still pretty well apply, but I thought I should mention this.
The answers should still apply. Because what happens if the specs the developer based the work off of were poor/incomplete? Does the analyst get charged for poor spec work? What if the developer trips upon a rare browser bug (I’ve done it - it sucks trying to figure it out)? What if there’s a new development methodology/language being transitioned to?
Quality of work should be accounted for in annual performance reviews/promotion opportunities. But it should never be the sole basis for them…