I had an interesting question from a client recently about why should they pay my full rate (I charge hourly) for bug-fixes when they are my mistakes?
Here is my response where I argue that bugfixing is an integral part of software development:
Every software project is going to involve a degree of research and experimentation. We are bringing together a complex set of tools in a potentially infinite number of ways. We are designing and building a bespoke, custom product because an off the shelf solution does not already exist. Bugs (the software acting in an unexpected way) are an inevitable part of this process. The industry uses a R&D or “agile” approach to overcome this. For example I develop in small chunks, working with complete transparency through my journal and timesheet. Hopefully generating the trust that I have the skills to do the job and create something worth investing in.
So looking at our last couple of bugs:
- [Redacted – examples of the types of bugs described below]
Looking through our bugs (the ones with a red label) I can not see any that are due to “mistakes” (what I would call a coding error) made in the code.
So amongst other things bugs can be due to:
- Coding error – This is what could be construed as a developer’s “mistake”, an error in the way the coding language is used or simply making a typo.
- Limitations on what the technology will let you do – Google Apps imposes various quotas on things like execution time
- How the technology is going to react in certain situations – the documentation may not describe our particular scenario and we have to try it out before we see how it actually works
- New features breaking an existing one – In a complex system a change in one area may have unpredictable effects elsewhere
- User Error – Making the code robust enough to cope with every user input has to be balanced against the time this would take, and if it would actually be possible. So the code may receive input that isn’t expected and act in an unwanted way.
I hope this helps explain how bug-fixing is an integral, equally valuable part of software development, along with designing, coding, testing etc.
Other things to keep in mind are:
- Quantifying the savings – compare the actual cost savings the automation continuously generates through reduced admin man-hours, against your investment in software development.
- Productising – there are a lot of industries that could find something like [Redacted] useful, so it could also be worth exploring productising it.