How do you go about doing a daily build and striving for a zero-defect environment? Does it mean I never get to go home until I’ve killed all the bugs in my new code? Or does it mean I just don’t check my code back in until I’ve fully tested it, which leaves the code effectively branched for a much longer time?
I’m working with a handful of programmers for the first time (as opposed to working on my own, or with just one other coder), so I’m just wrestling with decisions like this for the first time. Should we adopt a software development process?
Yes, please adopt a software development process. There are a variety out there, of which I’m sure more than one will fit your team. Even one that isn’t a perfect match is much better than no process at all.
So how does my company go about having daily builds and striving for zero-defects? We run our test suite before we check in our code. The unique problem for us is that a full run of our test suite takes over 72 hours, so we run a limited set of unit tests before checking in code. For our nightly builds, we run a set of tests that take about 8 hours to run. Then on the weekends we run the full test suite. Each stage catches more and more problems, but over 90% are caught with the 5-minute developer tests and probably over 98% with the nightly tests. This still alerts us pretty early to problems before they get out to our customers and cost a lot to fix.