Some of my best friends are testers but ...
Once upon a time I used to be a very good programmer (this was before programmers got all upity and became known as developers) then I left university and got a job working on code older and uglier than I was. It's hard to be a very good programmer under those circumstances.
The second program I released into product bombed - but not very badly since they didn't let newbies work on important stuff. The program did something with travellers cheques and my job was to put in some simple exception handling which put out useful error messages when things were a bit wonky with the input file. I did this without hassle, tested it thoroughly for every possible problem that I could think of and it worked well, then I put it into production and it bombed. I'd forgotten to test that it still worked when there weren't any problems. It didn't. I was mortified and I spent the next day apologising to everyone I could for my sloppy work. I'm sure, in retrospect, that they were all smiling at the humbling of the fancy-arsed graduate.
As far as I know I only every put 1 more bug into production in the 7 or 8 years I worked as a professional programmer. There may have been more but I don't think so.
It was the same with my colleagues.
There were three reasons for this ...
- We didn't have any testers to catch our mistakes
- Our mistakes could potentially cost brazillians of dollars (I worked for a bank) and we'd know about it very, very quickly.
- We were never, never, never - not once - put under pressure to sacrifice quality in order to deliver quickly. (The bosses wouldn't let us - see point 2, they suffered the consequences of bad code much more than we did).
Oh, and a 4th reason: we would have been personally mortified if a bug escaped into production. Our professional pride was at stake.
That was a maintenance environment. Maintenance programmers - and their managers - were (and still are I think) regarded as a lesser breed of programmer. It is the same with maintenance managers too (I think).
There's a huge amount that development managers (i.e. those that work on bigger projects) could learn from the way good maintenance teams work. The first would be to break down their work into smaller chunks ...