Archive for April, 2010

Adapting Configuration Management for Agile Teams

April 7th, 2010 by AccuRev

Author Mario Moreira released his newest book, “Adapting Configuration Management for Agile Teams: Building Sustainability and Speed.”  Mario discusses the various approaches of adapting Configuration Management in order to benefit Agile teams and provides readers with insightful Configuration Management and Agile information in bite sized chunks that are easy to digest and encourage reading on.Adapting Configuration Management for Agile Teams

Attend AccuRev and Mario’s Webinar, “Adapting Configuration Management for Agile Teams” April 15th for a chance to win one of 3 copies of his book!

Continuous Integration vs. Continuous Perfection (part 2)

April 6th, 2010 by clucca

Integrate early and often, it’s a software configuration management mantra that we’ve been repeating for years. Integrate early and often is continuous integration. Every source control tool promotes this concept; you can read about it in the SVN book to the ClearCase manual. It’s been preached as a SCM standard for almost as long as we can remember.  In the case of Continuous Perfection we gave up our “integrate early and often” principles, so how can we solve this problem?

Flexible Agile Tools to the Rescue

We can preach “integrate early and often” all we want. But if our tools don’t help us achieve that goal, it can be an exercise in futility. The problem with traditional SCM systems is even though they tell us to “integrate” the only thing they seem to do well is “isolate.”  Think about the branches in your environment; they are static representations of a point in time in your development cycle.  How do you know when it’s time to merge changes from the other branches? How do your developers know when it’s time to pull in changes to their local workspaces?

Automatic inheritance is a way to keep your developers connected with the rest of the organization. It gives them the ability to automatically pull in changes as needed.  It also connects entire development teams. (See “Understanding Stream Inheritance”)

The second problem is that when the build is broken, there is no easy way to recover. Asking an entire development organization to roll back the codebase to an older version could take a day. Having an SCM tool that allows you to move the milestone in which your branch is based off of is a powerful way to get around this.

Tying into this is your build management solution. Free continuous integration servers are great at building and spitting out the results. But with every build that’s produced, there are a set of actions that need to take place. Being able to dynamically roll out code based on test and build results allows your QA teams to keep working even when code has been integrated poorly.

Create a Culture of Integration

This is the most important aspect, creating an “integration” culture in your development team. Often merging code is an overlooked and under rewarded task. Developers must deal with the merges, but often don’t get credit for doing so. Sometimes a difficult code integration takes a few hours, and developers may feel that this is eating into their valuable time.

Incorporating continuous code integration into your daily lives can help this. This might mean that you have Tasks that are assigned to your User Stories that deal with code integration. Or this might mean doing a code / review / integration session with your team. Engaging our team mates and making sure that the work that’s being done for these code integrations is rewarded and recognized goes a long way in relieving the frustration of a bad code merge and ultimately saving you from Continuous Perfection.