tags:

views:

329

answers:

8

I work for a small software company with less than 10 programmers. Our software is installed in dozens of places across the world. Our code base is huge, due mostly to poor design and massive amounts of duplication of code (IMO). We have roughly 30 different projects, each with a total of about 600 KLOC with about 200 KLOC of that being our own homegrown code. When I got there in 2006, this code wasn't even under revision control. I've managed to convince powers that its important, and we now use a code control system (cs-rcs, not my choice but its better than nothin), and a bug tracking system. The huge missing piece is the total and complete lack of QA in the process. Our release process is non existant on paper, and in practice it consists of "hit ctrl-F9, copy binary to client, declare problem fixed."

Can anyone point me to some official papers or PHB-language documents or articles that can explain the blatant lunacy in this process? I'm sure the boss could hire some consultant to tell him this, and then he might believe it. But I'm just a lowly maintainer with a Software Engineering BS degree. And my ethnicity doesn't help me either. What's the best ammunition to use in this case?

A: 

Perhaps if you get some of your programmer colleagues to back you up, management will be a bit more willing to listen. You don't need to be a genius to realise that a huge, unwieldy code base is indicative of much room for improvement.

Artelius
With respect, this will never work. Programmers and testers are born enemies. None of the programmers are going to volunteer to have their "pet" projects scrutinized by some minimum-wage QA punk. The tester's job is to find fault with the programmer.
David Dombrowsky
The attitude that programmers and testers are born enemies is counter-productive. There should be healthy conflict, but not animosity. There is a huge difference between a true QA person (i.e. one who understands the domain and software) vs. a tester. Good QA people do *not* work for minimum wage. They also have a good rapport with development. Each side needs to understand the other and know that they are on the same team. Having been both in Dev and QA I have never had a problem with animosity between groups.
ssakl
+4  A: 

Your best ammunition in this case is to wait for the inevitable disaster. Once it happens, have all your ducks in a row with a plan that will cause this disaster to never occur again, one that stresses the costs of implementation being far lower than the disaster itself cost.

No amount of talk will make PHBs "get it" if they don't want "it" in the first place. Only a big slap in the face from that harsh master -- reality -- will persuade them in the end.

Oh, and while you're at it, update your resume and get looking. The disasters that tend to convince people they need QA are very similar to the kinds of disasters that kill companies.

Oh, there /has/ been disaster. We've lost one $100k client this year that I know about, due to customer dissatisfaction. I've submitted plans, processes, release guidelines, and an entire wiki full of data to suggest the fix. All of which is useless without QA.
David Dombrowsky
A: 

Refer Joel's book

MOZILLA
What specific section in that book?
David
A: 

If your management doesn't think QA is important, something so obvious and "common sense" to the point that any layman would agree with, then I don't think putting a bunch of academic papers, or anything else for that matter, to them will make any difference.

Your only hope is probably to try to put together a document which would show the cost savings, but I doubt that would help in this case.

BobbyShaftoe
And what might the columns be in this spreadsheet? The company has no current metric to neatly quantify support costs. Should I simply go by calls-per-day?
David Dombrowsky
+2  A: 
Dror
+1  A: 

Management isn't going to understand anything but two things: (1) Cost benefit & (2) Customer satisfaction. The 2nd one is hard to quantify but the first one is easy. You can spend $40k to $60k on a decent QA engineer who can come in and start making sense of the mess and start developing a plan around it. The cost benefit comes from making sure that a higher skilled engineer doesn't have to go spend 2 months tracking down a bug hidden in 100k lines of code.

There's another way to go about this... You can do what we are doing where I work. Start writing tests for the code at the beginning and then by the time you are done with the code if the test passes then you are golden. After the test passes then you have a test in place that will make sure if you ever break that code that you will know about it almost instantly. And if you get your fellow programmers to get in on that action then at least all the new code will be developed under a testing framework. Test driven development not only makes the process go faster (you already know what you want the result to be before you start coding) but it also helps refine your requirements in a hurry. Most importantly, with a little social engineering (working with your peers) you can change the development culture bit by bit until the process is complete.

thaBadDawg
+2  A: 

Tautologically, the only way to convince them is put them in front of something that is convincing. That thing could be drawn from a list such as:

  • The foretold expensive disaster that prompts adoption of the previously-presented solution
  • The unforetold disaster with a ready-made never-again solution
  • A brilliantly persuasive foretelling of a disaster
  • A brilliantly persuasive appeal to greed (saving the opportunity cost of a foretold disaster)

Or something else. In all these cases, someone is going to have to make the case at some point for the QA solution you propose, and that someone, from the looks of it, is going to have to be you. So I'd start learning about being persuasive.

How to Win Friends and Influence People shoujld cost you a few bucks at most. Getting To Yes is also cheap.

How did you get agreement to source control? Can you keep chipping away, improving the process a small increment at a time?

Try Googling "change your organization", there looked to be some promising links.

And ultimately, remember that (as a wise man once said) if you can't change your organization then you should change your organization. There really is always an alternative.

Mike Woodhouse
+1  A: 

I can recommend The Toyota Way. The short version is often possible to order for free from toyota web sites. Management should have read it already, but apparently they haven't. Read it, digest it, make management read it. For inspiration I can truly recommend reading Lessons from Toyota's Long Drive (it's well worth the few bucks to get the PDF).

PEZ
Management tends not to trust books. Books aren't from the gut, you see, so it's only "book learning". I've spent (read: wasted) many hundreds of hours using books and papers to try and convince managers of things. I have never been successful at it. "It's book knowledge" is the constant refrain.
Sounds like a lost case. But the Toyota Way is special. It outlines the principles which have guided the worlds best car maker for 70 years. It's sound to try to learn from the best.
PEZ