The CTO of a Fortune 100 company leans back in his chair and asks, “Aaron, can we meet the Quality Assurance team that will be working on our project?”
Let’s pause for just a moment in this story to give a little background: Many people don’t realize that most of Big Nerd Ranch’s revenue comes from our development services. We are famous for our books and training, but most of the salaries around here are paid for by writing apps for other companies.
And we write really good software. We do continuous integration and automated testing throughout the process. We are embarrassed when the client finds a bug that we don’t know about.
But we don’t do QA on our clients’ projects. That is the client’s job.
If you hire us to write some code for you, and then you ask me, “Is the quality of what I just paid for good?” then I’m going to tell you, “Of course! You got a great deal on this flawless software. Nice doing business with you.”
If you’ve spent a lot of money on a piece of software, you should independently verify that it does its job and has acceptable performance. We are a company that prides itself on integrity, but to trust us on this without verifying is irresponsible.
This is the more important point: The person who comes up with the requirements for the software is the same person who should be responsible for making sure that the software fulfills those requirements. Both processes require a deep understanding of how the software is going to be used, and you will never be able to transfer all that knowledge to another person in another city who does not work for the same company.
At Big Nerd Ranch, we follow a modified agile approach to project management:
If you truly take ownership of your software project, you will script a test plan for every story you create and execute that test plan when the developer claims the story is complete. Before shipping the app, you will run all the test plans again to make sure there have been no regressions. That is your job.
Let’s finish the story: The CTO of a Fortune 100 company leans back in his chair and asks, “Aaron, can we meet the QA team that will be working on our project?”
I think, “Screw you! QA is your job, you lazy slob.” But what comes out is, “The price and schedule that we quoted you does not include QA. We are assuming that your team will be doing requirements gathering and testing the builds we send you against those requirements.”
And he says, “How much more would it cost to have you do the QA, too?”
And I say, “Your soul.”