Consider this hypothetical situation.
Something very precious was in a building. Building was being guarded by a guard who was responsible for the safety of precious item. A thief using his intelligence and luck stole that precious item from building. At a later stage, thief was caught but he claims that only security guard can be prosecuted for theft, in fact he demands that his act should be rewarded as a skill.
What is your first reaction? Impressed with thief’s arguments? Feeling angry with security guard? Or laughing on the irony? It can be anything, but I am going to ask a fundamental question, should we stop prosecuting thief for theft?
In my view, a thief is still a thief, no matter who was ultimate responsible person in this case.
Now, let’s apply this situational story on software development. An error ( I am not using the word ‘Bug’ intentionally) was found in software or website, who will be held responsible?
In my view, as far as responsibility is concerned, it lies with QA team, but development team is still responsible and can’t be absolve of that error.
Before we continue, lets me clarify my definition of error and bug in context of this article. A bug is an un-intentional behavior of application while an error is simply a failure of one feature. For example, broken login form is an error, but slowness of login system or successful login without correct details is a bug.
IN any software development process, basic testing of functionality has to be done by development team only. Even in our constitutional and parliamentarian laws, we have a term ‘merchantability’ … which gives an implied warranty in any purchase of product or service we bought from seller. So basic ‘merchantability’ has to be incorporated in any product or service. A pencil doesn’t need a documentation or purpose statement. Pencil is always expected to write on a paper.
Lets be more specific, suppose there are two buttons on a page, which supposed to do some specific task when user click on them. Those buttons don’t work and even cause a crash in application. Unfortunately, It went through to production.
Who is responsible? As I said, responsibility still lies with QA(Quality Assurance) team, but we cannot release development team from responsibility as they fail to test buttons for merchantability.
In my view, if we only held QA responsible for this situation, development team will be relaxed (… and lax) in their work as they know they do not own any responsibility in trials.
A thief is still a thief… A guard deserves his share of punishment and prosecution, but thieves still deserve to be punished, so they have some fear. Imagine a situation where thief will never be prosecuted because a security person has failed in securing valuables.
A clear line has to be created between errors and bugs, for any ‘error’ in merchantability, development team must be primary responsible party while bug falls under QA team