- Business Analyst
Typically the first person to get to know the change in business requirement, gather them and document it completely and they will be the point of contact of any questions/clarifications in the requirements document.
This person will take the business requirement and create a high level technical design document and will start coding using his favourite tool (.net) :). They should be responsible for ensuring that all the aspects of the service like scalability/reliability/extensibility of the code has been taken care of.
QA is a person who should create the test cases based on "Requirements Document" and should never interact with the developer for any questions/clarifications. They are in charge of making sure the final code that gets released is error free (typically through black box testing).
Alrite... I hope all of us are in the same page with regards to the functionality of these resources. Now let's take the scenario after this code has been rolled into production. I am sure any code that gets released will have bugs in them who takes the responsibility for the bugs. This is my idea on who should be responsible for the bug.
- Functionality missing
Has this been documented in Business Requirements ? If so, where there test cases created by QA to cover this ? In case the functionality has not been documented the blame should go to the business analyst and in case there were no test case the blame should go to the QA.
- Scalability/Reliability Issue
The Developer should be solely responsible for such issues. These things are difficult to test by QA and the design should have addressed these issues.
- Functionality not working as per requirements document
When a clearly documented functionality is not working, the blame should go entirely on the QA for not testing it appropriately.
But I don't see this process happening in many places, the developer is the first and only person to be caught for any bugs being reported and he is instructed to fix those issues within the next business day. Being a developer and hearing the same from friends working in startup companies, I am tired of working in such environment. I hope this trend will change in future and the appropriate resources will be pointed for their mistakes.