Software Development as Exercise

For the past week my team has been in the “cool down” phase of a release. The “cool down” analogy comes from physical exercise, but it is equally applicable to the mental strain of getting a product ready for delivery to production. The last couple of months of a product release are invariably very busy as we process the bugs found by our Quality Assurance team and Beta testers. Working on these very detailed bug fixes or micro-features is very mentally demanding, so once the code is stabilized we have a one week period during which team members can work on anything of interest. It’s a very stimulating and productive time, as developers get to zoom out and see the big picture again, and explore synergies with technologies outside business rules.
Most of the developers take the chance to dive into a new technology, such as learning some Ruby or the Google Web Toolkit for example. On my team we’ve been looking at EHCache for performance optimizations, studying some of the scalability patterns in the Eclipse JDT and building a batch-processing prototype using Apache Hadoop.
Of course, after the “cool down” comes the “warm-up” for the next release — which for us is planning user stories and working on high-level architecture and specifications. These occur during our inception/elaboration iterations before we get into the main construction phase of a release.
Do you have an equivalent to ILOG’s “cool down” period? How do you balance individual professional development or technical research with ongoing product development?






