We came. We saw. We did a little testing.

Another week another release. Well, almost. The plan was to release today. The plan ignored the fact that most of the team are at a wedding this weekend and nobody was around today and nobody’s around on Monday…

The latest release included some new functionality and a lot of refactoring. Given the amount of code that had been ’touched’ I recommended a longer test phase than we usually planned, i.e. more than 1 day. I was told that we didn’t need more than a day of testing and that we probably wouldn’t actually do more than a day even if we allowed more time. I explained that it wasn’t the testing we needed extra time for; it was the fixing and retesting… No joy.

We came. We saw. We did a little testing.

We found a few bugs. Not that many, given the amount of code change and the lack of unit tests. Fixing, retagging, rebuilding from CVS and retesting took time. Rinse. Repeat.

Today we decided to defer the release until Tuesday. I expect we could have gone with the code we ended up with at close of play today. I advised another day’s testing; we decided that was best…

I think an aborted release is a good thing. You don’t need to do it all the time. But you need to be able to do it if you have to. The first is probably the hardest. Let people down. Realise that they don’t kill you. Move on. The release on Tuesday will be solid, we have a couple more days to test the actual release process. A release today would have exposed the team to the risk of a failed release and all of the negative feelings that carries with it.

The whole process of deciding we’re releasing. Creating a branch. Building and testing that branch. Fixing it. Continuing to work on new stuff on the main branch. Testing and fixing and retagging the release. Taking the final cut. Merging the ongoing work with the fixes. It was all a useful exercise. It’s all stuff that’s hard to organise. People make mistakes because they’re not used to working on the release branch to fix bugs in the release. They’re not used to branches. They don’t really understand why we’re using a source control system at all… So we do it. We screw up. We screwed up lots in the last couple of days. We fixed it.

I wrote tests to fix bugs. We have more test coverage. I didn’t actually write the tests before fixing the bugs - we were too rushed ;) But I did write the tests before I merged the fixes into the main branch. That’s good enough in my book. We have more tests. They test things that were broken. We’re safer for next time…

We got ready for a release and then we didn’t do it. That’s good. When we do do it I expect it will pretty much work…