Applying Agile methodologies and practices effectively requires a mindset shift. Some people gravitate to it because it seems the natural thing to do while others struggle. Having an Agile mindset is even more important when you have to support teams that have implemented or are planning to implement Agile. And these days, Agile methodology usage continues to grow more and more in the software development industry.
With the advent of Agile in the mainstream, it raises awareness of the challenges in getting CM functionality established that suits the working processes of Agile methods. While not necessarily new to some CM professionals, the primary challenge is how to adapt CM practices in a tangible way that supports Agile values while not discarding the CM values that ensure integrity of the product under development.
Understand that Agile methods have a direct impact on CM actions. With Agile comes a greater volume and an increased velocity of change. This is reflected in smaller increments of work that introduce more check-out and check-in, builds, and incremental releases. These more frequent changes must be facilitated in a controlled manner to ensure integrity of changes. CM brings order and control to the world of Agile, an order that can be counted on, repeated with integrity so that Agile professionals can focus on the high value tasks of building and delivering functionality for the customer. The key is finding the balance that allows you to stay on the track while maintaining a higher velocity and volume of change.
For some CM professionals, notions of agility have been around and applied into CM practices for years. As I hear people talk about continuous integration and builds in an Agile context, it only reminds me that I and some other CM professionals have established build processes that support frequent builds or on-demand builds much like continuous integration, but in this case in the early 1990s. After all, CM is an enabler for change and can be adapted to the context and method it works in. CM professionals may have been working in more traditional methods, but it never stopped us from streamlining and automating build processes or introducing ways to make change easier. The more you automate and stream-line, the more work that can be done and the more time we have to focus on new value-added work. From the perspective of the CM professional, bringing value to our customer is important. In all cases, CM professionals should engage with their customer which in this case is the Agile team to understand their needs, understand the technologies they use and the methods and practices they follow. I have found this an effective way to gain CM adoption and build a strong relationship with Agile teams.
To this end, it is important for both Agile professionals and CM professionals to understand the mindsets of each. Let us take a look at both an Agile mindset and a CM Mindset. While this is not meant to be an extensive list of viewpoints of each mindset, it will provide an insight into each with the hopes of both Agile and CM professionals understanding each other and working effectively together.
Agile thinkers bring a different frame of mind to their work. In the traditional methodologies, the world is rigidly planned with very specific milestones, changes are typically constrained, and there is less of a sense of ownership. In Agile methodologies, the world is much more fluid, changes are dynamic, and there is more self-empowerment and ownership. Traditional methodologies use more of a phased-based approach while Agile methodologies use more or an