This a little tale about some code which didn’t exercise in order to work on the really important.
A couple of months ago our project entered in total-madness mode. We were weeks away from the release and some bugs were still pending – a few critical. So, the management solution was dictated: All of the resources (meaning the members of the development team) will work as long as 24 hours per day if necessary until the bugs list is reduced to zero.
This situation led to people trying to solve as many issues per day as possible. In this noble task of course unit test got in our way taking up to five seconds in running, but that wasn’t the worst of it, they sometimes failed! So facing such an uncooperative response from the unit tests, they were simply ignored and skipped. This caused the CI server to constantly whine by mail about unstable builds and not seldom even broken builds.
This situation went on for a week or so and more bugs started to show up, PMD and Findbugs reports started to rise and people couldn’t commit often because the code base was not to be trust anymore. WTF/minute rate was sky-high and all the effort was becoming counter productive. So, we realized the release was not going to be bug’s free because time was not enough to fix them all and that we needed to cool down our pace. We still worked many hours, but those hours went back to productive.
First thing we did, when thinking again, was to put those unit test back to operative. That, just that, fixed 25% of the current list of bugs which was huge move toward the goal. After that, new fixed bugs produced almost boomerang-free releases to QA. The release went live washed out of all the critical bugs on the application, the core module was released with zero known-bugs, and the total pending bugs was reduced to the 40% of the original list.
The release didn’t include a dream-like artifact, some even considered the project had failed, but a very decent one. It accomplishes its raison d’être very well and performs under the processing time restrictions. All thanks to working out our code regularly.