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 greater volume and 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, the idea of agility has been around, and applied to, CM practices for years. As I hear people talk about continuous integration and builds in an Agile context, it only reminds me that some other CM professionals, as well as myself, 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 has 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’s important for both Agile professionals and CM professionals to understand the mindsets of each. Let’s take a look at both. While this is not meant to be an extensive list of viewpoints of each, it can provide insight into each with the hopes of both Agile and CM professionals understanding each other and working effectively together.
Agile Mindset
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. 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 incremental and iterative approach. In effective, traditional methodologies look for a fairly fixed and prescriptive path while in Agile the path is allowed to vary, a world where collaboration, change, and sharing rule. The following are some viewpoints of the Agile mindset.
· Think small: Agile thinking focuses you on short iterations, small increments, and bite-size tasks (story tasks or backlog items). Work chunks should fit within an iteration. These time-box activities ensure continuous progress. Also think small or minimal documentation. Agile does not prescribe a certain length to any documents but it clearly advocates that you focus on working software over comprehensive documentation. The key here is to document what you think may help with collaboration or communication, but it should not be a form of a contract that specifies each item. Instead spend that time building the iterative chunks of functionality and then allowing the customer to respond to it.
· Think business value: Agile actively encourages the discovery of business value, because the conclusion of each short iteration is reviewed by the customer, the project stays very close to what the customer finds valuable. In traditional methods, project timelines are typically very long (many months to even well over a year). The customer is typically engaged in the beginning (requirements) and then toward the end (user testing). During the time in between, the customer needs often change and these changes leading to a product that is less than ideal and where some of the functionality is unused. Agile helps you strive for a continuous reflection of business value all along the project lifecycle. This ensures that once the project is delivered, the customers find the deliverable valuable and ready to use.
· Think continuous: A word you find in the agile space again and again is “continuous”. Dictionary.com defines continuous as being in immediate connection. In traditional methods, the world is well planned with very specific milestones and changes are constrained after a certain point. Agile thinking includes a world that is much more fluid, changes are dynamic and in fact excepted. It is a world where there is continuous building of business value and continuous improvement.
· Think self-empowered team: By thinking as a self-empowered team, it means that you move away from the command-and-control structure where one person is telling the team what to do and move into a self-directing structure where everyone participates in decisions and the direction of the project. Broadening the base of empowerment and pushing down the level of approval and decisions to the lowest possible level, i.e., reducing the need for numerous chains of approvals and decisions, can be a big change for most organization but results in decision-making where the most details and information live.
Configuration Management Mindset
The CM mindset focuses on the CM values. CM professionals typically have a need to ensure integrity of a product, by providing control mechanism for change and the need to have tasks that complete. CM professionals focus on both the project and product level. The project level focus is to ensure there are enough controls to help the project stay on track and get released. The product level focus is to ensure there is integrity from one project to the next and on the multiple baselines that need support (e.g., current, new, bug fix). Because CM focuses on the product level, this becomes a good place to examine improvements over time. The following are several viewpoints that illustrate the mind of a CM professional:
· Think modular: CM thinking focuses on modularity and in small building blocks. This makes it easier to group and configure items into building blocks are uniquely defined. Thinking in a modular manner also makes it easier to construct and deconstruct a process, particularly when CM professionals are often asked to automate processes so they understand the checkpoints along the way as they script and code. Applying modular concepts helps with branching where different codelines of development can be separated and merged as needed.
· Think integrity: CM professionals tend to believe strongly in integrity. This includes both personal integrity in the manner in which CM professionals work and integrity in the product development they are supporting. Personal integrity implies that CM professionals believe strongly in doing the work the right way and feel accountable to ensure correctness and completion of the task. Integrity in the product implies that CM professionals feel strongly in having working processes that have the ability to control changes to the product and have the ability to verify the baseline of code in which they are working.
· Think “get it done”: CM professionals have a strong tendency to want to get the job done. In a 2007 study of Myers-Briggs Types Relative to CM Professionals, a surprising 79% of the CM Professionals surveyed exhibited a leaning toward a “Judging” preference. This preference indicates a willingness to make decisions, a need to complete tasks, and implies a need to establish a level of structure. This may stem from the multitasking environment most CM professionals work where the completion of a task allows more of a focus on additional tasks. This 2007 study supports the similar study done in 2003 where 76% were scored a judging preference (e.g., a need to complete tasks).
· Think improvement: CM professionals have a strong tendency to want to improve. They are always looking for ways to automate manual processes for both to ensure integrity and to simply find better ways of doing things. They tend to be forward thinking from the point that they are motivated by perceived improvements in the future and less focused on the existing conditions today. There is always a better way. CM professionals only consider improvements that do not impact integrity of the product and the CM processes that supports the building and delivery of a product release.
Summary
A couple of key viewpoints from both the CM and Agile mindsets are related. Agile professionals believe that small and CM professionals think modular, which are both similar concepts. Agile asks that you think in smaller units so that you can continually build and inspect the increment for value; CM asks that you think modular so that pieces can be more efficiently and effectively managed and built. Agile professionals think continuous and CM professionals think improvement. There is an element of continuous process improvement in both. Each mindset also brings unique and valuable viewpoints of their own like focusing on business value (Agile) and ensuring integrity (CM).
Both Agile professionals and CM professionals should learn enough about each other’s mindset in order to understand each other’s perspective to comprehend what it means to adapt CM to align with the values of Agile. While both speed (for Agile) and control (for CM) are important, it is ultimately driven by the ability to quickly get value to the customer while maintaining the integrity of the deliverable so that the customer can have confidence in what they are receiving. Understanding the mindset of each will help provide you with an Agile and CM one-two punch for a very powerful combination!
References
1. Adapting Configuration Management for Agile Teams, by Mario Moreira, Wiley Publishing, 2010.
2. Study of Myers-Briggs Types Relative to CM Professionals (2007), by Mario Moreira, CM Journal, September 2007
3. Study of Myers-Briggs Types Relative to CM Professionals (2003), by Mario Moreira, CM Journal, July 2003